我正在多内核OpenCL实现中工作,我不确定不同的内核如何映射到计算单元中。
我所有的内核都同时执行,我认为只有执行同一内核的工作组才分配给一个计算单元。因此我推断出,对于我使用的每个不同的内核,我至少都有一个计算单元。我对吗?
我知道我可以使用clGetDeviceInfo并查看CL_DEVICE_MAX_COMPUTE_UNITS字段,但是它没有告诉我内核是如何分布的,或者我正在使用多少计算单元。
与这个问题有关,如果我不指定将与“ 属性((num_compute_units(X)))”一起使用多少个计算单元,那么 >
谢谢
答案 0 :(得分:0)
对于大多数OpenCL工作,您可以放心地忽略计算单元的数量。另外,如果您打算在不同类型的硬件上运行,则应该忽略它。对于使用共享本地内存的内核,您 需要担心最大的工作组大小,但这是另一回事。在这种情况下,您可以在计划支持的硬件上进行最少的编码,或者编写可以处理任何工作组大小的灵活内核。