我有一個在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解決方案,但我仍然很好奇發生了什麼。