请问有人知道如何在OpenCL内核函数中将char*
指针转换为int*
吗?我尝试过使用((int*) char_pointer)
,但它并不起作用。
请问有人知道如何在OpenCL内核函数中将char*
指针转换为int*
吗?我尝试过使用((int*) char_pointer)
,但它并不起作用。
我认为你需要用正确的地址空间来限定指针。
如果你不指定地址空间,__private
会被默认使用,但是根据你的评论中显示,你的源指针似乎是一个 __global
指针,因此地址空间是不兼容的。
所以尝试使用 (__global int*)
而不只是 (int*)
。
union {
char *cp;
int *ip;
} ptr;
ptr.cp = allocatedBuf;
a[0] = *(ptr.ip);
虽然不太美观,但至少在C语言中可以完成任务而无需转换。这是未定义的行为,但嘿,你不会在心脏监护仪或核弹头的另一端使用它,对吧?
allocatedBuf
中作为一个int
吗? - violet313