这可能是一个noob问题,但我想使用opencl来利用数十个gpu核心。几天前,当我开始用opencl搜索程序时,我对工作组,工作项,内核和opencl的逻辑感到困惑。在我处理这个工作人员之前,这是我的问题:
我可以只分配一个代码的线程,以便在单个gpu计算内核(或指定的内核)中运行,就像编写多核cpu一样吗?
答案 0 :(得分:5)
不,这不是它的工作原理。在OpenCL中,您编写了一个执行单个工作项的内核。它可能像内存副本一样简单,也可以从源图像中读取像素,将它们混合在一起,然后将像素写入输出图像。该内核在整个工作组中执行(例如,整个输出图像)。运行时会发生这种情况。它不像多线程CPU代码,每个线程执行不同的东西。这更像是拥有一个满1000名实习生的仓库。每个人都有一个唯一的员工编号,仓库中的东西都有数字,所以你可以说“看看盒子(你的号码)和(你的号码加1000)”,把你发现的东西放在一起然后放上新的部分在框中(你的号码加2000)“。你说一次在扩音器中,并且1000个部件并行构建。