(七)High Performance Computing高性能计算学习路径
1. 初阶
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
0 | GPU申请 | Google Colab Google Colab是Google提供的一个在线的Python编程环境,其中包含了免费使用的GPU服务器资源,可用于进行深度学习等方面的研究和实验。只需拥有Google账户即可免费申请使用,无需担心服务器的配置和维护等问题。https://zhuanlan.zhihu.com/p/90977199 AI Studio和飞桨:AI Studio和飞桨算是后起之秀,AI Studio是百度提供的一个针对AI学习者的在线一体化开发实训平台。https://zhuanlan.zhihu.com/p/90977199 Kaggle Kaggle是一个数据科学竞赛平台,除了数据竞赛外,也提供免费的GPU服务器资源供用户使用。用户可以在平台上进行机器学习、深度学习等方面的研究,同时也可以参与竞赛获取奖金。https://zhuanlan.zhihu.com/p/90977199 AWS Educate AWS Educate是由亚马逊AWS提供的教育计划,该计划为教育机构和学生提供免费的AWS云计算资源,包括GPU服务器等。学生可以通过注册AWS Educate账户,获得AWS的教育奖励,其中包括免费使用AWS云计算资源的机会。https://aws.amazon.com/cn/education/awseducate/ GCP学生计划 GCP学生计划是由谷歌云平台提供的教育计划,该计划为学生提供免费的GCP云计算资源,包括GPU服务器等。学生可以通过注册GCP学生计划账户,获得免费的GCP云计算资源使用权限。https://zhuanlan.zhihu.com/p/360231393 Paperspace Gradient:Paperspace Gradient 是一个云端深度学习平台,提供了免费的 GPU 使用时间。你可以通过免费试用账户来使用 Paperspace Gradient 的 GPU 进行深度学习训练。https://www.paperspace.com/artificial-intelligence | |
1 | CMU 15-418/Stanford CS149: Parallel Computing | 【大局观】 | CMU 15-418: https://csdiy.wiki/%E5%B9%B6%E8%A1%8C%E4%B8%8E%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/CS149/ http://15418.courses.cs.cmu.edu/spring2016/ Stanford CS149: https://gfxcourses.stanford.edu/cs149/fall21 Kayvon Fatahalian 教授此前在 CMU 开了 15-418 这门课,后来他成为 Stanford 的助理教授后又开了类似的课程 CS149。但总体来说,15-418 包含的课程内容更丰富,并且有课程回放,但 CS149 的编程作业更 fashion 一些。我个人是观看的 15-418 的课程录影但完成的 CS149 的作业。 这门课会带你深入理解现代并行计算架构的设计原则与必要权衡,并学会如何充分利用硬件资源以及软件编程框架(例如 CUDA,MPI,OpenMP 等)编写高性能的并行程序。由于并行计算架构的复杂性,这门课会涉及诸多高级体系结构与网络通信的内容,知识点相当底层且硬核。与此同时,5 个编程作业则是从软件的层面培养学生对上层抽象的理解与运用,具体会让你分析并行程序的瓶颈、编写多线程同步代码、学习 CUDA 编程、OpenMP 编程以及前段时间大热的 Spark 框架等等。真正意义上将理论与实践完美地结合在了一起。 |
2 | MIT 6.172 Performance Engineering Of Software Systems | 【大局观】 | https://ocw.mit.edu/courses/6-172-performance-engineering-of-software-systems-fall-2018/ 从系统优化的角度入手, 这个课是我见过从系统优化角度讲HPC入门最好的课 == 简单的开始,但是理论知识包含的不够深入,更多是上手 |
2‘ | 超算/并行计算入门课程 | 中文课程 | |
3 | UC Berkeley CS267 Applications of Parallel Computers | ||
4 | (optional)《入门与实践:使用MATLAB进行高性能数值计算》 | ||
5 | (optional)《高性能计算简介》 |
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
1 | CUDA TRAINING SERIES | 【CUDA】 | |
2 | CUDA Toolkit Documentation | 【CUDA】 | |
3 | MPI Tutorial 和官方文档 | 【MPI】 | |
4 | intel Intrinsics Guide | 【SIMD】 | |
5 | 《高性能计算:架构、应用及其发展》 |
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
1 | 《算法导论》 | 【算法】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg7a2IuwYozoCQiwQ.pdf 离散数学基础好的同学可以直接看《算法导论》,该书是算法设计领域非常权威的资料(对应MIT 6.006课程),比如20年CPC初赛的图BFS算法的伪代码就直接截取自该书。离散数学基础差一点的学习可以看学堂在线邓俊辉老师的《数据结构》公开课,该课程对初学者非常友好。 == 其实Charles Leisersen也是HPC界大佬。 |
2 | Hennessy & Patterson Computer Architecture: A Quantitative Approach 最新版(第六版) | 【计算机架构】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg7a2IuwYovKrslAY.pdf |
3 | Onur Mutlu的Computer Architecture, ETH Zürich | 【计算机架构】 | https://www.youtube.com/watch?v=wHVyshkyZ4w&list=PL5Q2soXY2Zi9OhoVQBXYFIZywZXCPl4M_ Onur是计算机系统架构领域最顶尖的学者之一,他的课讲的也很好,而且网上免费放送给大家 |
4 | 深入理解计算机系统(CSAPP) | 【计算机系统】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg7a2IuwYouND97gI.pdf 在算法优化过程中需要特别注意从整个计算机系统层面的宏观思考,而系统既包括单机也包括多机,即包括单核也包括多核。比如一提到“并行”这个词,你就要想到多机器之间的进程级并行、单机器上的线程级并行、指令级的流水线并行等。此外,以空间换时间是个很常用的手段,一提到局部性原理,你就要想到网络、磁盘访问的缓冲区局部性、内存中数组排列的访存局部性、CPU高速缓存中的局部性等。这方面推荐《CSAPP》这本书及其配套的Lab(对应CMU 15-213课程)。这是该课程网站:https://www.cs.cmu.edu/~213/, 相关lab也可以从GitHub上下载。 |
5 | 《操作系统导论》《Operating Systems: Three Easy Pieces》 | 【操作系统】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg7a2IuwYogPqW3AI.pdf 《操作系统导论》有一个附录,记载了一些可能的 xv6 实验项目,其中充满了关于潜在项目的很棒想法。 |
6 | 《鸟哥的Linux私房菜》 | 【Linux】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg7a2IuwYoyNyfogU.pdf 譬如怎么在电脑上装一台 Linux 出来、怎么查看进程、怎么操作文件、软链硬链、格式化磁盘、配置网卡、curl 一个网页等。 强烈建议如果你希望自己的操作系统方面的知识好一些,赶紧把你的 Windows 系统装成 Ubuntu,或者换台 Mac 也行。 |
7 | 学术会议 | 想进入学术界多参加会议,阅读论文 | 最主要的: SC(大而广): ICS: HPCA (PPoPP)(偏并行编程): IPDPS(系统算法都有): SPAA(并行算法与architecture): ICPP: https://insidehpc.com/tag/icpp/ ASPLOS: |
7‘ | 招聘要求 | 有找工作需要的同学,找一些招聘启事阅读,重点关注有什么要求,然后有针对性地查缺补漏 |