官方测试程序gpu比cpu运行快,但为啥我写的程序在gpu上运行的还没有cpu快呢

话题里有Theano,那就按照Theano来了。1.首先分别在CPU和GPU上运行下面链接里的测试程序:testing-theano-with-gpu如果运行结果显示用不到GPU,那是安装或配置的问题。如果用到了GPU,但比CPU慢,那是GPU太低端?2.如果上面的程序GPU比CPU快,那就是自己代码的问题了。看一下GPU加速的技巧:tips-for-improving-performance-on-gpu。比如:大型矩阵的相乘、卷积等运算GPU加速明显;用updates修改shared variable的值GPU加速明显;GPU只在float32下加速;indexing、shuffling、reshape等操作GPU不加速;sum()等操作GPU比CPU慢;大量的数据拷贝会影响速度等等。
■网友
谢邀。gpu代码运行慢很正常,当时刚入门的时候,写出来的程序跟CPU运行的时间差不多。根据我的经验,有以下几个可能的原因:1、显卡。低端显卡跑出来的程序是有可能没有CPU跑得快的。2、运行模式。是debug模式还是release模式?debug模式是没有自动优化过的,而且还有很多附加的调试代码。3、程序自身。gpu代码优化是个体力活也是脑力活,只有充分契合gpu架构的代码才能实现较高的加速比。个人意见仅供参考。
■网友
如果没有parallel programming的基础的话,写出gpu code比cpu慢是很正常的。如果有条件的话,题主可以上youtube搜一下udacity开的parallel programming的课程。
■网友
试试cpu优化之后的theano 会有惊喜 并不用再关心谁快了 github·com/intel/theano
■网友
你应该学习并行计算。
■网友
提高并行度很重要,寄存器数限制、共享内存、bank conflict 都要考虑,还可以看看stream、texture memory来加速。Nsight很好用,可以分析出活跃warp数现在在什么地方,然后对应的去优化。总之要充分了解GPU内部的处理过程才能更好的优化。
■网友
那是因为你的代码没写好,你的代码并行度高吗?只有并行度高的才可能充分利用GPU的硬件资源,建议看看GPU的架构和一些自带的例子,重新修改你的代码


    推荐阅读