上海大学ASC超算竞赛

ASC2022备战

关于ASC

ASC简介

世界大学生超级计算机竞赛(ASC Student Supercomputer Challenge,简称ASC超算竞赛),是世界最大规模的超算竞赛,与德国ISC、美国SC并称世界三大超算竞赛。该竞赛由中国倡议成立,与日本、俄罗斯、韩国、新加坡、泰国等国家和地区的超算专家和机构共同发起并组织,并得到美国、欧洲等国家地区超算学者和组织的积极响应支持。ASC旨在通过大赛的平台,推动各国及地区间超算青年人才交流和培养,提升超算应用水平和研发能力,发挥超算的科技驱动力,促进科技与产业创新。

ASC 世界大学生超级计算机竞赛肇始发韧于 2012 年,至今已连续举行 7 届,累计有数千名大学师生参与该项赛事,经历了从中国到亚洲,再从亚洲到世界的规模升级,影响力不断攀升。ASC 旨在通过大赛的平台,推动各国及地区间超算青年人才交流和培养,提升超算应用水平和研发能力,发挥超算的科技驱动力,促进科技与产业创新。迄今为止,ASC 超算竞赛共吸引了全球超过 5500 名年轻人才,参赛队伍总数超过 1100 支,是目前全球规模最大、参与人数最多的大学生超算赛。在2018世界大学生超级计算机竞赛中,共有超300支高校队伍参赛,包括清华大学、台湾清华大学、上海交通大学、俄罗斯圣彼得堡大学等世界知名学府。最后进入总决赛的有来自中国、美国、俄罗斯、德国等20支队伍。

上交大ASC21招新介绍

ASC不仅是让大学生参加超算比赛深刻了解超算的平台,更为高校提供了人才培养机制,让高校从中获取高性能计算专业人才。带队老师廖秋承跟学生打比方,如果说戈登贝尔奖和Top500是超算届的达喀尔拉力赛和F1比赛,ASC就是超算界的卡丁车竞赛。一个车手想成长为F1赛车手,他从非常小的时候就要接受卡丁车专业训练,连续十几年的时间里一直接受各种各样的赛车训练知识,引擎的知识,如何掌控重力、牵引力,轮胎管理和底盘管理等等。超算竞赛就像卡丁车竞赛,教会学生如何管理一个复杂系统,从芯片微架构体系结构,到芯片间的互联,节点的互联,到操作系统,调优到建模,从来没有一个比赛像ASC比赛这样,把所有方面全部结合在一起,这也给学生带来非常大的挑战。

ASC不仅是播撒种子的平台,还是创新的平台,上海交通大学代表队在这几年比赛中干过疯狂的事情,2016年为DNN模型创建了18层的令牌环,达到了决赛中苛刻的精度和速度要求。2017年交大团队第一次在PCIE SSD上使用了并行文件系统BeeGFS。2018年交大团队打磨了散热器,更换了高性能的硅脂,改变服务器的散热策略,使得在南昌大学酷热的场地还能保持服务器的正常运行。2019年第一次在每一台服务器节点上用了两块Omni-Path 100G的网卡,从而实现了全场最快的CESM模拟,当然因为一些原因,CESM并没有拿到奖。

ASC不仅是一个播撒种子的平台,还是一个让学生发挥他们最大创造力的平台,可以有非常多在正式生产集群上无法用的技能技巧和奇思妙想。虽然在ASC的赛场上,这些技巧并不会扭转乾坤,甚至根据我的经验,它们大部分都失败了,但是最后这些技巧越来越成熟后,却有可能真正用在生产环境和高校的科研中。2019年π2.0帮助上海交通大学一位老师进行了北冰洋洋面和洋面下的气侯模拟,用的正是CESM的模型,他经过交大ASC竞赛团队队员帮助,在π2.0集群上非常高效的完成之前无法运行起来的模拟。

今年第一次以超算工程师和学科主要科学家合作的模式,从零开始研发一个内燃机摩擦学模拟程序,在研发成功后,这将是国际上摩擦学领域第一个二维滑动平面进行多尺度摩擦特性研究的程序。ASC比赛不仅仅是让学生玩的爽的比赛,还让算力应用到日常科研中,让高校和各领域学科的科学家都从中受益。

招募要求(已完成)

  1. 上大全日制在读本科生,专业不限,对高性能计算、计算机体系结构、并行计算有浓厚兴趣;

目前队伍里已经有2位智科大三的同学,最好是有计科大三的同学能够加入互补。参加这个比赛主要学生来源专业是数学,计算机,软件,信息等。

  1. 有一定的自我学习能力和英文文档阅读能力,有刻苦专研学习精神,有相对富余的业余时间。
  2. 具有基本的C/C++或Fortran编程能力(至少能够使用一种语言),常用编程语言Python,Linux脚本语言,掌握基本的算法/数据结构知识。
  3. 了解Openmp,MPI并行编程,应用软件性能分析及优化能力
  4. 了解Pytorch等深度学习框架,以及OpenAcc、CUDA编程,或具备cv,nlp等相关知识,应用数学能力强者优先

ASC超算大赛迄今已举行至第9届,吸引超过8500名世界各国大学生参赛。本届比赛有380多支队伍参赛,设置一等奖20名,二等奖50名。一等奖占总参赛队伍的5%,二等奖占总参赛队伍的13%左右。

ASC19将采用”初赛+决赛”的赛制。2018年11月15日到2019年1月7日为高校报名阶段,以小组形式报名,每个参赛队伍由五名本科生和一名指导老师组成。2019年1-3月为初赛阶段,参赛队根据要求提交超算应用优化提案,组委会筛选出二十支队伍进入决赛。决赛将于4月21-25日在大连理工大学举行,参赛队基于大赛提供的硬件平台,在3000W功率下设计和搭建超算集群并实现指定应用的优化。

世界范围的各高等院校均可报名ASC竞赛,ASC20超算竞赛赛程分为三个阶段:

竞赛章程

参照2020,一般每年都是如此。

第一阶段:高校报名并组织参赛队伍,所有有意向参加的高校需要在2020年1月5日之前通过竞赛官网向组委会提交申请,每个高校可以有多个队伍,参赛队需要1名指导老师和5个在校本科生;

第二阶段:1月6日-2月28日期间进行初赛,各参赛队根据竞赛命题要求进行相关书面方案准备和应用优化,由评审委员会评选出前20名总分最高的队伍进入决赛;

需要注意我们上大的三学期制,寒假后冬季学期返校马上就是期末考试(比赛开始其他学校应该刚考完期末),所以我们要在寒假里完成大部分工作,最好是能够留校

第三阶段:4月25日-4月29日期间进行总决赛,20强队伍将在南方科技大学进行面对面比拼,角逐ASC20总决赛的各大奖项。总决赛时间为5天,参赛大学生队伍需在5天时间内现场组建一台运行功耗不高于3000W的超级计算机系统作为平台,优化完成近7道HPC与AI应用赛题。

目标是星辰大海

冲决赛!!!毕竟谁还没个能和清华大学一较高下的梦想,只要进了决赛就是一等奖,我们也才有机会去和更多优秀的选手交流学习。(保底就是冲个二等奖回来)

SHU的ASC超算之路从我们重新开始。

从现在九月到明年三月比赛结束大概半年时间,就当成是一个挑战自己以及共同学习的好机会,也不希望大家太功利,但是要付出十二分的努力。

学习计划

学习资料

CSDN上OpenMP、MPI、CUDA总结


Openmp

OpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受,用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案(Compiler Directive) 。

支持OpenMP的编程语言:C、C++和Fortran;


HPL

多机linpack

LINPACK测试


MPI

MPI 是什么?这里引用一段 MPI 教程介绍 中的内容:

在 90 年代之前,程序员可没我们这么幸运。对于不同的计算架构写并发程序是一件困难而且冗长的事情。当时,很多软件库可以帮助写并发程序,但是没有一个大家都接受的标准来做这个事情。
在当时,大多数的并发程序只出现在科学和研究的领域。最广为接受的模型就是消息传递模型。什么是消息传递模型?它其实只是指程序通过在进程间传递消息(消息可以理解成带有一些信息和数据的一个数据结构)来完成某些任务。在实践中,并发程序用这个模型去实现特别容易。举例来说,主进程(master process)可以通过对从进程(slave process)发送一个描述工作的消息来把这个工作分配给它。另一个例子就是一个并发的排序程序可以在当前进程中对当前进程可见的(我们称作本地的,locally)数据进行排序,然后把排好序的数据发送的邻居进程上面来进行合并的操作。几乎所有的并行程序可以使用消息传递模型来描述。
由于当时很多软件库都用到了这个消息传递模型,但是在定义上有些微小的差异,这些库的作者以及一些其他人为了解决这个问题就在 Supercomputing 1992 大会上定义了一个消息传递接口的标准,也就是 MPI。这个标准接口使得程序员写的并发程序可以在所有主流的并发框架中运行。并且允许他们可以使用当时已经在使用的一些流行库的特性和模型。
到 1994 年的时候,一个完整的接口标准定义好了(MPI-1)。我们要记住 MPI 只是一个接口的定义而已。然后需要程序员去根据不同的架构去实现这个接口。很幸运的是,仅仅一年之后,一个完整的 MPI 实现就已经出现了。在第一个实现之后,MPI 就被大量地使用在消息传递应用程序中,并且依然是写这类程序的标准(de-facto)。

这里十分推荐先阅读完 MPI 教程 的全部内容,它是我在互联网上能找到的所有关于 MPI 的公开材料中最为深入浅出的一个教程。

简单地来理解 MPI,它是一个定义了多个原语的消息传递接口,这一接口主要被用于多进程间的通信。它的竞品包括 RPC,Distributed Shared Memory 等。

作者:gaocegege
链接:https://zhuanlan.zhihu.com/p/158584571
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


HPL与High Performance Linpack

背景知识

LINPACK全名Linear Equations Package,是近年来较为常用的一种计算机系统性能测试的线性方程程序包,内容包括求解稠密矩阵运算,带状的线性方程,求解最小平方问题以及其它各种矩阵运算。它最早由来自Tennessee 大学的超级计算专家Jack Dongarra提出。程序用FORTRAN编写,在此基础上还有C,JAVA等版本。Linpack使用线性代数方程组,利用选主元高斯消去法在分布式内存计算机上按双精度(64 bits)算法,测量求解稠密线性方程组所需的时间。Linpack的结果按每秒浮点运算次数(flops)表示。第一个Linpack测试报告出现在1979年的Linpack用户手册上,最初LINPACK包并不是要制订一个测试计算机性能的统一标准,而是提供了一些很常用的计算方法的实现程序,但是由于这一程序包被广泛使用,就为通过Linpack 例程来比较不同计算机的性能提供了可能,从而发展出一套完整的Linpack 测试标准。

HPL,即High Performance Linpack,目前已经成为国际标准的Linpack基准测试程序,其1.0版于2000年9月发布,是第一个标准的公开版本并行Linpack测试软件包,一般用于全世界TOP500超级计算机上的并行超级计算机排名。HPL测试标准的用户自由度要大很多,使用者可以选择矩阵的规模,分块大小,分解方法等等一系列的各种参数,都是按需要更改的。

HPL软件包需要在配备了MPI环境下的系统中才能运行,还需要底层有线性代数子程序包BLAS的支持(或者有另一种向量信号图像处理库VSIPL也可)。

HPL软件包不仅提供了完整的Linpack测试程序,还进行了全面细致的计时工作,最后可以得到求解的精确性和计算所花费的总时间。该软件在系统上所能达到的最佳性能值适合很多因素有关的。

下载必要的软件包: MPI,GotoBLAS库,HPL源码
https://www.mpich.org/downloads/
https://www.tacc.utexas.edu/research-development/tacc-software/gotoblas2
http://www.netlib.org/benchmark/hpl/

机组实验四linpack安装

下面这个教程比较靠谱

Linpack安装、配置与运行

Ubuntu安装MPICH3集群计算环境


Cmake

CMake资料整理

gcc相关

见群文件 —《GCC编程简介》


make相关:
Make命令教程

Makefile编写简明教程


CMake相关:

CMake官方教程

CMake官方教程中翻

CMake具体示例

CMake简单教程(适合快速入门)


Pytorch(+)

带你少走弯路:强烈推荐的Pytorch快速入门资料和翻译(可下载) - 黄海广的文章 - 知乎

pytorch学习笔记-张贤同学,知乎1.7k赞

主要是看到所有代码均在 PyCharm 中通过测试,可以通过 git 克隆到本地运行。


TensorFlow(?)

同样是深度学习框架,不过之前ASC都没有用过,好像只用过Pytorch。但也应该要会用。

TensorFlow学习笔记-个人整理资料


cuda(+)

统一计算设备架构(Compute Unified Device Architecture, CUDA),是由NVIDIA推出的通用并行计算架构。解决的是用更加廉价的设备资源,实现更高效的并行计算。

【CUDA教程】一、认识cuda - 刘冬煜的文章 - 知乎 https://zhuanlan.zhihu.com/p/146431357

CUDA编程入门极简教程 - 小小将的文章 - 知乎 https://zhuanlan.zhihu.com/p/34587739

熬了几个通宵,我写了份CUDA新手入门代码 - godweiyang的文章 - 知乎 https://zhuanlan.zhihu.com/p/360441891

阳神!

谭升的博客强推!!

我的cuda笔记

oneAPI(?)

oneAPI官网

Intel oneAPI学习笔记之基本概念&六大工具包一览

Intel oneAPI 是一个跨行业、开放、基于标准的统一的编程模型,它为跨 CPU、GPU、FPGA、专用加速器的开发者提供统一的体验,包含两个组成部分∶ 一项行业计划和一款英特尔beta 产品。

oneAPI 开放规范基于行业标准和现有开发者编程模型,广泛适用于不同架构和来自不同供应商的硬件。oneAPI 行业计划鼓励生态系统内基于oneAPI规范的合作以及兼容 oneAPI的实践。

英特尔 oneAPI 产品是英特尔基于oneAPI 的实现,它包括了 oneAPI 标准组件如直接编程工具(Data Parallel C++)、含有一系列性能库的基于 API 的编程工具,以及先进的分析、调试工具等组件。开发人员从现在开始就可以在英特尔 DevCloud for oneAPI 上对基于多种英特尔架构(包括英特尔至强可扩展处理器、带集成显卡的英特尔酷睿处理器、英特尔 FPGA 如英特尔 Arria、Stratix 等)的代码和应用进行测试。

总的来说,单说 Intel oneAPI 只是一个编程模型、一个行业规范,二 Intel oneAPI 相关产品如 Intel oneAPI Base Toolkit、Intel oneAPI HPC Toolkit以及Intel AI Analytics Toolkit则是基于 Intel oneAPI 这一编程模型开发的产品,可以在这里下载https://software.intel.com/content/www/us/en/develop/tools/oneapi/all-toolkits.html
————————————————
版权声明:本文为CSDN博主「万古霉素(Vancomycin)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44506674/article/details/110990718

知乎oneAPI安装


Spack(?)

软件管理工具

Spack官方文档

Spack 是一种包管理工具,旨在支持各种平台和环境上的多个版本和软件配置。它是为大型超级计算中心设计的,在这些中心,许多用户和应用程序团队使用没有标准 ABI 的库在具有奇异架构的集群上共享软件的通用安装。Spack 是非破坏性的:安装新版本不会破坏现有安装,因此许多配置可以在同一系统上共存。

最重要的是,Spack 很简单。它提供了一个简单的规范语法,以便用户可以简洁地指定版本和配置选项。Spack 对于包作者来说也很简单:包文件是用纯 Python 编写的,规范允许包作者为同一包的许多不同构建维护一个文件。


FPGA(-)

FPGA是一种可以重构电路的芯片,是一种硬件可重构的体系结构。它的英文全称是Field Programmable Gate Array,中文名是现场可编程门阵列。

通过编程,用户可以随时改变它的应用场景,它可以模拟CPU、GPU等硬件的各种并行运算。通过与目标硬件的高速接口互联,FPGA可以完成目标硬件运行效率比较低的部分,从而在系统层面实现加速。


IntelParallel Studio XE(-)

parallel studio xe 2020是intel公司推出的一款软件开发工具合集,通过它可以有效帮助用户在C ++/ C和Fortran上的Windows、MacOS、Linux等平台上更快速的进行本地代码开发,从而提升在当前和未来英特尔平台上扩展的应用程序性能。软件简化了设计、开发、调试和代码的优化,并可以利用并行处理来提高应用程序的性能,利用兼容的Intel处理器和协同处理器可以更轻易地提高应用程序性能。同时软件的代码的构建和现代化变得更加简单,而且还采用全面的矢量化、多线程、多节点并行化和内存优化等最新技术,可以很好的满足你的编辑使用需求。
Intel学生许可过期后,安装 Intel® oneAPI Base Toolkit 和 Intel® oneAPI HPC来替代

我参考了这篇文章和这篇文章,感谢两位的教程!!!

之前的Intel Parallel Studio XE用邮箱申请了学生许可,已经过期,发现不能再续期,官网竟然出了免费版本!!!真香!马上安装!!

参考资料

参考书目

《超算竞赛导引》,黑色封皮很薄的一本书,卖的还挺贵,淘宝五六十块钱,而且是几年前出版的,但这是比赛官方出的,可以帮助选手快速且全面地了解整个比赛和超算。我相信,书籍就是最好的老师,在有限的条件下,这本书可以算是一个很不错的教练了。可以人手一本。

了解比赛

累成狗,但值得!超算新秀青海大学ASC经验分享

ASC超算竞赛完整备战指南(ASC18华农队长呕心力作)

CSDN2018预赛赛题介绍

建议细看

ASC作为国际比赛,势必不会为难没有超算环境但持有积极态度的参赛选手,据我所知,历届比赛的评分方式大致分为两类:一,统一平台,分配环境相同的集群(例如,一个队伍一个节点),2017年的预赛就是要求在太湖之光的超算集群上搭建环境,这种情况下,后面的题目会进行横向的比较,比如说,你的HPL跑了800Gflops,然后其他队伍在相同的环境下跑了900Gflops,那么在这道题目上,前者就有可能得到更高的分数(不排除文档描述条例清晰然后反杀的情况)。二,不提供统一平台,今年的就是这种情况,此时,参赛队伍可以使用手中的可用资源完成任务,使用学校的超算集群或者租集群使用,同时,因为环境的不同,应该不会对同一题目进行横向比较(这一点在培训会上也有所说明),但是需要注意的是,题目明确说明根据结果评分的会做横向对此(例如,今年的机器学习就是根据最终的准确率评分)。

b站招新培训

THU培训视频

b站山西大学ASC招新培训

官网

ASC官网

Trainingcamp

报名时间

今天看了一下THU的培训视频,内心很是触动,也不知道我们学校哪一年才有机会去参加SC,放个官网链接留待后人吧。

SC官网

赛题

CSDN

2021ASC超算竞赛QuEST配置与实战(量子计算)

ASC18世界大学生超算竞赛题目分析以及思路总结

Github

Github中山大学ASC19

GithubAbout2020-2021年ASC世界大学生超级计算机竞赛第3题 使用ALBert模型完成完形填空的NLP任务

参考获奖论文

见群文件


其他ASC相关

兰州大学ASC

由于没有找到我校之前的更多资料,只能参考一下其他学校发布的一些相关信息,还得靠大家一起搜集。

关于招募2020ASC世界大学生超级计算机竞赛兰州大学代表队参赛队员的通知

兰州大学首次参赛斩获总决赛一等奖和最佳人气奖

上交大ASC

上海交大 ASC 2021 超算竞赛招新啦

上交大高性能计算中心官网

上大ASC历史

上海大学ASC2015

学校ASC指导老师是沈文枫老师,以往我们好像都是三十几名,能够拿到二等奖。

博客ASC学习资料

MPI,OpenMPI 与深度学习

除了网页资料,更多其他资料会放在qq群文件,由于个人搜集能力有限,还请大家多多补充。

加入我们

欢迎所有学校的ASC参赛选手加入我们学校的超算交流群,上海大学2022ASC超算竞赛交流qq群:519047969

WeChat:HenryAvery


   转载规则


《上海大学ASC超算竞赛》 Henry-Avery 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录