【发布时间】:2012-01-26 01:41:50
【问题描述】:
我对 CUDA 中的并行性或 GPU 上的 OpenCL 代码有一般性问题。我使用 NVIDIA GTX 470。
我简要阅读了 Cuda 编程指南,但没有找到相关答案,因此在这里提问。
我有一个调用 CUDA 内核的顶级函数(对于同一个内核,我有一个 OpenCL 版本)。这个顶级函数本身在我的主函数的“for循环”中被调用了3次,用于3个不同的数据集(图像数据R、G、B) 并且实际的小码还对图像/帧中的所有像素进行了处理,因此它有 2 个“for 循环”。
我想知道这里利用了什么样的并行性——任务级并行性还是数据并行性?
所以我想了解的是,这个 CUDA 和 C 代码是否为 codelet 和顶级代码中的不同功能/功能创建多个线程并在 并行并利用任务并行性。如果是,谁创建它,因为代码中没有明确包含或链接的线程库。
或
它为不同的“for循环”迭代创建线程/任务,这些迭代是独立的,从而实现数据并行。 如果它执行这种并行性,它是否只是通过注意到不同的 for 循环迭代没有依赖关系并因此可以并行调度来利用这一点?
因为我没有看到任何特殊的编译器构造/内在函数(openMP 中的并行 for 循环)告诉编译器/调度程序并行调度此类 for 循环/函数?
任何阅读材料都会有所帮助。
【问题讨论】: