清华大学副教授都志辉讲座笔记

本文讨论了将MPI并行代码移植到CUDA过程中遇到的问题及解决方案。指出直接移植会导致计算错误,建议采用单元拆分的方式逐步分析和重写代码。同时介绍了如何针对GPU优化数据结构,以及何时使用CUDA或OpenACC来提升性能。

第一版中,讲MPI并行代码直接用cuda重写,一个月完成,发现有大量计算错误,并且不能排查。(结果不一样原因就是移植的代码错了,因为移植过程不可能完全想明白程序逻辑,总会有各种各样的问题出来,这也是大型应用程序移植的难点)

第二版中的解决方法就是要做单元拆分。并且一直的时候分析代码并重写,写成适合cuda计算的数据结构。

在能提升性能地方的代码用cuda一直,没有什么提升余地的地方用OpenACC。即使有些代码在一直到GPU上提升不大也要移植,因为这样需要CPU和GPU之间进行数据交换,这个数据交换的开销非常大。nvlink在数据交换的时候性能提升非常大。

对于大型程序来说,找到真正能提升性能的地方是非常难的。

大部分时候,CPU代码在移植到GPU上的时候都要进行数据结构的重组,不然会对性能有负影响。

性能优化的三个方面:应用、算法、硬件体系结构。

对写论文吧来说:在优化之前或者优化过程中提很多问题,把这些问题弄明白以后,有了优化结果,就容易找到创新点。他们之前也容易犯一种错误:一上来有一个任务就搞,搞快一点就可以了,虽然最后搞出来。但没有反思这么做有什么好处,为什么这么做,有没有什么别的更好的方法,这个方法的瓶颈和极限在哪里。

中文版mpi编程手册 写得很详细 都志辉编著 李三立审阅 陈渝刘鹏 校对 本书介绍目前最常见的并行程序—MPI并行程序的设计方法它适合高校三四年级本科 生非计算机专业研究生作为教材和教学自学参考书也适合于广大的并行计算高性能计 算用户作为自学参考书使用对于有FORTRAN和C编程经验的人员都可以阅读并掌握 本书的内容 首先介绍了并行程序设计的基础提供给读者进行并行程序设计所需要的基本知识然 后介绍了MPI的基本功能从简单的例子入手告诉读者MPI程序设计的基本过程和框架 这一部分是具有C或/FORTRAN串行程序设计经验的人员很容易理解和接受的接下来介绍 MPI程序设计的高级特征是已经掌握了MPI基本程序设计的人员进一步编写简洁高效的 MPI程序使用各种高级和复杂的MPI功能所需要的最后一部分介绍了MPI的最新发展和 扩充MPI-2 主要包括三个部分动态进程管理远程存储访问和并行文件读写 本书包括了MPI-1的全部调用和MPI-2的关键扩充部分的调用并附以大量的图表和示 例性程序对程序的关键部分给出了讲解或注释读者若能将例子和对MPI调用的讲解结合 起来学习会取得更好的效果 本书的目的不仅是教给读者如何去编写从简单到复杂的MPI并行程序更重要的是 希望在学习本书之后在读者以后解决问题的过程中能够树立并行求解的概念使并行方 法真正成为广大应用人员和程序开发员手中的重要工具
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值