【发布时间】:2012-09-17 16:24:33
【问题描述】:
我对制作固定记忆有疑问。
现在我正在使用 CUDA 来处理大量数据。
为了减少运行时间,我发现有必要让内存复制和内核启动重叠。
在搜索了一些文本和网页之后,为了重叠内存复制和内核启动,我注意到有必要使用 cudaMallocHost 分配主机内存,它将主机内存分配给固定内存。
在主机上使用整数或数组类型的情况下,很容易做pinned memory。
就这样……
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] >>> (...);
}
但在我的情况下,我的主机离开内存是由变频器类型设置的。
而且我找不到任何使用 cudaMallocHost 将向量类型主机内存转换为固定内存的方法。
帮助我或提供一些建议来解决这个问题。 感谢您阅读我蹩脚的英语。谢谢。
【问题讨论】:
-
“向量类型”到底是什么意思?你是指 C++
std::vector,还是别的什么? -
是的。我的意思是 std::vector。
标签: cuda