2012-11-20 4 views
2

매우 간단하다면 사과하지만 Google에서 답변을 찾을 수 없었습니다.OpenCL에서 반으로 변환하기

OpenCL 표준 (1.0 이후)에 따라 절반 유형이 저장 이유로 지원됩니다.

그러나 cl_khr_fp16 확장자가 없으면 아무 것도 사용할 수없는 것 같습니다.

내가 원하는 것은 내 값을 절반으로 저장하지만 모든 계산은 float로 수행하는 것입니다.

convert_half()를 사용해 보았지만 cl_khr_fp16이 없으면 지원되지 않습니다. 자동 C 스타일 변환을 위해 절반 만 쓰기 전에 (플로팅) 시도했지만 더 이상 작동하지 않았습니다.

제 질문은 저장 용량을 어떻게 활용합니까?

나는 반을 읽고 쓸 수 있어야합니다.

+2

기기가 하프 타입을 지원합니까? 선택 사항이며 필수 사항은 아닙니다. – mfa

+1

그것이 내 질문에서 명확하지 않은 경우 사과드립니다. 아니요, 내 장치가 cl_khr_fp16 확장 프로그램을 지원하지 않는 것 같습니다. 선택 사항입니다. 아무리 적 으면, 사양에서는 여전히 저장소 용도로 절반을 사용할 수 있어야한다고 말합니다. 여기에서 볼 수 있습니다. http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ double 및 double 및 half의 벡터 버전은 선택 사항이지만 반은 부분입니다 핵심 OpenCL 사양. –

답변

3

vload_halfNstore_halfN을 사용하십시오. 저장된 halfN 값은 floatN으로 /에서 변환됩니다.

가 내가 추가 거라고 생각 다른 답변의에 언급되지 않았기 때문에
+0

당신 말이 맞아요. 문서를 읽을 때 나는 그 전화를 놓쳤다. 나는 그들이 cl_khr_fp16 확장을 요구하고 반을 읽고 float로 변환하는 대신 반 포맷으로 유지할 것이라고 확신했습니다. 답변 해 주셔서 감사합니다. –

1

내가 아는 한 절반은 GPU에서만 지원되지만, bitwise 조작에 대해 조금 아는 한 매우 간단하게 float에서 변환 할 수 있습니다.

이렇게하는 방법에 대한 좋은 설명은 다음 링크를 참조하십시오.

ftp://ftp.fox-toolkit.org/pub/fasthalffloatconversion.pdf 
+0

링크가 작동하지 않습니다 (Google에서 가져 오기를 시도 했으므로 오프라인 사이트 여야 함) 그러나이 문서를 찾은 것 같습니다. 나는 그것을 조사해보고 이것이 작동하는 경우 대답으로 표시 할 것이다 :) 고마워! –

+0

그게 이상한 링크가 내게 모두 집에서 직장에서 잘 작동 –

0

: 당신은 또한 OpenCL을 이미지에 반 플로트를 사용하고 read_imagefwrite_imagef 기능은 당신을 위해 플로트로/변환을 할 것입니다 (cl_khr_fp16 확장은 필요하지 않음). 그 확장은 단지 변수를 가지고 있고 (그리고 수학을하고있는) 절반을위한 것입니다.

관련 문제