에 대한 포인터를 OpenCL 커널 함수에서 타입 변환하는 방법을 알려줄 수 있습니까 ?? ((int*) char_pointer)
을 시도했지만 작동하지 않습니다.openCL에서 char *를 int *로 캐스팅하는 방법
답변
올바른 주소 공간으로 포인터를 한정해야한다고 생각합니다.
주소 공간을 지정하지 않으면 __private
이 사용되지만 소스 포인터는 __global
포인터 (사용자 의견에서) 인 것처럼 보이므로 주소 공간이 호환되지 않습니다.
(int*)
대신 (__global int*)
을 사용해보십시오.
고맙습니다 ... 내 문제를 해결했습니다. – sahil
물건을 노동 조합의 포인터, 숯불 *로 초기화 INT *와 함께 사용 :
union {
char *cp;
int *ip;
} ptr;
ptr.cp = allocatedBuf;
a[0] = *(ptr.ip);
미운하지만, 캐스트없이 트릭, 적어도 C.에서 그것은 정의되지 않은 동작이다 않지만, 심장 모니터 나 다른 쪽 끝의 핵탄두에서 이걸 사용하지 않았습니까?
코드가 공개되고 일부 회사가 원자력 발전소에서 언젠가이를 사용한다면 어떻게 될까요? – hochl
OpenCL C는 명시 적으로 마지막으로 쓰여진 멤버가 아닌 다른 유니온 멤버를 읽을 수 있기 때문에 UB가 아닌 것으로 생각합니다. 이것은 OpenCL C가 기반을 둔 C99에서도 마찬가지 일지 모르지만 그 점은 확실하지 않습니다. 하지만 어쨌든 불일치하는 주소 공간에 누워 있기 때문에 문제가 해결되지 않습니다. –
나는 그들에게 그렇게 말했기 때문에 그들은 나를 비난 할 수 없다. 진지하게, 받아 들여진 대답에서 던지기와 똑같은 일이 일어날 것입니다. 잘못 정렬 된 포인터를 사용하면 항상 문제가 발생합니다. – Jens
- 1. 이진 데이터를 읽고 unsigned char (C++)로 캐스팅하는 방법
- 2. 바이트 []를 char *로 복사하는 방법?
- 3. unsigned char *를 unsigned char *로 복사하십시오.
- 4. char/*를 wchar_t/*로 변환하는 방법 - 그러나
- 5. C에서 u_char *를 char []로 변환하는 방법
- 6. 부호없는 long에서 void *로 캐스팅하는 방법?
- 7. Integer []를 int []로 변환하는 방법?
- 8. int []를 java에서 Integer []로 바꾸는 방법?
- 9. NSString으로 int 캐스팅하는 문제
- 10. Scala에서 Java Collection [Int]를 Array [Int]로 변환하는 방법
- 11. const char *를 char *로 변환 할 수 없습니다. *
- 12. const wchar_t *를 const char *로 변환하십시오.
- 13. C에서 '5'를 int '5'로 변환하는 방법?
- 14. 템플릿 함수에서 const char []를 const char *로 자동 변환합니다.
- 15. const unsigned int 배열을 int 배열로 캐스팅하는 방법
- 16. char *를 char [200]
- 17. 왜 cin.get (char *, int, char t) 및 cin.getline (char *, int, char t)입니까?
- 18. BSTR을 CHAR *로 변환하고 CHAR *를 C로 BSTR로 변환
- 19. wchar_t **를 char **로 변환하는 방법은 무엇입니까?
- 20. C++ int to char
- 21. char 배열에서 int 배열
- 22. ARC를 사용하여 char *를 id *로 변환하는 방법
- 23. 왜 int [] []를 int **로 변환하는 컴파일러가 이론상 가능하지 않습니까?
- 24. Haskell에서 IO [[Int]]를 [[Int]]로 변환하려면 어떻게해야합니까?
- 25. Signed Char to Int
- 26. Java에서 char 및 int
- 27. 해시 테이블에서 int 배열로 char 배열 캐스팅
- 28. C#에서 int [,]를 byte []로 변환하는 방법
- 29. ANSI-C를 unsigned int *에서 char *로 변환하는 방법은 무엇입니까?
- 30. ``char``을`int`로 변환하면``% c "`가`printf`에 존재합니까?
어떤 오류가 있습니까? – user1202136
컴파일러에서 엄격한 앨리어싱을 해제했는지 확인하십시오.이 작업은 엄격한 앨리어스 규칙으로 인해 올바르지 않지만 대부분의 컴파일러에서 해제 할 수 있습니다. –
/tmp/OCLqZ3crS.cl(710) : 오류 : 형식 변환이 잘못되었습니다. a [0] = * ((int *) allocatedBuf); allocatedBuf 유형이 글로벌 char * – sahil