我有关于制作固定内存的问题。
现在我正在使用CUDA处理大量数据。
为了减少运行时间,我想到需要重叠内存复制和核心启动。
在搜索一些文本和网页后,为了重叠内存复制和核心启动,我注意到需要使用cudaMallocHost来分配主机内存,这将分配主机内存到固定内存中。 在主机上使用整数或数组类型的情况下,很容易制作固定内存。
就像这样...
现在我正在使用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] >>> (...);
}
然而在我的情况下,我的主机离开内存是由向量类型设置的。
我找不到任何方法可以使用cudaMallocHost将向量类型主机内存转换为固定内存。
请帮助我或者给出一些解决这个问题的建议。感谢您阅读我拙劣的英文,谢谢。
std::vector
,还是其他东西? - talonmies