2009-12-24 5 views
2

OpenCL에 대한 새로운 소식입니다.OpenCL 텍스처 메모리

내 코드의 첫 번째 반복에서는 큰 데이터 세트에 기본 메모리 버퍼를 사용하고 전역으로 선언했습니다. 그러나 이제는 타이밍을 개선하기 위해 찾고 있는데, 저는 이것을 위해 텍스처 메모리를 사용하고 싶었습니다. CUDA 버전에서는 cudaBindTexture와 tex1Dfetch를 사용하여 큰 1D 플로트 배열에 대한 데이터를 얻습니다. 스펙에 대한 나의 이해에서, 텍스처 메모리는 이미지 메모리와 같은 것이다. 그러나 최대 높이와 ​​너비가있는 2D 및 3D 이미지 객체 만 있으므로 몇 가지 문제가 발생합니다. 내 배열이 최대 높이/너비보다 크지 만 최대 높이 * 최대 너비보다 큽니다. 내 1D 배열을 2D로 변환해야합니까? 아니면 더 좋은 방법이 있을까요?

아니면 완전히 해제 되었습니까?

나는 http://forums.nvidia.com/index.php?showtopic=151743http://forums.nvidia.com/index.php?showtopic=150454을 읽었으나 모범 사례 및 프로그래밍 가이드에서 언급 한 텍스처 메모리가 실제로 이미지 개체 였는지 여부가 정확히 결정되지 않았습니다.

감사합니다. 어떤 도움이나 제안도 환영합니다!

답변

3

NVidia의 포럼 here에 내 게시물에 대한 답변으로 가장 잘 맞는 답변을 찾았습니다.

+0

예, 설명이 잘되어 있습니다. – goger

1

내 배열은 최대 높이/너비보다 크지 만 최대 높이 * 최대 너비는 아닙니다. 내 1D 배열을 2D로 변환해야합니까?

예, 텍스처 하드웨어에는 최대 인덱스 값에 대한 제약이 있습니다. 이 값을 초과하면 여러 색인 값을 사용하여 변환해야합니다.

즉, 텍스처 액세스로 변환하면 프로그램 속도가 빨라진다는 의미는 아닙니다.

+0

일반적으로 read_only 이미지 텍스처 메모리는 캐시되어 있기 때문에 일반적으로 커널을 기반으로 성능이 향상됩니다. 나는 그것으로부터 꽤 좋은 성능 향상을 얻었다. – achinda99

+0

이 질문에 대한 의견이 있으십니까? http://forums.nvidia.com/index.php?showtopic=154686 – achinda99

1

OpenCL 1.2는 1D 텍스처를 지원합니다. 문제는 NVIDIA가 AMD 또는 Intel과 달리 OpenCL 1.1 만 지원한다는 것입니다.