首页 > 图灵资讯 > 技术篇>正文

基于CUDA的GPU计算PI值

2023-05-04 10:15:50

访问【WRITE-bug数字空间]_[完整的源代码和文档]

基于CUDA的GPU计算PI值。本项目采用CUDA编程模型并行计算PI值,研究GPU与CPU效率的比较,分析不同GPU线程块对性能的影响。

异构计算试验报告

---实验1:基于CUDA的GPU计算PI值

第一部分:实验环境

OS:Windows 10

CPU:intel(R) Core(TM) i7-10510U CPU@mailto:CPU@ 1.80Ghz

GPU:NVIDIA GeForce MX250

编译器: cl :v19.29.30133

nvcc:Cuda compilationn tools, release 11.4, V11.4.120

第二部分:实验内容

使用 CUDA 并行计算编程模型 PI 值,研究 GPU 与 CPU 对不同效率的比较和分析 GPU 线程分块对性能的影响

第三部分:实验原理

数学原理为

1 积分求解

基于CUDA的GPU计算PI值_并行计算

编辑切换到中间

添加图片注释不得超过 140 字(可选)

2 幂级数求解

基于CUDA的GPU计算PI值_CUDA_02

编辑切换到中间

添加图片注释不得超过 140 字(可选)

使用 CUDA 程序执行过程为编程模型

CUDAMALLOC -> CUDAMEMCPY(HTOD) ->KERNEL->CUDAMEMCPY(DTOH)

指定执行和函数 <<<grid,block>>> 控制线程和结构的数量

第四部分:性能分析

# define N 迭代次数

1 CPU VS GPU1.1 单核比较

N = (10001000100)=100M

CPU(thread = 1):4.887(s)

GPU(grid = 1,block=1):用时过长..无法测量

1.2 多核比较

首先要发挥最大的作用 CPU 由于机器的性能 CPU 是逻辑 8 因此,理论上是开放的 8 一个线程可以发挥最大的性能。所以我写了一个 8 计算线程并行程序,循环相同 N=(10001000100)次

基于CUDA的GPU计算PI值_并行计算_03

编辑切换到中间

添加图片注释不得超过 140 字(可选)

可见新时间是 0.768s 快了不少

(PS:使用这里的程序 GCC 编译的,而 CUDA 程序 NVCC 调用的是 MSCV 的编译器,Windows 平台上 NVCC 不支持 GCC,但结果应该是一样的)

2 GPU 性能分析

接下来是找出来 GPU 最高性能。

首先在 grid = 1 下探究 block 线程数对性能的影响。这里可以直接使用 nvprof 分析,非常方便。

2.1 grid = (1,1,1) block = (10,1,1)

基于CUDA的GPU计算PI值_并行计算_04

编辑切换到中间

添加图片注释不得超过 140 字(可选)

共用时间:34.556s 线程数:10

可以注意到,在这个过程中,主要时间消耗在计算上,因为没有内存可以复制,所以瓶颈只会出现在计算上

2.2 grid=(1,1,1) block=(100,1,1)

基于CUDA的GPU计算PI值_CUDA_05

编辑切换到中间

添加图片注释不得超过 140 字(可选)

共用时间:2.58383s 线程数:100

2.3 grid=(1,1,1) block=(1000,1,1)

基于CUDA的GPU计算PI值_CUDA_06

编辑切换到中间

添加图片注释不得超过 140 字(可选)

共用时间:1.543s 线程数:1000

每个 block 最大线程数限制是 这里不能增加1024 block 了

基于CUDA的GPU计算PI值_并行计算_07

基于CUDA的GPU计算PI值_CUDA_08

基于CUDA的GPU计算PI值_并行计算_09

基于CUDA的GPU计算PI值_并行计算_10

上一篇 Apache ServiceMix 初探
下一篇 基于springcloud实现的医院信息系统

文章素材均来源于网络,如有侵权,请联系管理员删除。