2016-09-06 1 views
1

According to Wikipedia, the Iris Graphics 6100 has 48 execution units (EU) with each having a pair of 128 bit FPUs. 그래서 각 EU는 8 부동 소수점 형식의 벡터를 지원해야합니다. 장치가 GPU의 기본 벡터 너비에 대해 폴링되면 모든 유형은 이중을 제외하고 1로 표시됩니다. 그것은 0으로 나왔습니다. 복식은 지원되지 않으므로 예상되는 동작입니다. CPU가 모든 정보를 올바르게 반환했습니다. 48 개의 GPU EU가 모두 존재하는 것으로 인정 받고 있습니다.OSX의 벡터 너비 Intel Iris 그래픽 6100 (MBP 2015)에서 OpenCL 구현

Apple의 clGetDeviceInfo 구현과 관련된 버그일까요? 적어도, char 벡터의 적절한 폭이 int 벡터보다 큰 것을 출력 할 필요가 있습니다. 하지만 모두 돌아오고 있습니다.

드라이버는 최신 버전입니다 (2016 년 8 월 29 일).

편집 :

clGetDeviceInfo(devices[j], CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT, sizeof(maxWidth), &maxWidth, NULL); 

그리고

clGetDeviceInfo(devices[j], CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, sizeof(maxWidth), &maxWidth, NULL); 

는 GPU에 대한 모든 종류의 1을 반환합니다.

CPU는 Char, Short, Int/Float에 대해 각각 16, 8, 4를 반환합니다.

+0

clGetDeviceInfo에 대한 호출은 어떻게 생겼습니까? –

+0

clGetDeviceInfo (devices [j], CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT, sizeof (maxWidth), & maxWidth, NULL); – Davidthefat

+0

저는 이것이 애플의 구현에서 나타나는 특이한 행동이라고 생각합니다. 이 방법으로 폴링 한 Mac 하드웨어 (대표 샘플이 아닌)는 벡터 너비에 대해 1 이외의 값을 반환했습니다. 하지만 애플의 구현은 내 경험보다 훨씬 나쁜 버그가있다. – pmdj

답변

1

인텔 GEN 그래픽에서 float 벡터의 기본 벡터 너비는 float4에서와 마찬가지로 4입니다. 일부 커널의 경우 float8이 가끔은 적합합니다. 그래서 저는 이것이 MacOSX 드라이버의 문제라고 생각합니다.