笔记本电脑安装cuda10.2并使用pycuda、xgboost测试GPU计算效率(附Colab, Kaggle, BaiduAIStudio性能测试对比)

硬件配置:

机型:机械革命s1,2018年

CPU:i7-8550U

GPU:Nvidia Geforce MX150(满血版),2G显存

内存:单条16g (自己更换的)

软件信息:

CUDA:v10.2.89

Display Driver:441.66

1. 引言

最近做机器学习,想测试一下自己的顶配轻薄本上的MX150独显,相比cpu和集显来讲,到底能有多少提速。因此就有了这次测试。

2. cuda的安装

按照官网guidance走,十分顺利。由于不是本文的重点,就简单讲下。

Guidance有2个:一个是 Quick Start Guide,另一个是 Cuda Installation Guide for Windows

安装步骤第一步:更新显卡驱动 为441.66;第二步:安装 Microsoft Visual Studio 2019,Community版本即可,安装时记得勾选C++组件,cuda程序编译时会用到,需要大概7GB硬盘空间;第三步:安装 cuda10.2,显卡驱动已经更新过了记得选自定义安装,然后untick显卡驱动Display Driver,还有Geforce Experience也不是必须的那个是打游戏用的,也可以untick。

不过在做之前要注意一下cuda版本和Display Driver版本,以及MSVC的对应关系:Cuda Toolkit Release Notes,根据自己要装的cuda版本,去选择显卡驱动的版本。

3. 性能测试

3.0 理论值

搜索Google可以查到,

i7-8550u自带的集显UHD 620理论算力应该在 430 GFlops 左右,

而Geforce MX150的理论算力应该在 1,177 GFlops 左右,

因此独显比集显的理论倍数大约应为2.7倍左右,

下面进行测试。

3.1 pycuda性能测试

这里的测试用例来自这位csdn的朋友的文章:pycuda 之 安装与简单使用,基本就是两个长向量加加减减再求内积,N为原始向量长度。

注:这里碰到一个bug:

nvcc fatal : Cannot find compiler 'cl.exe' in PATH

错误原因是C++编译器cl.exe不在系统环境变量里,解决方法是把带有cl.exe编译器的目录,放进PATH中,然后重启计算机即可。

这里根据我的VS 2019版本,添加的路径为:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\bin\Hostx64\x64

测试结果:

------------1---------------
N = 10485760
gpu run time 0.064494 seconds
cpu run time 0.144696 seconds
-0.0014648438 0.001953125
------------2---------------
N = 20971520
gpu run time 0.125063 seconds
cpu run time 0.302542 seconds
-0.0014648438 0.0014648438
------------3---------------
N = 31457280
gpu run time 0.187235 seconds
cpu run time 0.439143 seconds
-0.0014648438 0.0014648438
------------4---------------
N = 41943040
gpu run time 0.250251 seconds
cpu run time 0.567680 seconds
-0.0014648438 0.0014648438
------------5---------------
N = 52428800
gpu run time 0.311149 seconds
cpu run time 0.697281 seconds
-0.0014648438 0.0014648438
------------6---------------
N = 62914560
gpu run time 0.375471 seconds
cpu run time 0.857080 seconds
-0.0014648438 0.0014648438
------------7---------------
N = 73400320
gpu run time 0.434704 seconds
cpu run time 1.031650 seconds
-0.0014648438 0.0014648438
------------8---------------
N = 83886080
gpu run time 0.844024 seconds
cpu run time 1.146626 seconds
-0.0014648438 0.0014648438
------------9---------------
N = 94371840
gpu run time 1.228094 seconds
cpu run time 1.327372 seconds
-0.0014648438 0.0014648438

然后往后跳过了一些:

------------15---------------
N = 157286400
gpu run time 0.938998 seconds
cpu run time 2.088095 seconds
-0.0014648438 0.0014648438
------------16---------------
N = 167772160
gpu run time 1.682067 seconds
cpu run time 2.222236 seconds
-0.0014648438 0.0014648438
------------17---------------
N = 178257920
gpu run time 1.728806 seconds
cpu run time 2.381657 seconds
-0.0014648438 0.0014648438

直接跳到20:

------------20---------------
N = 209715200
gpu run time 1.238891 seconds
cpu run time 3.056840 seconds
-0.0014648438 0.0014648438

21就OOM了:pycuda._driver.MemoryError: cuMemAlloc failed: out of memory

可以看到在pycuda的测试用例中,GPU的速度基本上在CPU的1.5-2.7倍左右,偶尔不稳定。

3.2 xgboost性能测试

xgboost的测试用例来自xgboost官方github:https://github.com/dmlc/xgboost/tree/master/tests/benchmark 中的benchmark_tree.py,用hist方法对750000×50的随机矩阵进行500次的迭代查找分割点。

测试结果:

hist 118.29 s
gpu_hist 48.70 s

可以看到在xgboost的测试用例中,GPU的速度大概是CPU的2.5倍左右,基本符合理论值。

注:关于如何查看是否成功开启CUDA GPU加速,我这边踩了个坑,记录了下来,具体可以查看我的另一篇文章:

XGBoost源码编译教程,以及编译后.dll文件下载

4. 总结

虽然笔记本很破,但cuda还是可以玩的!折腾至上!

通过此次测试,一方面熟悉了windows上cuda环境的部署,另一方面也对显卡的计算力有了一个更直观的了解,比如通过TechPowerUp提供的相对性能表,就可以很容易的推算出与各大主流显卡的性能差距,进而选择合适的升级方案了。

另:MX150这块卡应该算是主流的顶配轻薄游戏本上的常见配置了(MX150市面上有2款,一款满血版25w的,另一款10w续航版,后者性能很差,机械革命s1的是前者),这里我根据相对性能列了一张表,大家可以参考一下:

显卡算力对比(MX150为基准)
i7-8550u (with UHD 620) 0.37
MX150 1倍
1050 1.9

1060

3.78
1070 5.1
1080 6
1080Ti 7.65
2060 6
2070 7
2080 8.22
2080Ti 9.62
Tesla M60 3.38
Tesla P4 3.85
Tesla P40 7.90

Tesla P100-PCIe-16GB

(Kaggle Kernel配置)

6.42
Tesla K40 3.38
Tesla K80 (Colab旧配置) (无数据,理论上是2块K40的叠加: 6.76)
Tesla T4 (Colab新配置) 7
Tesla v100 (Baidu AI Studio配置) 10.57

(实际性能不一定同理论一样,有文章就反映说Colab的T4比他本地的1080Ti慢了将近2倍,所以仅供参考,实际性能还要和环境,CPU,内存等挂钩)

5. Colab, Kaggle, Baidu AI Studio 上 GPU Kernel性能大对比

基于Xgboost的基准测试:

Colab hist (with CPU Kernel) 183.20 s
Colab hist (with GPU Kernel) 137.50 s
Colab gpu_hist (with GPU Kernel Tesla P4) 14.54 s
Kaggle hist (with CPU Kernel) 109.93 s
Kaggle gpu_hist (with GPU Kernel Tesla P100) 7.09 s
Baidu AI Studio gpu_hist (with GPU Kernel Tesla V100) 4.09 s

 

你可能感兴趣的:(人工智能,开发,Python)