1
printf
함수 (cl_intel_printf
확장명)를 호출하면 동일한 변수가 double
(8 바이트 정렬 됨) 유형으로 여러 번 인쇄된다는 사실이 나타났습니다. 그 중 하나는 정확하고 다른 하나는 가짜입니다 (4 바이트를 읽음). c/C++에서와 같이 정렬 된 데이터 유형이 포인터로 (또는 c++
의 참조로) 값으로 전달되어서는 안된다는 의미입니까?정렬 된 데이터 유형을 항상 포인터로 전달해야합니까?
(더 일반적으로, 모든 함수 호출은 인라인되는 OpenCL을 위해? 어디 선가 읽은 규칙을 caling 기능은 무엇인가하지만, 그 OpenCL in Action
말한다. 그게 구현 정의?)
(나는 atm .. 답을 제공 할 수 없기 때문에 주석 달기입니다.) printf는 일반적으로 double에 문제가있을 수 있다고 생각합니다. float 또는 int/int64 유형과 비슷한 동작을 보았습니까? float64는 일반적으로 확장 기능으로 제공되므로 내 생각에 사용하고있는 printf는 double에 관한 버그가있을 수 있습니다. 동일한 8 바이트 정렬 값이 일관되게 인쇄되지 않는 것은 이상합니다. 확장자 'cl_khr_byte_addressable_store'도 염두에 두되, 정렬되지 않은 int 값과 관련이 있습니다. – mfa
코드 샘플을 제공해 주시겠습니까? – vocaro
고마워, @vocaro, 나는 결국 그것을 재현 할 수 없었다. anwer의 설명. 아직도 나에게 알려지지 않은 전화 조약. – eudoxos