还有个Phoronix
Test
Suite套件也包含有显示性能测试组件,这个是开源免费的。
nvcc 编译代码nvcc -o squareSum squareSum.cu运行结果:
CUDA initialized.
(GPU) sum:29909398 time:787124792
(CPU) sum:29909398 time:10000
从执行的结果可以看出, GPU 中运行的程序居然要比 CPU 中的消耗的时钟周期还要多得多。这是有原因的。
因为程序之中并没有使用 CUDA 并行执行的优势。
这里分析一下 GPU 运行的性能。
此 GPU 消耗的时钟周期: 787124792 cycles
GeForce G 103M 的 clockRate: 1.6 GHz
所以可以计算出 GPU 上运行时间是: 时钟周期 / clockRate = 0.49195 s
1 M 个 int 型数据有 4M Byte 的数据量,实际使用的 GPU 内存带宽是:数据量 / 运行时间 = 8.13 MB/s
可见这个程序没有很好的发挥 GPU 的性能,使用的内存带宽很小。
没有有效利用 GPU 性能的原因???
在 CUDA 中,一般的数据复制到的显卡内存的部份,称为 global memory。这些内存是没有 cache 的,而且,存取 global memory 所需要的时间(即 latency)是非常长的,通常是数百个 cycles。
由于我们的程序只有一个 thread,所以每次它读取 global memory 的内容,就要等到实际读取到数据、累加到 sum 之后,才能进行下一步。这就是为什么它的表现会这么的差。实际上 GPU 一直在等待上一个数据运行的结束,然后再拷贝一个内存数据,所以使用的时钟周期自然就长了。
由于 global memory 没有 cache,所以要避开巨大的 latency 的方法,就是要利用大量的 threads。假设现在有大量的 threads 在同时执行,那么当一个 thread 读取内存,开始等待结果的时候,GPU 就可以立刻切换到下一个 thread,并读取下一个内存位置。因此,理想上当 thread 的数目够多的时候,就可以完全把 global memory 的巨大 latency 隐藏起来了。
显卡测试软件有以下几个:
1、GPU-Z。这个软件通过程序可以查看SP管线数量,核心核显频率,以及TDP范围,我们可以运行游戏测试各个数据的峰值表现,尤其观察功耗和频率。
2、3D Mark。这个软件主要测试稳定性,如果是矿卡,大多数会有暗病,很难顺利通过测试,再进行DX12 20轮循环测试,可以看出显卡的体质,如果是优秀的分数会在99%以上,低于97%的体质表示不合格。还可以测试性能分数,整体数据会比娱乐大师准一点,可以看出在4K分辨率以及开了DLSS的具体帧率情况,游戏测试的基本软件。
3、Furmark。这个软件可以测试显卡的极限温度以及稳定性,如果没有出现闪屏,或者黑屏以及花屏等情况才算通过测试。
显卡使用的注意事项。
独立显卡是指将显示芯片、显存及其相关电路单独做在一块电路板上,自成一体而作为一块独立的板卡存在,它需占用主板的扩展插槽(ISA、 PCI、AGP或PCI-E)。独立显卡的优点是单独安装有显存,一般不占用系统内存,在技术上也较集成显卡先进得多,但性能肯定不差于集成显卡,容易进行显卡的硬件升级。独立显卡的缺点是系统功耗有所加大,发热量也较大,需额外花费购买显卡的资金,同时(特别是对笔记本电脑)占用更多空间。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)