2013-03-18 5 views
1

최대 1 바이트를 취하는 값 행렬에 대해 일부 작업을 수행해야합니다 (값 형식은 0에서 20까지입니다). 행렬이 다소 크기 때문에 OpenCL을 사용하여 GPU에서 이러한 작업을 수행하고 행렬을 이미지로 저장한다고 생각했습니다. 문제는 OpenCL이 단일 채널 이미지를 지원하는지 여부에 대한 어떤 힌트도 찾지 못했기 때문에 실제로 사용하는 것보다 더 많은 데이터를 전달하고 싶지 않을 것입니다.그레이 스케일 이미지에 대한 OpenCL 지원

단일 채널 이미지를 지원합니까?

답변

2

이전 답변에서 언급 한 것처럼 CL_INTENITY 및 CL_LUMINANCE를 사용하십시오.

어드레싱 계산의 지연 시간은 Image 객체에 대해 더 잘 숨겨져 있지만 텍스처 캐시는 이미지 쓰기와 관련하여 일관성있게 유지되지 않으므로 이미지를 통해 쓰여진 주소로 읽은 이미지는 동일한 커널 호출은 정의되지 않은 데이터를 반환합니다. 따라서 개발자는 일반 버퍼 만 사용하는 것을 선호합니다.

+0

심지어 asker도 아니기 때문에 너의 포스트를 upvoted, 나는했다. – Tara

3

CL_INTENSITYCL_LUMINANCE이 있습니다. 그러나 이미지 관련 함수가 필요하지 않다면 (내가 행렬을 조작하고 싶다고 가정 할 때) 일반 메모리 버퍼를 사용하는 것이 더 좋습니다.

+0

OP는 그가 데이터로 무엇을하고 있는지 지정하지 않았습니다. 또한, 캐싱 가정은 실제 하드웨어에 따라 다르며 사양에서 요구하지 않습니다. 가능하면 전역 메모리에 대한 액세스는 로컬 공유 메모리를 통해 캐시 될 수 있습니다. – matthias

+0

어쩌면 당신은이 질문에 대답 할 수 있습니다 http://stackoverflow.com/questions/15322206/opencl-global-memory-vs-image-memory-performance-differences-on-nvidia-and-amd –

관련 문제