首页  技术文章  CPU和GPU在GSW算法计算中的速度比较

CPU和GPU在GSW算法计算中的速度比较

发布时间:2021-05-27 08:33:04 浏览量:2766 作者:Paul

正文


这里主要是测试一下CPU和GPU计算的速度。

CPU:I7-10700,8核16线程,主频2.9GHz,睿频4.8GHz

GPU:RTX-2060,6G显存,可用显存为5G


计算平台为Matlab 2019b,采用同一个GSW算法,进行不同次数的循环。因为数据前后是相关的,所以没有主动采取并行运算。但是从任

务管理器中观察,Matlab有优化过程,计算中还是使用到多核。若只采用CPU计算,CPU利用率从0%变化到74%,GPU利用率几乎

不变,大部分时间还是维持在0%。若采用GPU计算,CPU利用率0%变化到11%,GPU变化率为偶尔跳到2%。




然后修改图像尺寸,看看数据大小对于时间的影响,循环次数保持在100




从上面两张表格看,首先两张表格的曲线都是线性增长的,其次当数据量和计算次数增加后,GPU的优势会越来越大。所以总结下

来,利用GPU进行计算还是非常有必要的。


我们以Nvidia公司的显卡以及CUDA为例子,因为这些都是比较流行的东西。CUDA是Nvidia公司推出的类似于C语言之类的编程语

言,只能用在Nvidia的显卡上,而且只有支持CUDA的显卡才能计算,所以购买Nvidia公司的显卡前,需要先去查询一下是否支持

CUDA开发。查询网站:https://developer.nvidia.com/zh-cn/cuda-gpus


下图以一张想卡的结构,首先他有单独的内存,如Global Memory,Constant Memory, texture Memory。GPU无法共享CPU的

内存,所以每次都需要调用CUDA的函数cudaMemcpy在GPU和CPU之间拷贝数据,而且这个过程还是相当消耗时间的。一个GPU内

有一个Grid,Grid下包含多个Block,RTX 2060下就包含[2.1475e+09, 65536, 65536]个Block,他是三维的数组,总数是将其相乘。

然后每个Block下面有一个Shared Memory,以及包含多个Register和Thread,如果经常要从Global Memory读取数据也是缓慢的过

程,可以将数据放到Shared Memory加快读写的速度,Thread是一个单独的线程,类似于CPU所说的8核16线程,而RTX 2060显卡

的一个Block下线程个数为[1024, 1024, 64]个线程,如果在乘以Block的数量,可以看到一张显卡下的线程个数是远远超过CPU的,而

且从之前观察的GPU利用率来看,GPU的利用率最高也只有2%左右,GPU还没有充分发挥所用能力。



您可以通过我们的官方网站了解更多的产品信息,或直接来电咨询4006-888-532