2014-09-04 5 views
1

int, cl_int, char, cl_char, 'short', 'cl_short'와 같이 OpenCL에 많은 데이터 유형이 있습니다. 그러나 intcl_int의 차이점은 무엇이며 언제 int 대신 cl_int을 사용해야합니까?OpenCL에서 int와 cl_int의 차이점은 무엇입니까?

+0

[이] (http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/scalarDataTypes.html) 어떤 도움이 아니었다? –

+0

@ DavidRönnqvist 사실 나는 그 페이지를 읽었지만,'cl_int'를 언제 사용해야하는지,'int'를 사용해야 할 때를 알지 못합니다. 그래서 컨벤션이나 모범 사례가 있는지 알고 싶습니다. – YuYang

+0

중복으로 간주 될 수 있습니다. http://stackoverflow.com/a/25398700/3182664 도움이 될만한 – Marco13

답변

7

C에서 int의 크기/C++ 기계 의존한다. 은 적어도16 비트이지만, 일반적으로 32 비트이며 64 일 수도 있습니다. 이는 OpenCL에서 호스트와 장치간에 데이터를 전달할 때 문제가됩니다. int 크기 인 경우 int 값을 장치에 전달하면 예상 한 결과가 생성되지 않을 수 있습니다.

오픈 CL 헤더는 오픈 CL 장치 예상 크기와 일치 항상 32 비트 데이터 형식을 제공하는 cl_int 정의를 제공한다. 즉, cl_int 값이나 cl_int 값의 배열을 호스트에서 장치로 (또는 뒤로) 값을 일치하지 않는 크기로 실행하지 않고 전달할 수 있습니다.

따라서 장치에 전달할 값이나 버퍼를 처리하는 호스트 코드를 작성할 때는 항상 cl_ 데이터 유형을 사용해야합니다.

관련 문제