cpu代码可以用gpu跑么

cpu代码可以用gpu跑么,第1张

cpu代码可以用gpu跑严格来说,gpu不能干cpu的活。可以理解为GPU功能一而CPU是多面手。

1、gpu就是并行处理强大,cpu很多功能gpu都没有。什么指令流水化,多进程管理之类的。GPU工作原理是cpu处理指令,遇到需要gpu的地方,比如矩阵处理,图像渲染,会在显存中开辟一个小空间,然后把这个矩阵打成很多小数据给gpu的流水线来加工。

2、不过,相对来说,gpu的浮点计算能力比cpu强大的多,所以可以代替cpu进行单纯的数据运算,比如拿来“挖矿”。

用BLAS库进行。

现在做的DNN、CNN都是在底层把计算转换为矩阵乘法。加速矩阵乘法就是用的BLAS库。很多情况下,application叫做R standard interface,就是单线程实现的矩阵乘的库,可以很容易地把这个库替换下面的部分,既可以替换成GPU加速的cuBLAS库,也可以是多核或多线程的intel的MKL库和OpenBLAS。通过这种方式,可以很快地提高矩阵运算速度。

Linux下有个NVBLAS库,它其实是cuBLAS的wrapper,从它里面就可以调整各种精度的矩阵乘。

它不仅支持单GPU,还支持多GPU。它的主要好处是对code不需要做任何改变,也就是zero programming effort,只需要把NVBLAS库load在前面,这个库就被替换成cuBLAS,跑到GPU上。

所以在做应用程序开发,大家通常有一种思路,如果想加速一个计算,就尝试把这个计算转换成矩阵计算,并加载各种多线程库或并行库,那么程序可以得到很快地提高,这其中不需要太多code的重写。然后看下benchmark,有两种benchmark。

蓝色的线是用原来的的R跑的程序,可以看到运行时间多很多,加载了NVBLAS库以后,运行时间少了很多。其他是一些在很多程序里运用的基础算法。当程序比较依赖于这种基础算法,就可以考虑加载很多并行库,来看程序的运行效果。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/660872.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-25
下一篇2023-07-25

发表评论

登录后才能评论

评论列表(0条)

    保存