当我们拥有多核CPU时,OpenCL将其视为具有多个计算单元的单个设备,并且对于每个设备我们都可以创建一些命令队列。如何将CPU作为主机,在自身上创建命令队列?我认为在这种情况下它变成多线程而不是并行计算。
答案 0 :(得分:0)
这是使用多线程的并行计算。当您使用OpenCL CPU驱动程序并将内核排入CPU设备时,驱动程序使用线程来执行内核,以便充分利用所有CPU核心(并且通常还使用SSE等向量指令来充分利用每个核心)。
答案 1 :(得分:0)
某些设备(包括大多数CPU设备)可以使用扩展名"cl_ext_device_fission"分段为子设备。当您使用设备分裂时,您仍然可以进行并行处理,因为主机线程可以在内核在某些CPU内核上运行时执行其他任务。
当不使用设备分裂时,CPU设备将在内核运行时阻止实质上阻止主机程序。即使某些opencl实现在内核执行期间是非阻塞的,对主机的性能影响也太大,无法让主机线程完成大量工作。
所以它仍然是并行计算,但我想主机应用程序的核心在内核执行期间在技术上是多线程的。