电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

用OpenACC指令将程序速度提升2倍

用OpenACC指令将程序速度提升2倍_第1页
1/8
用OpenACC指令将程序速度提升2倍_第2页
2/8
用OpenACC指令将程序速度提升2倍_第3页
3/8
Http://bbs.gpuworld.cn[NVIDIA编程教程]用 OpenACC 指令将程序速度提升 2 倍在这个帖子里,我将继续我前面的话题[编程教程]OpenACC:DirectivesforGPUs, 我将提供一个更为实在的例子.这个简单的 C/Fortran 代码例子实现了 2 倍的速度提升,而仅仅填加了几行 OpenACC 指令.在下一个帖子里,我将增加多一些指令,让速度提升到 4 倍.关于代码您可以在这里浏览和下载所有例子中的代码 ParallelForall GitHub repository. 里面的目录里已经对每个 Step 都有个子目录,有这个步骤的原始代码和 Makefiles,这样你可以看并且尝试每一个步骤 (step1,step2).这个例子是使用 OpenACC1.0syntax ,因 此 你 需 要 安 装 编 译 器 , 我 使 用 的 是 PGIcompiler version 12.2 (sisiy:目前已经升级到 12.3,可以在本论坛里下载)Jacobi 迭代让我们来看看一个较为有趣的例子。这仍然是一个简单的程序,但它给我们多一点空间探索各种 OpenACC 指令和选项。 Jacobi 迭代法是标准的找到解决线性方程组的迭代法。在这个帖子里,我将利用现有的,简单的两维 Jacobi 迭代 CPU 串行程序,,使用 OpenMP 和 OpenACC优化。这个例子的计算内核如下所示。外层 while 通过比较计算误差与指定的误差 tol 范围遍历循环,直到得到一个收敛的解决。由于基准的目的,我们已经设置了足够低的 tol,来确保外层循环的最大迭代次数 iter_max(1000),第一层嵌套循环,在第 5 行到 11 行对二维网格内的没个元素应用二维 Laplace 算子,从 14 到 18 行将返回值 copy 给下一次迭代输入,对于基准测试,我们使用一个 4096X4096 的网格元素Http://bbs.gpuw orld.cn这是同样的Fortran 代码:Http://bbs.gpuw orld.cn为了确保我们正使用所有的 CPU内核,以确保我们的比较是公正的,我们在每个循环嵌套使用 OpenMP并行指令(在 C代码中的#pragma语句以及 Fortran代码中的!$omp)。 OMP并行指令指示编译器在以下的循环中并行使用 CPU线程(OMP_NUM_THREADS环境变量中指定线程数)。我们还可以使用 PGI的快速编译器选项,以获得最佳的 CPU代码优化,包括在可能的情况下生成 CPU向量指令(例如:SSE)。此选项使得性能有很大的区别,在这个代码里,它不会明显影响精度。PGI编译器还可以自动用一个优化的内存副本取代最里面的副本循环。下表显示了在一个四核 IntelXeonX5550CPU(2.66GHz)的系统上使用1,2和4个线程...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

用OpenACC指令将程序速度提升2倍

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部