2012-05-07 2 views
3

OpenClass에 procssor affinity를 부과 할 수 있습니까? 예를 들어 스레드 # 1은 프로세서 # 5에서 실행됩니다.
스레드 # 2는 프로세서 # 6에서 실행되고 스레드 # 3은 프로세서 # 7에서 실행되는 식으로 계속 수행됩니까?OpenCL의 프로세서 선호도

감사

답변

7

당신은 내가 아는 한 오픈 CL과 그 낮은 수준의 선호도를 지정할 수 없습니다. 그러나 OpenCL 1.2부터는 clCreateSubDevices (각 하위 장치에 하나의 프로세서를 사용하고 CL_DEVICE_PARTITION_BY_COUNTS, 1을 사용)을 사용하여 하위 장치로 분할하고 각 하위 장치에서 별도의 커널을 실행함으로써 친화력을 일부 제어 할 수 있습니다.

이것은 CPU 기반 OpenCL 구현 이외의 다른 제품에서는 제대로 실행되지 않을 가능성이 높습니다. 왜 그런 일을하고 싶은지 질문해야합니다. OpenCL-CPU 구현에 대한 CPU 사용을 제한하려면 clCreateSubDevices을 사용하여 일부 컴퓨팅 리소스를 분류 할 수 있습니다.

인텔의 'device fission'을 설명하는 PDF는 here이며, 장치 분할 및 clCreateSubDevices을 효과적으로 사용하는 방법에 대한 정보가 많이 있습니다.

+6

OpenCL에서 스레드 유사성을 지정할 수 있다는 것은 보이는 것처럼 쓸모가 없습니다. NUMA 시스템 (예 : 다중 소켓 Nehalem 또는 AMD 시스템)에서 하나의 NUMA 노드에서 다른 NUMA 노드로 스레드를 마이그레이션하면 비 로컬 메모리 액세스가 발생할 수 있으며 성능이 저하됩니다. 코어 선호도를 처리하려면 OpenCL 런타임이 좋은 CPU 여야합니다. –