查找 GpuMat 所在的 GPU
Find which GPU a GpuMat is on
我的系统上有多个 GPU,我想找到一种简单的方法来确定cv::cuda::GpuMat
分配给哪个 GPU。例如,忽略错误:
int numDevices = cv::cuda::getCudaEnabledDeviceCount();
// Choose a random GPU
cudaSetDevice(rand()%numDevices);
cv::cuda::GpuMat foo(5, 5, CV_8UC1);
// Choose another random GPU
cudaSetDevice(rand()%numDevices);
现在,foo
生活在哪个 GPU 上?我正在使用OpenCV 3和CUDA 8,以防有特定于版本的解决方案。
我不知道
这在 OpenCV 中如何或是否工作,但可以通过 CUDA 运行时 API 查询指针,并查看它是主机还是设备指针,以及它在具有统一寻址支持的平台上与哪个设备相关联。
根据文档,您可以查询支持使用 cudaPointerGetAttributes
分配的设备内存的指针,它将报告设备编号。如果您在没有统一寻址支持的平台上工作,这将不起作用,并且如果您尝试,将报告运行时错误。
从问题中的示例出发,可以按如下方式查询foo
:
cudaPointerAttributes attrs;
cudaPointerGetAttributes(&attrs, foo.data);
std::cout << "GpuMat foo resides on GPU #" << attrs.device << 'n';
相关文章:
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 在 DirectX 11 中从 GPU 读回顶点缓冲区(并获取顶点)
- 跨平台 GPU 计算
- C++:从GPU内存(cudaMemcpy2D)获取BGR图像(cv::Mat)
- 请求最简单的 OpenMP 目标 GPU 示例
- DirectX 11 如何处理来自 GPU 上的 sharedHandle 的图像
- 编译 GPU 的张量流示例自定义操作
- 多 GPU 批处理 1D FFT:似乎只有一个 GPU 可以工作
- 如何在GPU支持下编译tflite?
- OpenCL 在 NVIDIA 和 Intel GPU 上启动内核时CL_INVALID_COMMAND_QUEUE
- OpenGL glGetUniformBlockIndex 在 nvidea GPU 上返回INVALID_INDEX
- SDL GPU 为什么将两个图像分成两个单独的循环更快?
- 使 C++ Pi 近似在 GPU Nvidia 970M CUDA 上的 Paralell 中运行
- 具有 GPU 时间表的卤化物产生黑色图像
- TensorFlow c++ SetDefaultDevice 在多 GPU 模式下
- 在C++应用程序中使用 Tensorflow:如何释放 GPU 内存
- 利用 GPU 的最佳方式
- 查找 GpuMat 所在的 GPU
- C++:升级到 GTX970 后,cv::gpu:GpuMat::upload 延迟较长