计算化学公社

 找回密码 Forget password
 注册 Register
Views: 19415|回复 Reply: 16
打印 Print 上一主题 Last thread 下一主题 Next thread

[GPU加速] 简单对比了一下GPU与CPU的速度

[复制链接 Copy URL]

103

帖子

5

威望

1000

eV
积分
1203

Level 4 (黑子)

跳转到指定楼层 Go to specific reply
楼主
最近刚装了google专门为机器学习开发的python库tensorflow,可以利用GPU来加速计算。简单对比了一下tensorflow,numpy和手写的C++双精度矩阵乘法的速度,结果如下:
电脑配置:
cpu: Xeon E5-2609 v3 @ 1.90GHz
内存:单通道DDR4 16GB 2133MHz
显卡:NVIDIA Quadro K2200(双精度浮点性能大概是0.24TFlops)
----------------------------------------------------------------------------------------
手写单核for循环C++,1000*1000的两个矩阵相乘:146秒
在天河二号上运行:8秒(cpu:E5-2692)
----------------------------------------------------------------------------------------
使用numpy库,10000*10000矩阵:13秒(6核并行)Matlab,10000*10000矩阵:13秒(6核并行)
使用tensorflow库,10000*10000矩阵:0.002秒

----------------------------------------------------------------------------------------
这个结果还是挺吃惊的,numpy底层使用C++编写,使用了BLAS库,即使用C++和BLAS库也快不了多少了,然而比起GPU却依然慢了几个数量级。
CPU发展已经快到头了,反观GPU计算才刚刚开始起步。现在NVIDIA借着机器学习的浪潮在GPU领域不断发力,去年NVIDIA发布的计算卡P100,双精度浮点性能达到了5.3TFlops。

Gaussian, vasp之类的软件也纷纷搞起了GPU计算,虽然效果一般,但这肯定是将来发展的方向了。


77

帖子

0

威望

2702

eV
积分
2780

Level 5 (御坂)

2#
发表于 Post on 2017-11-17 17:10:25 | 只看该作者 Only view this author
就现在来说,波函数求解需要迭代这个限制了量化类的程序GPU不是太合适。

403

帖子

4

威望

2874

eV
积分
3357

Level 5 (御坂)

3#
发表于 Post on 2017-11-17 21:08:08 | 只看该作者 Only view this author
正好最近在学MPI,基于mpi4py写了个手动并行版:

  1. #! /usr/bin/env python

  2. import numpy as np
  3. from mpi4py import MPI

  4. # Initialize MPI environment
  5. comm = MPI.COMM_WORLD
  6. rank = comm.Get_rank()
  7. size = comm.Get_size()

  8. # Generate a random matrix
  9. dim = 1000
  10. if rank == 0:
  11.     mat_a = np.random.random((dim, dim))
  12.     mat_b = np.random.random((dim, dim))
  13. else:
  14.     mat_a = np.empty((dim, dim), dtype='float')
  15.     mat_b = np.empty((dim, dim), dtype='float')
  16. comm.Bcast(mat_a, root=0)
  17. comm.Bcast(mat_b, root=0)

  18. # Distribute jobs among processes
  19. if rank == 0:
  20.    jobs = [[i for i in range(dim) if i % size == k] for k in range(size)]
  21. else:
  22.    jobs = None
  23. jobs = comm.bcast(jobs, root=0)


  24. # Multiply the matrices
  25. mat_work = np.zeros((dim, dim), dtype='float')
  26. rows = jobs[rank]
  27. for i in rows:
  28.     np.matmul(mat_a[i,:], mat_b, out=mat_work[i,:])

  29. # Collect the results
  30. if rank == 0:
  31.     prod = np.zeros((dim, dim), dtype='float')
  32. else:
  33.     prod = None
  34. comm.Reduce(mat_work, prod, root=0)
  35. #if rank == 0:
  36. #    print(mat_a)
  37. #    print(mat_b)
  38. #    print(prod)
复制代码


服务器都排满了任务,放虚拟机里试了一下(i3-4160)。
1000*1000矩阵相乘,用两个进程花两秒多一点,再大的就测不动了。

516

帖子

1

威望

5052

eV
积分
5588

Level 6 (一方通行)

4#
发表于 Post on 2017-11-18 05:36:47 | 只看该作者 Only view this author
不知道GPU在运算的时候能不能指定运行所用的核心数,如果可以的话,不知道楼主可不可以给个数据,或者测试一下核心数对运行速度的影响。
我用CPU曾经做过测试,9000*9000的矩阵相乘,用12核的时间是比6核的时间要长的。(Fortran,Intel编译器,Intel MKL)

353

帖子

0

威望

2027

eV
积分
2380

Level 5 (御坂)

真 掘墓者

5#
发表于 Post on 2017-11-18 14:05:56 | 只看该作者 Only view this author
本帖最后由 kyuu 于 2017-11-19 15:53 编辑

我们昨天刚买了252块P100,可是并没有任何卵用
圣诞刨坟忙

136

帖子

3

威望

4184

eV
积分
4380

Level 6 (一方通行)

6#
发表于 Post on 2017-11-18 18:28:23 | 只看该作者 Only view this author
kyuu 发表于 2017-11-18 14:05
我们昨天刚买了225块P100,可是并没有卵用

目前的超算资源没有P100,你们组真土豪啊~~
不知道P100要是拿来跑MD(单精度就够),速度上会不会比1080类的家用卡快。。。

353

帖子

0

威望

2027

eV
积分
2380

Level 5 (御坂)

真 掘墓者

7#
发表于 Post on 2017-11-19 07:17:09 | 只看该作者 Only view this author
本帖最后由 kyuu 于 2017-11-19 07:28 编辑
laoman 发表于 2017-11-18 18:28
目前的超算资源没有P100,你们组真土豪啊~~
不知道P100要是拿来跑MD(单精度就够),速度上会不会比1080 ...


PERFORMANCE SPECIFICATION FOR NVIDIA TESLA P100 ACCELERATORS

P100 for PCIe-Based
Servers
P100 for NVLink-Optimized Servers
Double-Precision Performance
4.7 TeraFLOPS
5.3 TeraFLOPS
Single-Precision Performance
9.3 TeraFLOPS
10.6 TeraFLOPS
Half-Precision Performance
18.7 TeraFLOPS
21.2 TeraFLOPS
NVIDIA NVLink™ Interconnect Bandwidth
-
160 GB/s
PCIe x16 Interconnect Bandwidth
32 GB/s
32 GB/s
CoWoS HBM2 Stacked Memory Capacity
16 GB or 12 GB
16 GB
CoWoS HBM2 Stacked Memory Bandwidth
732 GB/s or 549 GB/s
732 GB/s
Enhanced Programmability with Page Migration Engine
ECC Protection for Reliability
Server-Optimized for Data Center Deployment

单卡单精度与1080Ti持平 但单机上不大可能会做速力
圣诞刨坟忙

136

帖子

3

威望

4184

eV
积分
4380

Level 6 (一方通行)

8#
发表于 Post on 2017-11-19 20:14:47 | 只看该作者 Only view this author
kyuu 发表于 2017-11-19 07:17
PERFORMANCE SPECIFICATION FOR NVIDIA TESLA P100 ACCELERATORS

单卡单精度与1080Ti持平 但单机上 ...

谢谢大神的资料,看来配个1080ti的工作站来跑MD还是挺值得的~

103

帖子

5

威望

1000

eV
积分
1203

Level 4 (黑子)

9#
 楼主 Author| 发表于 Post on 2017-11-19 21:08:39 | 只看该作者 Only view this author
niobium 发表于 2017-11-18 05:36
不知道GPU在运算的时候能不能指定运行所用的核心数,如果可以的话,不知道楼主可不可以给个数据,或者测试 ...

我刚开始用,能否指定核心数不清楚。
同核心数比较完全没有意义,肯定是CPU快。GPU之所以快就是因为核心数远多于CPU.
至于12核比6核时间长可能是因为矩阵太小的关系,这个现在我在用vasp计算的时候也见过。矩阵太小而核数太多的话,分配任务会占用过多时间,而真正用来计算的时间很少,导致总耗时增加。

103

帖子

5

威望

1000

eV
积分
1203

Level 4 (黑子)

10#
 楼主 Author| 发表于 Post on 2017-11-19 21:09:36 | 只看该作者 Only view this author
kyuu 发表于 2017-11-18 14:05
我们昨天刚买了252块P100,可是并没有任何卵用

现在的量化程序对GPU支持都一般吧,相对好一点的可能也就是vasp了

103

帖子

5

威望

1000

eV
积分
1203

Level 4 (黑子)

11#
 楼主 Author| 发表于 Post on 2017-11-19 21:15:17 | 只看该作者 Only view this author
wgbigfatcat 发表于 2017-11-17 17:10
就现在来说,波函数求解需要迭代这个限制了量化类的程序GPU不是太合适。

迭代每一步照样也得求矩阵,没什么不合适的。vasp用GPU之后提速明显。

103

帖子

5

威望

1000

eV
积分
1203

Level 4 (黑子)

12#
 楼主 Author| 发表于 Post on 2017-11-19 21:18:18 | 只看该作者 Only view this author
万里云 发表于 2017-11-17 21:08
正好最近在学MPI,基于mpi4py写了个手动并行版:

numpy或者tensorflow一行代码就搞定了。
我没写过计算类程序,不知道自己写的计算小程序是否可能被numpy替代?

103

帖子

5

威望

1000

eV
积分
1203

Level 4 (黑子)

13#
 楼主 Author| 发表于 Post on 2017-11-19 21:20:01 | 只看该作者 Only view this author
kyuu 发表于 2017-11-19 07:17
PERFORMANCE SPECIFICATION FOR NVIDIA TESLA P100 ACCELERATORS

单卡单精度与1080Ti持平 但单机上 ...

你这张图我才注意到P100单精度就比1080好一点,看样子钱都用来堆双精度了

353

帖子

0

威望

2027

eV
积分
2380

Level 5 (御坂)

真 掘墓者

14#
发表于 Post on 2017-11-20 00:59:47 | 只看该作者 Only view this author
sky 发表于 2017-11-19 21:20
你这张图我才注意到P100单精度就比1080好一点,看样子钱都用来堆双精度了

单精度帕斯卡,双精度特斯拉
圣诞刨坟忙

165

帖子

0

威望

4781

eV
积分
4946

Level 6 (一方通行)

15#
发表于 Post on 2017-11-26 22:36:55 | 只看该作者 Only view this author
kyuu 发表于 2017-11-18 14:05
我们昨天刚买了252块P100,可是并没有任何卵用

这种卡多少米?

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 15:52 , Processed in 0.509490 second(s), 21 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list