CUDA 大量数据做FFT 从内存读取数据时时间太长

qq_16808349 2017-04-12 03:59:25
每秒有64*16K点的数据 存在TXT文件里
我现在的处理过程是这样的
将整个TXT用fread读到内存 再用sscanf从内存中取出给h_signal赋值
后边用了cudaHostAlloc给h_signal分配内存 用cudaMalloc给d_signal分配内存
然后用cudaMemcpyAsync内存拷贝 开了多个流


现在遇到的问题是 64个文件每个文件有16K点 如果是循环处理64个文件 现在用的是循环 大概需要2.4S
for(int i=0;i<64;i++)
{
float *data;
data = Data2Ram(FileName[i]);//这个是从文件里提取float数据的
runTest(data,stream[i]);//这个是在GPU上的一些操作的
}
如果是合并成一个文件 需要2S

用visual ProFiler分析可以看到 实际上计算的时间是很短的 大部分时间是在从主机的内存中读数

有看到说用零拷贝内存 分析以后感觉零拷贝内存对于这种需要一直用PCI-E总线传数据的感觉也不是很合适

所以发帖问问有没有大神可以给出一些建议
...全文
1162 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_16808349 2017-04-12
  • 打赏
  • 举报
回复
CPU可否开多个线程同时读取数据 上边我写的那个循环执行的感觉背离了GPU可并行性 有没有好的处理方法 第一次搞这个 求助

579

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧