我想控制GPU内核的数量来测试加速。我怎么能在OpenCL中做到这一点?我意识到我可以控制组大小来控制同步,但我很困惑,因为组大小可能超过百,这远远大于GPU核心的数量。
答案 0 :(得分:3)
您正在寻找的是设备裂变。它是OpenCL 1.1的扩展,也是OpenCL 1.2以后的核心规范。
为了给你一个起点,你需要使用clCreateSubDevices
。例如,要限制内核仅在一个计算单元上运行,您可以这样传递properties
:
{
CL_DEVICE_PARTITION_BY_COUNTS,
1, // Use only one compute unit
CL_DEVICE_PARTITION_BY_COUNTS_LIST_END
}
这告诉驱动程序创建一个由一个计算单元组成的子设备。然后,您可以在该子设备上运行内核,该子设备将仅在一个计算单元上进行调度。