限制OpenCL使用的计算单元数

限制OpenCL使用的计算单元数,opencl,core,Opencl,Core,我需要限制opencl应用程序使用的计算单元的数量。 我在一个有8个计算单元的CPU上运行它,我已经看到了CL_设备的MAX_计算单元 使用OpenCL得到的执行时间比不使用OpenCL的正常算法少8倍(大约快600倍)。我只想使用1个计算单元,因为我需要看到OpenCL优化的相同代码的真正改进 这只是为了测试,真正的应用程序将继续使用所有的计算单元 感谢您的帮助如果您正在使用CPU,为什么不尝试使用OpenCL设备裂变扩展呢 设备裂变允许您将计算机单元拆分为子设备。然后,您可以为子设备创建一个

我需要限制opencl应用程序使用的计算单元的数量。 我在一个有8个计算单元的CPU上运行它,我已经看到了CL_设备的MAX_计算单元

使用OpenCL得到的执行时间比不使用OpenCL的正常算法少8倍(大约快600倍)。我只想使用1个计算单元,因为我需要看到OpenCL优化的相同代码的真正改进

这只是为了测试,真正的应用程序将继续使用所有的计算单元


感谢您的帮助

如果您正在使用CPU,为什么不尝试使用OpenCL设备裂变扩展呢

设备裂变允许您将计算机单元拆分为子设备。然后,您可以为子设备创建一个命令队列,并仅将内核排队到CPU内核的子集

例如,您可以将8核设备划分为8个子设备,每个子设备有1核


看看AMD应用程序SDK中的设备裂变示例。

如果您使用的是CPU,为什么不尝试使用OpenCL设备裂变扩展

设备裂变允许您将计算机单元拆分为子设备。然后,您可以为子设备创建一个命令队列,并仅将内核排队到CPU内核的子集

例如,您可以将8核设备划分为8个子设备,每个子设备有1核


看看AMD应用程序SDK中的设备裂变示例。

我已经看到了,但目前我的CPU(Mac上的intel i7 920)不支持设备裂变。我也尝试过使用export CPU\u MAX\u COMPUTE\u UNITS=1,但没有效果:/那么,在OpenCL中尝试设置这一点可能不是正确的方法。你有没有研究过在操作系统中停用一些CPU内核的方法?谢谢,最后我已经直接在BIOS中禁用了超线程和所有内核。似乎单独使用一个内核的OpenCL比不使用OpenCL的相同算法要快得多。在我的情况下,大约快7倍。您可以将主进程关联更改为不使用所有内核。这对我来说很有效。我已经看到了,但目前我的CPU(Mac上的intel i7 920)不支持设备裂变。我也尝试过使用export CPU\u MAX\u COMPUTE\u UNITS=1,但没有效果:/那么,在OpenCL中尝试设置这一点可能不是正确的方法。你有没有研究过在操作系统中停用一些CPU内核的方法?谢谢,最后我已经直接在BIOS中禁用了超线程和所有内核。似乎单独使用一个内核的OpenCL比不使用OpenCL的相同算法要快得多。在我的情况下,大约快7倍。您可以将主进程关联更改为不使用所有内核。这对我有用。