欢迎来到南京大学天文与空间科学学院网站!

CUDA Based Class - Parallel Programming on Multi-core Processors

发布时间:2016-01-01 23:11来源:未知 责任编辑:administrator

并行计算程序设计教学大纲(研究生)

课程编号:空      课程性质:     课程学分:课内总学时:

授课方式: 本课程以课堂讲授为主,课后project为辅

 

一、课程目的与要求

并行硬件已经在当下十分普及,尽管许多程序在单核上获得了较满意的性能,但是并行化有潜力能够使得性能得到更大幅度的提高,与此同时,云计算的出现使得分布式内存系统与台式机一样便于访问。

本门课全面涵盖了并行软件和硬件的基本,深入浅出地介绍如何使用MPI(分布式内存编程)、Pthreads和OpenMP(共享内存编程)编写高效的并行程序。课程的后半部分介绍近年来新兴的基于GPU的高性能计算,介绍了如何用CUDA架构充分发挥GPU的强大计算功能,然后在每部分结束后通过简单的编程练习加强对并行编程的理解。

本课程是一门理论与实践相结合的课程,通过本课程的学习,使学生了解并行硬件和软件的基本构架,熟练掌握三个广泛应用在并行编程中的应用程序编程接口(MPI, Pthreads and OpenMP),并能够进行一些常用算法的程序优化,同时能够初步掌握GPU为高性能计算的优势,以及运用CUDA C中每个功能的适用场合,并编写出高性能的CUDA程序。

二、课程教学的基本要求:

1.本课程以课堂讲授为主,辅以一定数量的课后练习和针对一些实际问题的讨论和presentation,并会在课程中间和结束课程后安排个人或者小组一起完成的project,使学生在解决实际问题中得到锻炼,提高他们思考问题和解决问题的能力。教学中力求注意理论联系实际,强调对并行计算的理解和结合实际问题的讨论。

2.本课程教学过程中,在各种分布式编程章节都会辅以一些简单的小程序加强对课程的理解和运用,会针对一些难点进行指导和小组讨论,并能够提出针对自己课题的一些优化方法。每一个大的章节课时结束后都会安排学生课后阅读一些最新的paper,并能够在下一次课开始前15分钟给大家做一个简短的presentation,能够把握最新的并行计算动态以及提高presentation的能力。

3.本课程考核的形式:平时课后作业和presentation占30%,期末考试成绩占30%,project占40%。如果能够将并行计算应用于课题,并能够进行优化,是这节课最大的收获。  

三、课程内容和学时分配

第一部分 并行计算概述

第一章  为什么要并行计算                                    

第二章  并行硬件和并行软件                                 

---- 课后阅读papers

第二部分 并行程序设计

第三章  用MPI进行分布式内存编程                       

----  用MPI实现2.7.1节讨论的直方图程序,进程0读取输入的数据, 并将它们分配到其余进程,最后进程0打印该直方图。

第四章  用Pthreads进行共享内存编程                     

----  用Pthreads实现2.7.1节讨论的直方图程序,进程0读取输入的数 据,并将它们分配到其余进程,最后进程0打印该直方图

第五章  用OpenMP进行共享内存编程                        

----  用OpenMP实现2.7.1节讨论的直方图程序,进程0读取输入的数

据,并将它们分配到其余进程,最后进程0打印该直方图

 

第六章  并行程序开发实例                                

第三部分 CUDA 程序设计

第七章  基于GPU进行并行计算                               

第八章  CUDA体系结构和程序设计                             

第九章  CUDA实例分析                                     

第十章  CUDA Fortran

第十一章 CUDA Debug

四、教材

1.  An Introduction to Parallel Programming  Peter S. Pacheco, China Machine Press

及其中文影印版

 

2.  CUDA by Example  Jason Sanders, Edward Kandrot,  Morgan Kaufmann / NVIDIA

及其中文影印版

 

3. 高性能计算之并行编程技术----MPI并行程序设计, 都志辉著

4. Programming Massively Parallel Processors: A hands-on Approach, Second Edition  David B.Kirk, Wen-mei W.Hwu,  Morgan Kaufmann / NVIDIA

及其中文影印版

 

五、参考书目:

1. Structured Parallel Programming: Patterns for Efficient Computation   Michael McCool , James Reinders , Arch Robison   Morgan Kaufmann

2. Parallel Programming: for Multicore and Cluster System,  Thomas Rauber and Gudula Rünger , Springer

3. 并行计算-结构,算法,编程, 陈国良, 高等教育出版社

4. 并行计算导论                张林波,迟学斌, 清华大学出版社

5. 高性能并行计算              迟学斌