OpenCL中的处理器关联性

gpu*_*guy 3 multithreading gpgpu opencl

我们可以在OpenCl中强加procssor亲和力吗?例如,线程#1在处理器#5上执行,
线程#2在处理器#6上执行,线程#3在处理器#7上执行,依此类推?

谢谢

pru*_*nge 7

据我所知,你不能用OpenCL指定那个低级别的亲和力.但是,从OpenCL 1.2开始,通过使用clCreateSubDevices(可能在每个子设备中使用一个处理器)分区到子设备并在每个子设备上CL_DEVICE_PARTITION_BY_COUNTS, 1运行单独的内核执行,可以对关联性进行一些控制.

除了基于CPU的OpenCL实现之外,这很可能会运行得很差,我不得不质疑你为什么要做这样的事情.如果要限制OpenCL-CPU实现的CPU使用率,可以使用clCreateSubDevices分配一些计算资源.

描述从英特尔装置裂变'A PDF是在这里,它有大量的信息如何使用设备分区和clCreateSubDevices有效.

  • 能够在OpenCL中指定线程关联性并不像它看起来那么无用.在NUMA系统(例如多串口Nehalem或AMD系统)上,从一个NUMA节点到另一个节点的线程迁移几乎肯定会导致非本地内存访问,这会损害性能.它应该是一个很好的CPU OpenCL运行时来处理核心亲和力. (6认同)