我是OpenCL的新用户,请告诉我主机cpu只能用于为设备分配内存,或者我们可以将它用作openCL设备。 (因为分配完成后,主机cpu将处于空闲状态)。
答案 0 :(得分:1)
您可以将cpu用作计算设备。 Opencl甚至允许多核/处理器系统将核心分段为单独的计算单元。我喜欢使用此功能将系统上的cpu分成基于NUMA节点的组。可以将cpu划分为计算设备,这些计算设备共享相同级别的高速缓存(L1,L2,L3或L4)。
您需要一个支持它的平台,例如AMD的SDK。我知道有很多方法可以在同一台机器上安装Nvidia和AMD平台,但我自己从未这样做过。
此外,opencl事件/回调系统允许您像执行gpu内核时一样使用cpu。通过这种方式,您可以在等待gpu内核完成时在主机上使用openmp或任何其他代码。
答案 1 :(得分:0)
没有理由CPU必须闲置,但它需要一个单独的工作。一旦您向OpenCL提交了工作,您就可以:
就我个人而言,我更倾向于发现自己需要更多的第一个案例,因为它很少见,我发现自己有两个独立的任务,并且适合OpenCL风格。诀窍是保持平衡,这样你就不会等待很长时间才能完成GPU任务,或者在CPU开始其他工作时让GPU空闲。
OpenGL编码员不得不征服同样的问题。避免受到CPU或GPU的限制,并在两者之间取得平衡以获得最佳性能。