我目前正在 CUDA 中尝试我的第一个动态并行代码。这很简单。在父内核中,我正在做这样的事情:
int aPayloads[32];
// Compute aPayloads start values here
int* aGlobalPayloads = nullptr;
cudaMalloc(&aGlobalPayloads, (sizeof(int) *32));
cudaMemcpyAsync(aGlobalPayloads, aPayloads, (sizeof(int)*32), cudaMemcpyDeviceToDevice));
mykernel<<<1, 1>>>(aGlobalPayloads); // Modifies data in aGlobalPayloads
cudaDeviceSynchronize();
// Access results in payload array here
假设到目前为止我做的事情是正确的,那么aGlobalPayloads
在内核执行后访问结果的最快方法是什么?(我试图cudaMemcpy()
复制aGlobalPayloads
回aPayloads
但cudaMemcpy()
不允许在设备代码中)。