3

谁能告诉我如何在 OpenCL 内核函数中键入一个char*指针?int*我试过((int*) char_pointer)了,但它不工作。

4

2 回答 2

12

我认为,您必须使用正确的地址空间来限定指针。

如果您不指定地址空间,__private则假定,但您的源指针似乎是一个__global指针(来自您的评论),因此地址空间不兼容。

所以尝试使用(__global int*)而不是仅仅使用(int*).

于 2012-05-07T15:07:33.717 回答
0

将指针填充到联合中,使用 char* 进行初始化,将其与 int* 一起使用:

 union {
     char *cp;
     int  *ip;
 } ptr;

 ptr.cp = allocatedBuf;
 a[0] = *(ptr.ip);

丑陋,但至少在 C 中没有演员表的伎俩。这是未定义的行为,但是嘿,你不是在心脏监视器中使用它,也不是在另一端使用核弹头,对吧?

于 2012-05-07T14:34:56.677 回答