printf 확장명이 활성화 된 ATI 카드에서 OpenCL을 사용합니다. 나는 변수를 출력하는 함수를 작성했습니다 :함수에 char * 인수가 전달 된 ATI OpenCL printf 확장 문제
void printVar(constant char* name, float var)
{
printf("%s: %f\r\n", name, var);
}
일반 C로 컴파일 할 때 예상대로이 코드는 작동하지만, 내가
printVar("foo", 0.123);
와 오픈 CL에서 호출하면 그 결과는 항상 어떤 무작위 char 다음에 "foo : 0.123"대신 0.123이옵니다. 필자는 컴파일러가 char * 문자열을 인식하는 데 문제가 있다고 생각합니다. 즉, 함수를 작동시킬 수 있도록 해결 방법이나 수정 사항이 있습니까?
이 동작도 발생합니다. 특히 커널이 내 CPU (AMD APP SDK 2.3 포함)에서 실행되지만 내 HD 5870에서는 실행되지 않는다면 예상대로 작동합니다. GPU에서 printf의 버그 또는 문서화되지 않은 제한 사항이라고 생각합니다. – Quantumboredom
완성을 위해 : 나는 AMD APP SDK 2.4 개발자 릴리스 노트를 읽었으며 printf는 현재 인쇄 문자열을 지원하지 않는다고 명시하고 있습니다. – Quantumboredom