2012-06-19 2 views

답변

1

나는 당신이 clGetKernelWorkGroupInfo 찾고있는 생각합니다.

특히 CL_KERNEL_WORK_GROUP_SIZE 및 CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE은 작업 그룹 크기를 조정하는 데 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다.하지만 다른 것이 필요합니다. 몇 가지 테스트에 대해 원하는 점유율을 설정해야합니다. 최대 값을 알아야합니다. 내 HW에서 실행할 수있는 워프 (warp)를 계산하고 필요한 점유율 근처에서 NDRange 차원의 분포를 계산합니다. 따라서 하드웨어를 허용하는 계산 단위에 가능한 최대 수의 활성 스레드가 필요합니다. 이걸 찾을 수 있을까요? – cizek

+0

위의 링크에서 : "CL_KERNEL_WORK_GROUP_SIZE \t size_t \t - 이것은 장치가 제공 한 특정 장치에서 커널을 실행하는 데 사용할 수있는 최대 작업 그룹 크기를 쿼리하는 메커니즘을 응용 프로그램에 제공합니다 .OpenCL 구현은 리소스 이 작업 그룹의 크기를 결정하기 위해 커널 요구 사항 (레지스터 사용 등)을 결정해야합니다. " – mfa

+0

예, 이해합니다. 예. NVidia Qadro 3000M을 가지고 있으므로 계산 단위 당 최대 48 개의 워프와 8 개의 작업 그룹을 가질 수 있습니다. 커널이 63 명의 등록자를 가지고 있다면 CL_KERNEL_WORK_GROUP_SIZE는 512를 반환합니다. NDRange (1,1,1) (1,32,16)을 실행하면 하나의 계산 단위에 총 16 개의 활성 워프가있게됩니다. 점유는 16/48 = 0.33 (33 %)이되지만 NDRange (2,1,1) (1,24,16)는 계산 단위가 12 개뿐입니다. 점유는 12/48 = 0.25 (25 %)입니다. 이 계산을 위해서는 계산 단위에 대한 최대 활성 워프를 알아야합니다. – cizek

관련 문제