我对固定内存有疑问。如何使矢量类型值固定在cuda中的内存
现在我正在使用CUDA来处理大量的数据。
为了减少运行时间,我发现有必要使内存复制和内核启动重叠。
搜索一些文本和网页后,重叠内存复制和内核启动,我注意到有必要通过使用cudaMallocHost分配主机内存,它将主机内存分配给固定内存。
在主机上使用整数或数组类型的情况下,很容易制作固定内存。
就像这样......
cudaStream_t* streams = (cudaStream_t*)malloc(MAX_num_stream * sizeof(cudaStream_t));
for(i=0; i<MAX_num_stream; i++)
cudaStreamCreate(&(streams[i]));
cudaMallocHost(&departure, its_size);
for(n=1; ... ; n++){
cudaMemcpyAsync(... streams[n]);
kernel <<< ... , ... , ... , streams[n] >>> (...);
}
但在我而言,我的主人离去内存由vertor类型设置。
而我无法找到任何方式通过使用cudaMallocHost将矢量类型主机内存转换为固定内存。
帮我解答一下这个问题或者给点建议。 感谢您阅读我可怜的英语。谢谢。
“矢量类型”是什么意思?你的意思是C++'std :: vector',还是别的? – talonmies
是的。我的意思是std :: vector。 – Umbrella