选课类别:基础 | 教学类型:理论实验课 |
课程类别:研究生课程 | 开课单位:计算机科学与技术系 |
课程层次:硕士 | 学分:3.5 |
课程目标:“并行程序设计”是计算机专业研究生的专业课程,同时也是《并行计算:结构-算法-编程》精品课程系列中不可或缺的一环。本课程旨在进一步拓展与巩固并行计算的视野和思维,通过强化并行编程实验,夯实科学计算实践所需的基础知识,基本方法与基本技能。
课程任务:
通过本课程的学习,首先,帮助学生理解软硬件之间的互动:底层并行体系结构特征如何影响上层并行程序设计的模型与方法;上层的并行软件和程序设计如何适配并发挥底层硬件特征。其次,帮助学生掌握并行程序设计基本方法,分析描述并行程序性能的关键因素在相关问题实践中是如何表现的。最后,通过在并行计算机上完成若干典型应用的并行编程实现,掌握并行程序的设计、实现、调试和性能优化技术。
课程内容:
郑启龙老师的《并行程序设计》课程涵盖并行计算中依赖关系分析、OpenMP和MPI编程,重点在MPI。课程内容相对基础,但作业和实验较多,课程周期紧凑。部分学生认为课程与本科徐云老师的并行计算内容有重叠,教学过程主要是对着PPT讲解,略显单调。
课程总体评价不高,学生反馈上课时PPT质量一般,且老师通常是从头念到尾。有同学表示课程容易让人昏昏欲睡,但课程不点名,且上课时间管理宽松,郑老师很少上满两小时,还会提前下课。部分课时用于做实验。
作业和实验的内容相对复杂,但数量适中。一项书面作业主要涉及依赖关系分析,此外还有两个OpenMP和MPI编程的大作业和一个结合研究方向的自选题。作业题目多,但和往年几乎相同,可以参考前人经验。学生普遍认为MPI的大作业花费时间较多,但通过作业对考试准备有一定帮助。
期末考试题量较大,主要包括依赖关系分析和MPI编程等。学生普遍反映考试题型与往年类似,有参考往年试卷的机会。考前会发放往年试卷,考试时也给出MPI函数原型,方便临场应对。郑老师一开始就表明没有学生在这门课上挂过科,对分数不必过分担心。但有学生发现考试内容偏难,实际分数不如预期。
助教的表现征求较多批评。有些学生提到助教在期末阶段的支持不足,不公布作业答案,答疑不主动。学习资源方面,老师有推荐了额外的参考资料,例如OpenMP和MPI的相关学习文章和教程。
《并行程序设计》课程适合对并行计算有兴趣并愿意投入时间的学生。虽然课程内容基础,作业和考试较为繁重,但没有挂科压力。对于习惯自学的同学尤其有利,因为课程提供的资源和往年经验相对丰富,足以应对考核。需要注意的是,教学形式略显枯燥,教师和助教在答疑和支持上的表现不如人意。
学期刚开始上就绷不住了,跟编译原理课一样让人昏昏欲睡,作业还是一如既往地阴间,估计实验也差不多,不是实验室要求选这门课早就润了。课还没上完,一边上一边补充。
有些作业题怎么恶心人怎么来,完全不考虑正常人会不会这样写。为了难而难,导致作业中还有题目做不了,美其名曰让你们多思考思考。
期末更新:经典摆烂助教,不公布作业答案,让大家伙自己互相讨论分析,考试题型一问不知道,我们并行程设真是太厉害啦。
考完更新:期末考试前一个小时才拿到往年试卷,还不是助教发的。总有人把资料藏着掖着,这不好。
2023.3.25:春学期的课已经上了三周了,这门课还是没有出成绩,就嗯拖
【课程主页】
http://staff.ustc.edu.cn/~qlzheng/pp11/
【内容】
依赖关系 + 编程课。依赖关系用于拆循环。编程用的是OMP(多线程),MPI(分布式)。MPI是难点和重点。
郑老师人很nice,还带我们参观了位于东区图书馆的并行计算中心。
【资源】
OMP看下这篇文章 https://zhuanlan.zhihu.com/p/61857547
MPI先通过这个tutorial熟悉 https://mpitutorial.com/tutorials/
这个tutorial主要是非数值模拟。数值问题见课上的Cannon算法,以及各种矩阵计算并行问题。
【作业】
布置了两三次作业,大作业是老师出的题+书上的题+结合研究方向的自选题。
【期末】
今年(2019-2020)的并行期末,题量有点大。虽然只有四大题:
一、给了三个循环,分析依赖关系,用OMP并行。30分
二、MPI统计data[1000]能被3整除的数据项的id,要求两种方法。30分
三、给了个矩阵计算的程序,两层循环,大概是B[i,j] = A[i-1, j] + A[i, j+1] + A[i+1, j-1],要求实现行块划分、棋盘划分两种MPI程序。30分
四、Floyd算法,本质还是矩阵划分MPI,难点是怎么计算dij = min{dij, dik+dkj},考虑dik, dkj不会同时被一个进程拿到。10分
综上,矩阵运算MPI实现考了3题,虽然只占40分,多刷刷这类题,简单矩阵乘行块划分、棋盘划分Cannon算法、Floyd MPI实现等。
【相关课程】
陈国良老师的四本并行书中的《并行算法实践》,研一下还有一门课“并行算法”,对应《并行算法的设计与分析》。
优点如下:
槽点如下:
课程主页:http://staff.ustc.edu.cn/~qlzheng/pp11/
以下是大致情况供后来人参考:
1.郑老师2个半小时不会下课的,就是ppt从头念到尾润了。
2.课程确实水,从不点名,一次纸质作业,主要内容是分析依赖关系,有2-3题题目质量极差;实验内容是openmp + mpi + 自选内容,mpi实验部分很花时间。
3.个人不是研究这个方向的,网络上自学材料很少(如果实在想选就参考19年秋的前辈的资料学习就行,甚至不需要怎么看ppt),老师给的参考书目内容都不全,期末考试基本只能努力挖掘自己的自学潜力。
4.ppt质量很差,我觉得不能算是一个合格的技术文档。
5.老师第一节课就说这个课从来没人挂过科,但我个人觉得该课程的定位很尴尬:因为如果是研究这个方向的,自学CMU15-418效果肯定比这门课好的多;如果想水学分,这门课期末不给考试题型,不给作业答案,不提供任何复习指导,比起在这里揣度老师是否会继续坚持所谓的 “没有人挂过科” ,选择一门体验更好的课程不好么?
6.该门课的助教期末直接消失,只会回答一些平常的教务问题,不回答任何课程内的问题。
(期末考试及给分具体情况待更新)
-----------
2023.2.17 更新课程基本情况
2023.2.20 更新助教情况
课堂:不点名,小一半的课提前20~30分钟就下课了,后几次课的时间直接用来做实验了
作业:一次数据依赖的作业(四个文件里的题,作业量可以理解为别的课程四次),不评讲,不公布答案,抽取同学以上台交流
实验:三个公共题目+每人分配三个书上算法实现+结合研究方向实现一个程序。抽取同学上台分享。横向对比3.5学分的课程,实验量相较于CSAPP那种课程还是要少的,但由于有结合个人研究方向的自己编写的程序,和高级数据库系统或者机器学习与知识发现这样能找到实验源码的课程来比还是略多一点
成绩:虽然上课说了没挂过人吧,但是以我考试每道题都完成了的情况下来看给的成绩远低于预期。大部分同学提前交卷的时间来看应该都没写完就交了,私以为能拿个还不错的分数结果却不尽如人意。只能说要求仅仅是“及格就行”的同学来说还不错,但是高分困难。
非常适合水学分的课
作业一次,量有点大,只涉及一份PPT内容,一天能写完
大作业114514年没变过,难度低,要写的代码很少,主要是分析加速比
期末只需要复习三份PPT(并行矩阵乘法最好也看看),其中两份分别是mpi和openmp,算是比较基础的并行编程方法,学了没坏处
期末考试题目可参考评课社区往年试卷,差不多的
从来没去过,不知道点不点名
给分不清楚,听说从不挂人。个人正常完成实验,复习一天,看了往年卷,总评90左右
12月左右老师会抽人上去讲作业和实验,好像可以不去,去了有加分
zql教的东西虽然很神秘,但人还是挺好的
老师讲课比较催眠,中途不下课会一直讲。课程不点名。
老师第一次课就说从来没挂过人,事实来看,确实是的。
作业:一次,题目非常多,不过和往年一样,可以借鉴。
实验:自己做,写报告,和往年基本一样,个别题目略有改动。
考试:闭卷,我记得我考试空了非常多,写了就一点,结果分数也还行。除非旷考不然都能过。
课程内容其实也都不是什么新鲜玩意儿了,主要就是依赖关系,依赖关系在组成原理/体系结构中就已经接触过了,无非是粒度之间的差别。也就依赖关系要费点心思,依赖关系学好后剩下的东西水到渠成。
依赖关系是编写并行代码的基础,omp没什么东西的,当分析清楚依赖关系之后,在现成的串行代码上稍微改改就可以了。
MPI编程确实很麻烦,代码得大改,但作为一个通讯协议,熟悉好API,写点代码练练手就能掌握。考试也是MPI考的多,今年考试一半的分数给了分析依赖关系,剩下的一半里有一大半给了MPI,omp只占很少一部分。MPI好好学用处还是很大的,至于omp么,不如去学个cuda编程了。在这里强烈推荐一下微电子学院的GPU并行计算,挺有用的。
老师第一次上课就说过这门课从来没让学生挂过,在考场里也说不用担心分数。
回忆一下今年的期末题目: 第一题,给了一些循环判断依赖关系,画语句依赖图,并行化。 第二题,给出复数结构体的定义,用MPI定义复数类型和复数加法。PPT上有定义复数乘法的例子。 第三题,canno矩阵乘法,各个分块连续分布的示意图。课程主页上有。 第四题,给了自然对数的级数展开,要求用MPI并行(两种划分方法)或OpenMP的critical制导语句并行。不太会,乱写了一通。
这门课程如何,其他回答说的很客观了。
总评70,绝了,没有比我再低的了吧;我作业和实验都有认真写,最后卷面成绩可能比较差;
说实话课程不太容易,作业也比较多。
但这课还是比较推荐的,据老师说这个课开课以来没人挂过科。就个人而言,考试有半面都空着没写,最后总评近80,实属水学分利器。