我有一个在OS X上运行的简单内核,它返回一个int值。基本位是:gcl_memcpy指针类型的自动检测
cl_int d;
cl_int* dptr = &d;
void* dev_d = gcl_malloc(sizeof(cl_int),NULL,CL_MEM_WRITE_ONLY);
// ... stuff to setup dispatch queue
dispatch_sync(queue, ^{
// ... running the kernel stuff
gcl_memcpy((void*)&d, dev_d, sizeof(cl_int)); // this gives d==0
gcl_memcpy((void*)dptr, dev_d, sizeof(cl_int)); // this gives correct d
});
的问题是,什么是& d和DPTR的区别?我一直认为它们基本上是可以互换的,但gcl_memcpy似乎在做出区分。有任何想法吗?我明显可以使用dptr解决方案,但我仍然很好奇发生了什么。