小型规模化优化

yanghuatian 2013-06-01 02:17:50
最近本人需要做一个CUDA的优化没因为程序算法的复杂性,只能对其局部进行并行化,且有大量重复操作。
即,需要用到的CUDA操作非常频繁且规模较小。
需要如何改进可使得程序优化:

short *DCT_Mat;
cudaMalloc((void**)&DCT_Mat,SIZE);
cudaMemcpy(DCT_Mat,DctMat,SIZE,cudaMemcpyHostToDevice);

dim3 dimBlock(8,8);
dim3 dimGrid(1,1);

Transform<<<dimGrid,dimBlock>>>(DCT_Mat); //所花时间1ms

cudaMemcpy(DctMat,DCT_Mat,SIZE,cudaMemcpyDeviceToHost);

正如程序所示,该代码所需要操作的数据大小,只有8*8的矩阵。
在CPU下源代码花费时间为6ms,而CUDA下却进28ms之多,
经测试大量的时间花在了内存的申请和矩阵的值传递上。
请大神指点,如何设置可以优化这种情况的时间使用。
...全文
127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
linxxx3 2013-06-03
  • 打赏
  • 举报
回复
如果每次都是无关的数据,类似流式的,那么可以攒到一定规模一起计算; 如果每一次计算都和上次的结果相关,类似迭代的,可以把所有计算放到GPU上,只在初始和结束拷贝一次数据,中途不和CPU打交道。

579

社区成员

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

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