这个repo为华科七边形于2019年整理,欢迎各位朋友的指教
部分内容如有侵权,请联系 Rao, Geng Yu [email protected],我们会尽快移除
近年,华科一般团队组成为:一名运维(或许队长也要兼任部分运维职务,一个人可能不够),其他人分成组,负责写各个题目的代码。
AI题太多变了,一般出题之后找专门有研究的人来做,需要几个人跟着帮忙。
我们希望从每年9月份的新大二中招新人,人手不够的时候也会招大三的,请安排好个人的时间( 时间安排可以参考下面的比赛列表 ),避免产生不必要的咕咕咕行为,具体的情况请联系当年的队长。
学校之间:
- 不同学校之间学生的水平差别还是很大的,发展方向也各不相同,希望以后的同学能在赛场上多认识朋友。
- 有的学校没有专门的运维,每个人都有运维的能力。
- 有的学校部分队员是在做科学计算的 CS/非CS 学生,清北的朋友一般能找到很多这方面的资源,他们学校也有很多做相关科研的老师,近年华科主要是纯CS的学生,没有做科学计算的学生,也很少有其他系的学生。
一旦遇到了鸽子,对整个团队的规划会产生非常大的影响,如果有人要中途退出,一定尽快说明,并重新分配任务。 一般造成鸽子的原因:
*寒假一直在写课设
*准备找工作
*远程参与
*‘我一边实习,一边打比赛’ 然后就咕咕了
大二暑假
RDMA
PAC
CPC国产CPU 可以借机会接触一下神威太湖之光
大三和大四
ASC
ISC
SC
(以下几本,选一些章节看就好了,对超算应用或许不是很重要?)
计算机系统结构--量化研究方法 (指令级的东西一般交给编译器,ASC也有过手写SIMD的队伍 16浙大)
深入理解 linux 内核
现代操作系统
(超算入门)
多核应用编程实战
计算机科学丛书:高性能科学与工程计算
编译工具链相关文档(这个repo里也有整理编译相关的东西)
CUDA 并行程序设计:GPU 编程指南 (学校图书馆有)(CUDA programming : a developer's guide to parallel computing with GPUS)
(ASC也有过CPU应用改GPU的队伍 16浙大)
MIC 相关书籍 (最近很少有了,不推荐新人啃)
看别人各种调优的文档和优化建议(如果是大型的应用的话,一般有相关文档和BBS)
团队分工
机器组装, 硬件搭配
linux, 系统维护
英语交流, 与老师合作
并行化 异构计算 coder
[数学建模] [数值分析]
题目
HPL HPCG HPCC 性能测试(不需要代码修改)
AI题,可以看我在另一个文件夹下的整理,因为这几年(-19)每年都有,并且AI题出题风格各异,AI细分的方向比较多,在出题之前找专门做AI的人比较难。建议出题了之后,找擅长的人,然后借南一楼集群的P100机器。一般都是 state of art 的题目,可能需要实现最新的论文
神秘应用
一般是编译后直接跑, 要求对编译和环境非常熟悉(注意坑(oom等),需要快速找到最佳/时间上最经济的跑法)
团队题:预计编译过程会非常非常的难
ASC19新出的一种赛题,一般是强校弄出docker/其他打包,然后给其他队友
真正的超算平台
今年是神威, 这个题目不在自己组装的机器上跑, 要求的代码能力很强, 综合素质强 (只他们那一年有过这种,神威相关的信息在这个repo也有整理)
工具
redhat 有系统性能优化和系统管理员文档
openmp
一般与 mpi 混合使用, 方便但其空间有限
mpi
有 openmpi intel-mpi mpich2 platform-mpi
一般 CUDA 程序常用 openmpi
一般 intel-mpi 性能更好(一个个都测试一遍)
注意 numa 双路 cpu 对内存访问不对称, 及使用核绑定避免切换
intel parallel studio
icc ifort intel-mpi intel-optimize-header intel-mathlib(MKL)
advisor inspector vtune 性能分析工具
优化文档也是必读, 重点掌握
pgi编译器 全家桶
cuda
NVIDIA套装
openacc OpenCL
通用多平台编程, 用的很少,有很多坑(但是并不推荐新人在知道题目之前,就学这个,建议先看看别的)
Doxygen(使用doxywizard,勾选上 Expert/Dot 里的各种*_GRAPH)
链接库
**换库** , 数学计算有 BLAS 等数学库,需要对比不同库的速度。
fft有fftw和其他的实现,intel MKL 实现了兼容fftw的接口 (ASC19从一个fft99的库改成了fftw)
fftw的性能有不少窍门:plan,关于是在当前的内存空间做fft还是输入输出在不同的array,这些对性能有不少影响
IDA PRO
对于做体系结构优化的时候,Intel advisor/vtune可能不够用,需要读汇编代码来判断(举例来说,一些 math函数/简单的函数 如果内联,可能会更好, 原因是这种jump,有一定可能性造成 instruction cache miss (指当调用的函数很多,并且 instruction cache 会被装满的情况))
普通的tmux等工具就不多说了
另外
做超算算很多事情很杂, 很多优化可能相当繁琐, 也有很多参数和库可以调, 代码 debug 起来也很困难, 环境还有巨多坑, 做起题目来不要乱, 从顶至底一步一步来, 少做 dirty 的事情, 保持任务分工明确, 然后把所有优化的点都重视起来, 多交流
之前比赛的文档积累(划掉,已经停止更新)(已经决定改用QQ群文件保存,请联系每年的队长要),xxx群,请联系xxx进入(划掉,已经成为吹水群)