cuda zero-copy
cudaHostAlloc(&data, size, cudaHostAllocMapped);
std::cout << "data = " << data << std::endl;
// deviceData == data, 下面步骤多此一举
float* deviceData = nullptr;
cudaHostGetDevicePointer((void **)&deviceData, (void *)data, cudaHostRegisterDefault);
std::cout << "deviceData = " << deviceData << std::endl;
就没人验证下吗? 到处都是这样写
有的甚至还去调用 cudaMemcpy() 简直了
GPUS开发者:CUDA优化的冷知识10 | GPU卡和Jetson上显存优化的特色
经过循环 10000 次测试, 如果不调用 cudaFreeHost(data); 只有内存一直增加, 显存根本不变
这个时候有人就要问 cudaHostGetDevicePointer 这个函数是用来干什么的.
事实上, 还有个函数可以把host分配的内存作为page-locked memory
cudaHostRegister(data, size, cudaHostRegisterDefault);