我正在使用 pthreads 重新实现图像处理库的某些部分,该库是多线程 C++。我希望能够在每个线程中调用 CUDA 内核并信任设备本身来处理内核调度,但我知道最好不要依赖这种行为。有没有人遇到过此类问题?
最佳答案
CUDA 4.0 使从多个线程驱动单个 CUDA 上下文变得更加简单 - 只需调用 cudaSetDevice() 来指定您希望线程提交命令的 CUDA 设备。
请注意,这可能比从单个线程驱动 CUDA 上下文效率低 - 除非 CPU 线程在内核启动之间有其他工作来保持它们被占用,否则它们可能会被 CUDA 内部使用的互斥锁序列化保持其数据结构一致。
关于c++ - 从多线程 C++ 应用程序调用 GPU 内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8157210/