乐趣区

关于程序员:基于CUDA的GPU计算PI值

拜访【WRITE-BUG 数字空间】_[内附残缺源码和文档] 基于 CUDA 的 GPU 计算 PI 值。本我的项目应用 CUDA 编程模型并行计算 PI 值,钻研 GPU 与 CPU 效率的比拟,剖析不同 GPU 线程分块对性能的影响。异构计算试验报告 — 试验 1:基于 CUDA 的 GPU 计算 PI 值

第一局部:试验环境 OS:Windows 10CPU:intel(R) Core(TM) i7-10510U CPU@mailto:CPU@ 1.80GhzGPU:NVIDIA GeForce MX250 编译器:cl :v19.29.30133nvcc:Cuda compilationn tools, release 11.4, V11.4.120 第二局部:试验内容应用 CUDA 编程模型并行计算 PI 值,钻研 GPU 与 CPU 效率的比拟,剖析不同 GPU 线程分块对性能的影响第三局部:试验原理数学原理为 1 积分求解

​编辑切换为居中增加图片正文,不超过 140 字(可选)2 幂级数求解

​编辑切换为居中增加图片正文,不超过 140 字(可选)应用 CUDA 编程模型,程序执行过程为 CUDAMALLOC -> CUDAMEMCPY(HTOD) ->KERNEL->CUDAMEMCPY(DTOH)

在执行和函数时指定 <<<grid,block>>> 来控制线程的数量和构造第四局部:性能剖析# define N 迭代次数

1 CPU VS GPU1.1 单核比拟 N = (10001000100)=100MCPU(thread = 1):4.887(s)GPU(grid = 1,block=1):用时过长.. 无奈测量 1.2 多核比拟首先要施展出最大的 CPU 性能,因为机器的 CPU 是逻辑 8 核的,所以实践上开启 8 个线程能够施展最大性能。所以我写了一个 8 线程并行的程序来计算,同样循环 N=(10001000100)次

​编辑切换为居中增加图片正文,不超过 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)

​编辑切换为居中增加图片正文,不超过 140 字(可选)一共用时:34.5556s 线程数:10 能够留神到,在本程序中,次要的工夫是耗费在计算上的,因为没有什么要拷贝的内存,所以瓶颈只会呈现在计算上 2.2 grid=(1,1,1) block=(100,1,1)

​编辑切换为居中增加图片正文,不超过 140 字(可选)一共用时:2.58383s 线程数:1002.3 grid=(1,1,1) block=(1000,1,1)

​编辑切换为居中增加图片正文,不超过 140 字(可选)一共用时:1.543s 线程数:1000 每个 block 的最大线程数限度是 1024,这里就不能再减少 block 了

退出移动版