选课类别:计划内与自由选修 | 教学类型:理论实验课 |
课程类别:本科计划内课程 | 开课单位:计算机科学与技术系 |
课程层次:专业选修 | 学分:2.5 |
本课程简要讨论并行计算的硬件基础,即当代并行计算机的体系结构模型;着重讨论并行计算的核心内容,即并行算法的设计和典型常用的并行数值算法;以及并行计算的软件支持,即并行程序设计的原理和主要的编程方法。这些内容强调将并行计算机体系结构、并行算法设计和并行编程融为一体,注重讨论并行计算的基本原理与方法,体现出应用问题对并行编程的需要,并力图反映本学科的最新成就与学科发展前沿。
多数学生反馈,孙广中老师的《并行计算》课程课堂内容枯燥,许多同学上课后感到乏味甚至催眠,导致到课人数逐渐减少。课程PPT主要取材自陈国良教授的《并行计算——结构·算法·编程》,而部分内容和某些博客相似。老师讲课语速偏慢,风格发散,一些学生认为其讲授内容浅显,课堂体验不佳。不过,也有学生表示老师在课堂上有时会涉及相关的学术背景和选择研究方向的内容,可以看出老师的讲课风格较为温和和体贴学生。
课程内容涵盖并行计算的基础知识、并行体系结构、并行算法和编程,包括OpenMP和MPI编程。部分学生认为课程内容偏水,学到的知识不多,实验和考试也较为简单,缺乏深度。而对并行计算感兴趣的学生则认为该课程提供了基本的并行计算知识,对于未来从事相关领域有一定帮助。
作业和实验总共四次,作业不难且量少,主要是从往年题目中选取,比较基础。实验本学期有一定改革,实验内容包括:并行计算自然常数e、并行图最短路径算法、并行稀疏矩阵计算以及分布式机器学习。多数实验内容较为简单,设计上缺乏指导性,但第四个实验较为困难且要求较高,后在同学建议下改为选做。这些实验主要考察学生对OpenMP和MPI的熟悉程度,但指导文档较为简略,需学生自学解决问题。
考试闭卷,题型大部分固定,大多为基础知识、加速比计算、并行算法分析和简单的MPI编程,考题较为直接。在考前老师会发放往年试卷并划重点,考试难度不高,考前突击即可应付。总体给分较好,老师能体谅学生且虚心接受意见,部分学生申请查卷后,老师会根据情况调整成绩并提高实验环节的占比。
总体来看,孙广中老师的《并行计算》课程较为水,适合那些希望轻松获得学分的同学。但课程内容和实验的设计有待改进,期待未来能有更多的指导和更高的实验质量。对于真正对并行计算感兴趣并希望深入理解的同学,需要自我驱动,通过课外阅读和自学来提升相关知识和技能。
我只能说GPA之父不再是GPA之父了。 当时选这门课的时候是因为对并行计算很感兴趣所以提前选了这门课,因为听闻老师GPA之父的美名所以就算还是大二也硬着头皮选了,结果在作业实验几乎满分的情况下吃了个3,很难受。 上课也和前几位学长说的一样,非常乏味,上课基本没人听,最后考试也没有区分度,上课的关于openMP的PPT甚至和某篇博客内容基本一样,一学期下来记住的只有gz说的20多年前和某方合作的小故事,不知如何评价。 上课是连上3节加上催眠的语速语调真的很消磨热情,建议别选,一学期学到的和直接看PPT没啥大差别。
申请查卷后老师给奶了一口,老师也在群里说下一次的授课会使用新的讲义,课程内容和考核形式都会有较大的调整,希望老师能让这课更好吧。
不是很懂为什么这门课会有这么多人推荐。
- 课堂:老师讲课可以说是枯燥至极,去了一次就不想去第二次。复习时浏览ppt,感觉相当浅显的内容,在课堂上却一点都听不下去。所幸老师人比较好,不点名。
- 实验:今年这门课最灾难的部分。实验文档极度简化,前三个实验,平均每个只写了五六行的实验要求。MPI与openMP指导:没有,直到理论课程最后几章才讲,然而这时实验基本都做完了。输入数据:没有。算法:自己上网查去。实验报告一堆莫名其妙的要求,还必须写参考文献,不写不给分,但我算个e都要去参考文献吗?最后一个实验更是重量级,并行深度学习。要知道深度学习是隔壁人工智能基础实验二的最后一部分,直到六月底考完试才截止,然而并行计算这边五月底就截止。实验设计者似乎也意识到不妥,中途把这个实验改成了可选,我果断不写。最终结果是实验四根本没占多少分,一些写了的同学总评照样爆炸,白白浪费时间。
- 作业:不多,不难。但助教真的很摸,这么点答案都不愿意写,直接把同学的发出来作为参考答案。
- 考试:闭卷。题型大部分固定,考前老师会给看往年卷。今年比较简单,甚至有一道送分大题。
- 给分:我没写实验四,但总评却还可以。再结合其他同学的情况,可知总评基本看考试分数。
总结一下对这门课的印象:混乱,划水,浇灭学生对并行计算的兴趣,不如自学。
老师撤回成绩重新出了一次总评,我分数直接提了一档,我都不知道我何德何能。无论如何,可以看出老师确实是很懂学生心理的,但还是希望以后可以好好打磨一下课程内容,毕竟并行计算的知识是比较重要的。
补充: 在有人查卷后老师撤回了原本的成绩,本人做过附加的实验,比之前加了一分.
老师今天早上在群里说过
最近若干年,对于有优秀率限制的课程,都是严格遵守规则,所谓评分好是以讹传讹。感谢同学们来选课,更感谢一些好的建议和意见。之前课上也说过,下次授课(预计2024年春天)会使用新的讲义,课程内容和考核形式上都会有比较大的调整。
可见老师确实非常体谅学生,也能够虚心接受意见,希望老师的课越办越好吧
今年选这个课的人非常多,据我观察不仅有计科19 20级的同学,也有不少因为gzsun"GPA之父"的称号慕名而来的信院甚至工院的同学.
这一学期上下来个人觉得老师讲课水平比较一般,但可以称得上是"明白人",比较了解学生的需求(GPA)与想法(想摸鱼),所以一个学期下来到课人数从人满为患到不足一半(集中于最后几排),老师也从未点过名,有一点过于水了,大部分人可能把这门课当成和毛概一样来上...
实验安排的不太好,基本上就是熟悉一些并行工具的使用,不过如果想搞到比较好的加速效果还是很难的,我基本每个实验加速效果都不太理想,不过就给分来看还都比较宽松.
考试确实简单,可能是这个原因导致楼上被背刺了,老师考前会给样卷,就我看来近几年只有18年那个指针跳跃的题目很有技术含量,这就导致一些同学可能掌握了不少并行算法,划分,通信的知识,考试却涉及的不多.
学计科的课程一年多了,感觉计科大部分的知识都只有在实验中才可以体会到精髓,而这门课上课水,实验水,考试水,靠考前突击背点东西混个分,实际上并没有对并行有很深刻的认识,收获很少.
上课无聊,实验全靠自学,考前问助教问题结果回答了个错的答案,考试考到原题也就直接写错,没啥好说的,又屑又水,还不让放弃成绩,选之前做好因为考试手抖直接爆炸的准备。
但是老师很为学生着想,总评撤回了一次,把优秀线以下的同学调高了一档,尽量给了84.
首先,这个课程给分很好。我当年是开卷考试,大作业是写一个程序(忘了什么了)并比较串行和并行的渐进复杂度和运行时间。
虽然这门课比较水,但感觉学到的知识是很有用的,建议认真学习。现在摩尔定律走到尽头了,单核的性能很难再提高,未来计算的趋势肯定是多核、分布式,算法是一定要并行的。
我现在研究 FPGA 加速数据中心网络,需要设计一个并行算法。N 个逻辑上排成一圈的寄存器 0..(N-1),需要从输入的某个寄存器号开始,顺时针找出第一个值为 0 的寄存器,输出其寄存器号。就这个问题,组里同学弄出了个逻辑单元数量 O(N^2),时间复杂度 O(N) 的算法。(最优算法应该是逻辑单元数量 O(N),时间复杂度 O(logN))后来我认识到,要写好 FPGA,真的需要懂一点并行算法。不论设计原则还是复杂度的定义,并行算法跟串行算法都是完全不同的。
这门课程的总体难度不大,听课的感觉并不太好,可能因为孙老师授课的方式会比较发散,语速也偏慢。PPT主要是根据陈国良老师编写的《并行计算——结构·算法·编程》这本书来组织的,内容包括并行体系结构,并行算法,并行程序设计,以及openmp和mpi编程等等。
作业:
作业一共布置了4次,与往年内容差不多。
实验:
今年实验与往年不太一样,实验内容分别为:
其中前三个实验内容都不难,但第四个略有点揠苗助长了,布置的时候AI也没有学到这么快,AI的实验要求似乎也没这个那么高(我没做),后来老师听从同学们的建议,改为选做了。
实验文档较为简略,几乎是让你自由发挥。实验报告中要求会比较多,类似算自然指数还需要参考文献不太合理,等等。
考试:
考试内容与往年差不多,大概率会考的差不多有判断并行机类型,加速比,并行算法分析,还有mpi程序(根据以往试卷来看)。老师考前也会很慷慨的把试卷发到群里,并且考前一节课会划下重点,讲讲往年题等等。
给分还是很不错的,出分又撤回后提高了实验占比,总评加了不少。孙老师很关心学生,不少建议都能采纳,好评。
(以及不得不吐槽一下,除了博士助教外,其他助教都一直在摸鱼,有疑问时体验很糟糕)
利益相关:没写Lab4,总评95
我认为课程的优点:
1.不点名(至少这学期是,sgz似乎说教室人多就不点名)
2.作业少(好像都是往年题,难度低,github能找着)
3.大多数实验难度不高,这个后面再讲
4.课程有用。有些同学似乎觉得有点水,不过我把ppt看完感觉是学到了挺多pc的知识
5.给分好,有几位同学似乎说本学期给分一般,但sgz后来把成绩撤回了重新评分,按他的说法是调高了实验的占比,不少群友表示被提高了一个档。我没写lab4,总评95,并未变化,不知道是不是两次成绩取最大值
6.考试不刁难人,老师主动在群里发往年卷,最后一两次课也会评讲往年卷,并交代考试范围,bb上会有录播,对于自学人非常之友好。往年试卷仔细看看其实都是非常之套路化的东西,弄懂往年卷期末应该没什么问题。
关于实验:
本学期实验改革了,与以前的不一样。根据同学的反映实验2,3ddl延后了一周,并且实验4改为选做。
按照本学期的实验给分来看,应该不会硬性要求加速比。实验2,3可以参考某些现有的算法(我参考了也跑不出来,实验2拿串行算法改改就交了,加速比不到3),但最后评分还行。本学期来看实验主要在于并行思想,给分应该不会特别为难。
实验内容如下:
1.计算出自然常数e的前100位有效数字
2.输入一个带非负边权的图、一个源节点,求该节点到图中所有节点的最短路径长度。
3.计算稀疏矩阵乘以向量
4.使用参数服务器(Parameter Server)架构训练一个机器学习模型,对MNIST手写数字图片进行分类
另:没记错的话在考前一天,bb上的回放被撤了,只剩下最后两节课评讲试卷和课程总结的回放。虽说无伤大雅,不过最好提前准备好复习,有不懂的还能看看课程回放。
2022考试试卷:总评出来后老师在群里发了试卷,但感觉直接放出来不太好,给大伙翻译翻译吧
1.基础知识,与往年卷没什么区别,言之有理即可,考前需要记一下高性能计算机的体系结构和特点,但其实现在流行的也就一两种(好像主要是cluster),看了往年卷就知道了
2.Amdahl和Gustafson加速比推导,没什么难度,每年都有的题目
3.数学形式描述超立方互联结构(顶点为二进制数,若两个二进制数相差一位则连一条边),写出超立方的网络参数
4.算法设计,PRAM CRCW上的二分查找,限制了处理器数比数列长度小
5.说出一种迭代计算的并行化方法,并举例(ppt上有,我举的是前缀和)
6.纯纯的送分题,看图写话,不懂并行计算也能做,有脑子都能拿分
7.读MPI代码,分析复杂度,结合代码说出SPMD特点,还问了程序中MPI群集通信的函数及其作用(这个好像往年也考过,MPI这块得看看)
把ppt和往年卷子搞懂,考试应该是没什么问题的。
并行计算实际上是一门挺难的课,然而孙老师讲的有点水。我每周都会去,但经常会走神或者写其他实验。作业很少,一共只有四次,并且不难。实验一共四个,前三个较为简单,第四个实验是分布式机器学习解决手写数字识别,虽然对机器学习一无所知,但是好在网上资料比较多,所以自学一下问题不大。考试挺简单的,考前最好把所有ppt上面的算法都要理解透彻。今年考了一个挺好的题,问如何提高一些迭代算法的可并行性并举例说明?其实答案就在平时的ppt中,可以把迭代算法转化为递归算法,例子可以举快速FFT变换。总评98,有点惊喜,仍记上一次4.3还是去年春天的数理逻辑。
这门课真的很一般...各方面可能比计算之美好一些
今年出完分后部分同学反映实验占比过低,把分撤回去了,重新出分后不少同学都高了几分,老师还是比较重视同学的意见的
不过这课内容是真的无语了,还不如自己手撸一下openmp,MPI和CUDA,文档是没有任何指导的......至于并行分布式学习且禁用库,我很想知道是哪个助教拍脑袋想出来的......虽然个人是比较支持这样的实验难度的(妮可的实验普遍太简单了),但是很多同学已经反映了实验太难,这是整个培养方案导致而非一门课程导致的,加新实验应该循序渐进才行
一门比较失望的课。
平时讲课很催眠,前期并行机器讲的听不明白,中期并行算法讲的又很无聊,后期讲并行框架可能还不如自学。感觉并行相关的内容还不如体系结构讲的多,我觉得应该是教材的问题。
考试也很简单,从结果来看估计区分度很小,占比又很大,导致考差一点就全崩了。
个人感觉本学期唯一的优点是实验还比较有趣,不过大家估计都满了吧。
平时不点名,作业也祖传,上课几乎没人听。可能老师也是想把这门课定位为水课吧,那我缺的并行这一块谁给我补啊?
老师撤回后又提了一档,害怕
再提一点分吧,因为最近发现并行的应用需求真的到处都是,稍微会一点openmp就能派上很大用场。还是推荐上一下这门课的。
确实gpa之父,但真的过于水了一点。
课程上来看,基本和陈国良的《并行计算——结构、算法、编程》一个脉络,属于是把书上的内容摘抄成了ppt。但算法部分解释很少,只有几个比较不明所以的图,这种时候多半就得看书才能看懂了。因为本人没学过算法,在前面一带而过的各种模型那根本算不出来时间复杂度,后续并行算法中也不太会代入。总的来说上课确实会包括所有考点,但是有点催眠+一时半会没完全听明白。
上课体验而看感觉和很多计科课程差不多,但实验设置和考试内容上我真的一言难尽了……
四次实验分别为:
并行e计算和并行矩阵计算尚且还有较多的优化方向(比如在前者中使用数学恒等变换、后者中有很多并行划分的技巧和经典算法)。但遗憾的是整个实验导向不大、给我一种糊好就行的感觉:算200位e不管怎么搞都基本会减速,想要加速比就得调大问题规模;并行矩阵计算时我更是直接广播、按行划分、最后再收集——总感觉好像也没收获到啥并行技巧。写报告时为了加速比而调大加速规模,更是给我一种学术灌水的既视感(并没有感受到是自己写得不好,或者说不知道能不能从算法上改进,但造一造数据集确实效果不错)。而并行图计算似乎要加速真的比较难(毕竟是要一个精确的解,而不是“较好”的解),甚至听说“一位同学本科毕设准备做gpu优化最短路径,但最后换题目了”,可见其确实难以做出一个比较妙的优化……
总之就是,写实验有可能会只学会了api瞎糊一通。而付出大量时间去调研,最后体现在分数里的差距也不大,都几乎全满。我认为应该多出一些“非常适合并行的问题”,以及给出一些指导(比如有何种算法可以用来尝试),还有提供一些推荐的测试数据集规模。
而考试内容更是神秘……几乎是一些很水的问题,甚至今年考卷上一道设计题似乎都没有了。虽然一定程度上降低了考试压力吧……
总之,孙老师确实很了解同学们,知道大家不希望考太难了、以及不想太卷。但实验的设计和指导性真的有待提高。因为回想起一学期,我能想起的收获只有稍微熟练了几个最简单的api(就硬并行),以及考前突击时草草浏览的并行算法了。
撤回后喜提一分……
这门课是一门介绍并行计算模型、原理以及编程的课程,课程包括每周的讲课(比较无聊,慎重),十次左右的作业(都比较水),六次的实验(使用MPI完成,最后一次实验可以使用体系结构的CUDA矩阵编程),还有最后一次习题课,并且老师会给一份往年卷子,最后期末考试不是非常难,大部分都是书本上最基本的原理、分析时间复杂度、描述算法之类的,最后一题是一个编程题目,只要说清楚过程即可,我记得我用的是类似于计算最短前缀和的方法写的,另外就是考试好像很喜欢出时事热点,比如今年考试前我和我兄弟说肯定会考最新出的那个超算summit,然后果然就考了,还好看了下资料。
说来很惭愧,我一学期都没怎么听过课,最后两天复习的时候还什么都不懂非常的慌,很怕挂科了,但是复习的时候感觉内容不是很多的样子,看着那几个PPT还挺有意思的,有一种恍然大悟的感觉,很后悔一开始没有好好学习这门课,其实虽然老师讲的不怎么样,但是PPT质量还是很高的,而且干货很多,现在在一家科技公司实习也感觉现在并行计算、mpi这些实在是太重要了,很多深度学习计算瓶颈的突破靠的都是高度并行的程序完成的。
最后给分感觉还可以吧,我作业得分很低然后期末有一题是全错了总评还给了90,40优秀率是给满的,如果分数低他好像都尽量会给到84
很喜欢老师的讲课的样子,初看起来又萌又严肃,过一会又会特别暖地笑着讲话,感觉没多少代沟吧。
上课慢悠悠的,不赶进度。有时牵扯到与所讲知识相关的一些事情,无论是不是正经的学术知识,都很愿意花几分钟展开讲一下,有时候还会扯到选择研究方向之类的问题。。毕竟老师自己也是过来人。
考试也出的很随便,尤其前两题会是这样(老师说他喜欢这样考。。),比如考NUDT是哪个单位的英文缩写。。
不过在考前会非常大方的把去年的卷子发到主页上。今年的题型和去年十分类似吧,也考到了平时老师上课提了不止一次的东西。后面的算法设计题也是基于指针跳跃的设计(如果我没想错。。),当时听课时感觉是属于比较容易理解的那种。总体来讲考的时候心理会比别的课要舒服一些吧。
我觉得这应该是计院最水的专业方向课吧。。上课就是gzsun那种风格。。平时有两次小测,还有一次一言不合就来的期中考试(貌似不算分,gzsun应该只是想收集试卷背面的问卷。。)考试开卷,感觉难度一般。。
布置了4个实验,然而只用交实验报告,不用交源代码。。记录(bian)一下程序串行、并行运行的时间就好23333
最后给分。。我感觉gpa之父变了。。。
感觉老师很不错,典型的学者风范,给分也不错,本辅修人就考前突击,分数也不错。题也比较常规,和老师给的往年试题差不多。
孙老师人很好,很能体谅学生。就和大家说的一样,这门课内容过于“水”了一些,考试比较简单,导致区分度不高。但是对于只想水学分的同学来说,这样就足够了不是吗
PS:2024年的并行计算情况不一定和今年一样,望注意
开始听了几节课讲故事,之后再没听过课。考前花两天看了一遍ppt&写了一遍往年试卷,不过收获还是蛮多的。实验不限定语言,也没有性能要求,稍微熟练Python的可以占到一点便宜很快写完。
gzsun自称:“最近若干年,对于有优秀率限制的课程,都是严格遵守规则,所谓评分好是以讹传讹”。不过个人来看给分还是比较好的,考试感觉可能平均分附近,写了选做实验,总评90
课讲的有点烂,作业少,考试卷面估分70~80,最后总评90+,GPA之父名不虚传。
据老师说今年开始课程作业实验变多变难了,但其实还好,作业两周交一次,而且只要bb上提交,不要交纸质版(这又给了我逃课的理由233),实验主要是mpi,比较简单。凑方向课学分必选,sgz真gpa之父,虽然有点惭愧,但可以说得到的分数绝对是大于我在这门课的平时付出的。
最后特别想吐槽一下期末考试,第一题竟然问到nudt是什么机构的缩写?emmm幸亏国防科大这种超算强校英文还比较好猜