我对制作固定内存有疑问.
现在我正在使用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] >>> (...);
}
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我的主机离开内存是由vertor类型设置的.
而且我无法通过使用cudaMallocHost找到将矢量类型主机内存转换为固定内存的方法.
帮助我或提供一些建议来解决这个问题.谢谢你阅读我可怜的英语.谢谢.
归档时间: |
|
查看次数: |
1383 次 |
最近记录: |