2011-08-29 3 views
7

현재 OpenCL 커널에서 처리 할 수있는 플로트 배열이 많습니다.이 배열을 나눠서 OpenCL 벡터 유형 배열을 사용하면 처리 속도가 빨라지는지 궁금합니다. 기본적으로 4,800 개의 float 배열을 가지고 있다면 300 개의 float16 벡터 배열로 나눕니다. 이것이 SIMD를 이용하게 될까요?OpenCL 벡터 유형이 SIMD를 사용합니까

+2

OpenCL은 이미 기본 하드웨어의 SIMD 기능을 활용하거나 GPU 프로그래밍에 사용하지 않아야합니다. CPU가 OpenCL의 완벽한 영역이 아니더라도 CPU에서 어떤 역할을하는지 확신 할 수 없습니다. –

답변

7

인텔은 실제로 OpenCL SDK의 기능에 대해 설명합니다. Writing Optimal OpenCL™ Code with Intel® OpenCL SDK을 참조하십시오. 벤치마킹에 추가하여이를 확인하고 싶을 수도 있습니다. 재미있는 부분은 2.3 장에서 시작합니다.

질문에 대답하려면 : 그렇습니다, 그것은 SIMD를 이용합니다. 그러나 "벡터 데이터 유형을 사용하여 CPU 벡터 단위의 활용을 극대화"하려면 해당 문서를 실제로 읽어야합니다.

0

그렇지 않을 수도 있습니다. 이것은 OpenCL의 구현과 프로그램이 실행되는 하드웨어에 달려 있습니다.

개선점을 확인하는 유일한 방법은 벡터 크기 범위 (예 : 1 (스칼라), 2, 4, 8 및 16 비교)에 대해 플랫폼 및 구현에 대한 벤치마킹입니다.