2015-01-03 3 views
2

특정 CPU에서 커널을 실행하는 OpenCL 개념 증명 응용 프로그램을 작성하려고합니다. 따라서 앞으로 NUMA를 인식하도록 확장하고 in the Intel Dev forums과 같이 해당 NUMA 노드에서 커널 실행).OpenCL 하위 장치 선호도가 스케줄러에서 준수하지 않음

불행하게도 Windows 스케줄러는 내 커널을 사용 가능한 모든 CPU 코어 (즉, 로컬 메모리에서 멀리 떨어져 있음)를 통해 순환하는 것처럼 보이기 때문에 내가 원하는 것을 신경 쓰지 않습니다.

지금은 CL_DEVICE_PARTITION_BY_COUNTS 속성을 사용하여 하나의 실행 단위로 하나의 하위 장치를 만들고이 하위 장치에서 커널을 실행하고 있습니다. 그럼에도 불구하고 Windows의 CPU 사용량을 살펴보면 단일 코어가 사용량이 많지는 않지만 여러 코어가 작업 부하가 급증합니다 (단, 작업 관리자를 사용하여 프로세스를 하나의 코어에 수동으로 고정시키지 않으면 결과가 나타남) 나는 모두 함께) 기대했다. 내가 사용

cl_device_partition_property props[4]; 
props[0] = CL_DEVICE_PARTITION_BY_COUNTS; 
props[1] = 1; 
props[2] = CL_DEVICE_PARTITION_BY_COUNTS_LIST_END; 
props[3] = 0; 

을 : 여기

내가 (필자는 subdevice의 실행 유닛의 수를 조회하는 경우 올바르게 "1"나를 제공)을 subdevice을 만드는 데 사용되는 속성의 전체 정의입니다 두 개의 Intel Xeon 프로세서 (Intel OpenCL 구현으로 24 개의 실행 단위가있는 하나의 실행 장치로 인식되는 방법)와 CL_DEVICE_PARTITION_BY_NAMES_INTEL도 사용하려고 시도했지만 어느 것도 작동하지 않았습니다.

내가 뭘 잘못하고 있니?

도움 주셔서 감사합니다.

답변

0

이러한 플래그를 사용해 보셨습니까?

CL_AFFINITY_DOMAIN_L1_CACHE_EXT     0x1 
CL_AFFINITY_DOMAIN_L2_CACHE_EXT     0x2 
CL_AFFINITY_DOMAIN_L3_CACHE_EXT     0x3 
CL_AFFINITY_DOMAIN_L4_CACHE_EXT     0x4 
CL_AFFINITY_DOMAIN_NUMA_EXT      0x10 
CL_AFFINITY_DOMAIN_NEXT_FISSIONABLE_EXT   0x100 

난 당신이 CL_DEVICE_PARTITION_BY_COUNTS를 사용할 때, 당신은 일을 어떤 단일 코어를 요구하고 생각합니다. 위의 플래그는 캐시 수준에 따라 그룹화를 시도합니다. 이는 어쨌든 목표입니다. 나는 OS가 친화력을 존중할지를보기 위해 이것을 직접 테스트하지는 않았지만 그렇게해야한다고 생각한다. read more here.

+0

예, 사용하고 있습니다. 안타깝게도 Intel OpenCL SDK 나 AMD OpenCL SDK (/ drivers)는 현재 선호도 도메인을 지원하지 않습니다. – dorbeetle

관련 문제