[评价] 108-2 赵挺伟 CUDA平行计算导论

楼主: oToToT (屁孩)   2020-07-14 03:45:00
※ 本文是否可提供台大同学转作其他非营利用途?(须保留原作者 ID)
(是/否/其他条件):

哪一学年度修课:
108-2
ψ 授课教师 (若为多人合授请写开课教师,以方便收录)
赵挺伟
λ 开课系所与授课对象 (是否为必修或通识课 / 内容是否与某些背景相关)
物理所选修
δ 课程大概内容
- An Overivew of Nvidia GPUs,
and GPU Accelerated Computation with CUDA
- Vector Addition, Matrix Addition, Field Theory on 2D lattice
- Vector Addition of Arbitrarily Long Vectors,
Dot Product of 2 Vectors, Parallel Reduction
- Laplace/Poisson Equations on 2-Dim Lattice with Boundary Conditions,
Texture Memory
- CUDA with multi-GPUs, Vector addition with multi-GPUs,
Peer-to-Peer (P2P) communications between GPUs
- Solving Laplace Equation with multi-GPUs, Heat diffusion.
- Histogram, Atomic Operations.
Introduction to Pseudo-Random Number Generators
- Monte Carlo Simulation, Importance Sampling, Metropolis Algorithm
Monte Carlo Simulation of 2D Ising Model
- Monte Carlo Simulation of 2D Ising Model with Parallel Computers.
Even-Odd (Checkboard) Updating Scheme, Constant Memory,
GPU Accelerated MC Simulation of 2D Ising Model with Global Memory
- Error Estimation for Monte Carlo Simulation, Unified Memory,
Vector Addition with the Unified Memory
- Fourier Transform, Discrete Fourier Transform, Fast Fourier Transform,
CUDA Library, cuFFT, Physical Applications.
- CUDA libraries: cuBLAS, Examples: Saxpy, Sgemm
- LAPACK, MAGMA, Examples - dsyevd, zheevd, Physical applications
Ω 私心推荐指数(以五分计) ★★★★★
有物理底子,喜欢写程式,想了解基本平行计算 ★★★★★
单纯想学平行算法 / CUDA ★★★★★
从上面课程内容可以知道这门课其实很物理,毕竟开个系所就是物理所,所以
如果像我一样物理很烂的话,可能会有一半的时间听不懂上课讲的东西是怎么
来的,我自己是后来就都当作给定一些已知事实,想去算某些式子的感觉单纯
去学CUDA相关概念的。另外如果物理不好的话写作业可能会无法验证自己写的
code是不是烂的,因为很多作业都跟物理有关,常常我都不知道自己算出来的
东西是在干嘛QQ
η 上课用书(影印讲义或是指定教科书)
真要算的话应该就是 CUDA C Programming Guide吧
https://docs.nvidia.com/cuda/pdf/CUDA_C_Programming_Guide.pdf
μ 上课方式(投影片、团体讨论、老师教学风格)
全英文上课,老师有一定的口音,但是我觉得不会影响理解
这学期因为疫情,第一次上课后半段就跟大家说会用Zoom上课,老师也跑去
他的办公室用Zoom讲话测试,确保我们都会用Zoom上课
后来用Zoom上课的时候都是用简报上课,中间会穿插实际跑之前写好的程式
给我们看
讲解程式码的部分都讲得很细,几乎是把每一行都完整讲过一遍,示范的code
也会有简单的注解可以看,不过非常小的抱怨一下老师用vi没标色一开始有
点不舒服,不过看久也有点开始习惯没标色的editor了
老师人很nice的感觉,常常会问大家有什么问题,有人有问题都会认真回答,
或者有时候有人感觉就是麦忘了关,老师也会确认他是不是真的有问题想问
之前上课的时候问过一个程式相关的问题,老师当下有简单回答过,但晚上
的时候又寄了一份完整的回答给大家,感觉是真的满用心的
σ 评分方式(给分甜吗?是扎实分?)
60% 作业
30% Project
10% 上课表现/学习态度
这门课到最后好像只剩12个人在上,所以我也不确定算不算甜
看成绩感觉就是作业准时好好交、Project好好做、上课有出席就会A+
但其实我觉得这应该是基本要求才对,只是总共也只有4个人做到QQ
我自己是这学期心态炸光光,虽然有认真写作业,但应该超过一半的作业都迟
交,最后拿A。
ρ 考题型式、作业方式
这次总共十份作业,也就是前面几周每周都有作业,作业内容跟上课内容满
接近,有时候可能上课的范例程式码改几下就好了,不过我是都会自己全部
重写。
每次作业除了要交程式码以外也要交一份pdf,内容就是回答一些跟写的程式
有关的问题,最常见的就是叫你回答实测中最好的参数是哪组,或是比较几
个方法的快慢,并说明原因。
因为作业是CUDA,也就代表我们的code都会需要GPU才能跑,为了怕大家没有
自己的GPU,或是不像资工系自己有GPU工作站可以用,这门课有提供上课的学
生6台GPU工作站可以ssh上去用,其中五台每台有两张970,另外一台是两张1060
再小抱怨一下OS是debian 9,而且上面没有tmux只有screen,而且screen似乎
不支援256色,想在screen里开vim写code会有点不舒服,而且每台的家目录是
独立的,如果想换工作站用要自己搬家。
不过GPU有时候神秘的坏掉(资工系的似乎也会),不过寄信老师都会很快的处
理好。
Project的部份自订主题,只要跟CUDA/平行有关应该都可以,最后要交一份
report跟code。
我自己是尝试用CUDA实作了Doc2VecC,但跑得比原本CPU版的还慢很多很多,
最后report写了我的尝试跟一些可能的问题,最后拿了个中位数的Project成
绩。
ω 其它(是否注重出席率?如果为外系选修,需先有什么基础较好吗?老师个性?
加签习惯?严禁迟到等…)
这学期是没人来签,但感觉这门课要选就选的上吧,开30人这学期也只有12
人上到底。
基础的话最基本的应该就是C/C++了,毕竟CUDA就是C++的某种extension,老
师上课不会讲C++语法的部分,所以一定要会写C/C++,不然我猜应该一开始
就不知道在干嘛了。
另外跟前面讲的一样,我觉得可能还是要有一定的物理能力,至少不会像我
一样上课常常都很懵。
Ψ 总结
老师教的东西虽然不是很新,但是应该算是通用的,毕竟也不可能真的把整
个CUDA C Programming讲完,而且很多新的东西旧的GPU像970也不会支援
个人觉得如果是跟我一样只想学平行算法的话,是不太推荐修这门课,但
是如果是想学平行算法在科学计算上的各种应用的话,我觉得这门课应该
不会太差
这门课以一个2学分的课来看的话我是觉得花的时间有点小多,但这部分很有
可能是因为我每次作业都坚持从0开始刻,要修的话可以斟酌一下
作者: unmolk (UJ)   2020-07-14 08:46:00
没有tmux也不能上色那写vim真的会看得很不舒服捏
作者: tren (窗外有蓝天)   2020-07-15 01:09:00
推推老师~

Links booklink

Contact Us: admin [ a t ] ucptt.com