从多线程c++应用程序调用GPU内核
Calls to GPU kernel from a multithreaded C++ application?
我正在使用pthreads重新实现一个多线程c++图像处理库的某些部分。我希望能够在每个线程中调用CUDA内核,并信任设备本身来处理内核调度,但我知道最好不要指望这种行为。有人遇到过这类问题吗?
CUDA 4.0使得从多个线程驱动单个CUDA上下文变得更加简单-只需调用cudaSetDevice()来指定您希望线程提交命令的CUDA设备。
请注意,这可能比从单个线程驱动CUDA上下文效率低-除非CPU线程在内核启动之间有其他工作要占用它们,否则它们可能会被CUDA内部使用的互斥体序列化,以保持其数据结构的一致性。
也许Cuda流可以解决你的问题。尝试从每个线程中的不同流调用内核。然而,我看不出这有什么帮助,因为我认为内核执行将被序列化,即使它们是并行调用的。实际上,即使在同一流上,Cuda内核调用本质上也是异步的,因此您可以从同一线程中进行任意数量的调用。我真不明白你到底想达到什么目的。
相关文章:
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- CUDA内核和数学函数的显式命名空间
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- C++内核出现Jupyter笔记本错误
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 内存围栏是否涉及内核
- OpenCL 在 NVIDIA 和 Intel GPU 上启动内核时CL_INVALID_COMMAND_QUEUE
- 我可以为nVIDIA GPU编写OpenCL-C++内核吗
- 张量流错误:执行器无法创建内核。没有注册'Snapshot' 适用于 GPU 设备的 OpKernel 运行图像标签示例
- 为什么 Tensorflow 找不到我的自定义操作的 GPU 内核?
- 如何在多个 GPU 上同时执行 cufftXt 和 CUDA 内核
- 将结构的动态阵列传递给GPU内核
- 调用GPU内核后,CPU性能下降
- 如何设置专用 GPU 以便对 CUDA 内核进行基准测试
- 如何将字符串传递到GPU,并从内核获取字符串以显示它?(C++OpenCL)
- 从多线程c++应用程序调用GPU内核
- 是否有可能同时在GPU上运行2个内核,并相互通信?
- 如何在Cudafy GPU内核中声明固定大小的数组