大二上课程总结
大二上课程总结
写在前面
刚刚大一下的大坑还没补完,再挖个坑先。
普通物理学 Ⅱ(H) \(~~~\) 4 学分 方明虎
数理方法 Ⅰ \(~~~\) 4 学分 盛正卯
电子电路基础 \(~~~\) 5 学分 周金芳
概率论与数理统计 \(~~~\) 2.5 学分 王秀云
微观物理学与量子力学概论
\(~~~\) 3 学分 宋宇
复变函数与积分变换 \(~~~\) 1.5 学分 杨海涛
电子电路设计实验 Ⅰ
\(~~~\) 0.5 学分 王子立 / 金向东
百万立方世界 \(~~~\) 3 学分 徐象国
打开艺术之门 —— 钢琴 \(~~~\) 2 学分 陈列
传统节日与中国文化 \(~~~\) 1.5 学分 王诚
马克思主义基本原理 \(~~~\) 3 学分 王绍梁
军事理论 \(~~~\) 2 学分 吕强
剑术 \(~~~\) 1 学分 查苏生
Lab5-简单神经网络训练和加速
Lab5-简单神经网络训练与加速
实验简介
123456深度学习(Deep Learning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。深度学习能够取得如此卓越的成就,除了优越的算法、充足的数据,更离不开强劲的算力。近年来,深度学习相关的基础设施逐渐成熟,从网络设计时的训练、优化,到落地的推理加速,都有非常优秀的解决方案。其中,对于算力的需求最大的部分之一是网络的训练过程,它也因此成为 HPC 领域经常研究的话题。本次实验我们将完成 LeNet-5 的训练,并尝试编写自定义算子。
实验环境
在 H248 节点上用 conda activate torch 导入环境
用 sbatch 脚本任务运行程序
123456789#!/bin/bash#SBATCH -o out.txt#SBATCH -N 1#SBATCH -n 1#SBATCH -p 2080Ti#SBATCH --cpus-per-task=24#SBATCH --gpus=1CUDA_VISIBLE_DEVICES=1 python LeNet-5.py
LeNet-5 ...
Lab4-PCG Solver
Lab4-PCG Solver
实验简介
12345PCG 是一种利用多次迭代对方程组进行求解的方法。相比于使用直接法求解方程组,其对于存储空间的要求不高且扩展性良好,在涉及方程组求解的科学计算应用中具有一定的优势本次实验中,你需要使用OpenMP和MPI在多节点CPU集群上对串行PCG程序进行加速,并使用Profile工具进行性能分析。使用Fortran完成本次实验将可以获得Bonus。
基准代码
访存优化
程序中对于内存的访问几乎全为线性,因此没有进行数组封装。矩阵分块和循环展开的操作也是配合
OpenMP 和 MPI 一起使用进行优化的。
SIMD
通过
gcc -fopt-info-vec-optimized pcg.c main.c judge.c -O3
命令来观察 -O3
编译选项下的自动向量化情况,可以知道的是大部分循环已经被自动向量化。
OpenMP
PCG
算法中包括点积、矩阵乘法和加法这些并行性质良好的运算,因此对于简单的一层
for 循环,我们可以直接使用 OpenMP 进行循环展开。
12345678double dot ...
Lab3-CUDA 使用基础
Lab3-CUDA 使用基础
实验简介
1234567通用矩阵乘法(General matrix multiply, GEMM)是 BLAS 中经典的子程序之一。[2] 作为当今科学计算最常见的计算任务之一,GEMM 需要实现一个非常高效的矩阵乘法。优化 GEMM 也是 HPC 界非常基础的任务。本次实验需要你使用 CUDA 完成一个高性能 GEMM 实现。你可以自由选择使用 CUDA Runtime API 或者 CUDA Driver API 进行编程,但不能调用高性能计算的 Library 代替你自己实现 GEMM。本实验推荐采用 CUDA Runtime API,使用更加简单方便,相较 Driver 几乎不损失性能。
基准代码
12345678910111213__global__ void MultipleCudaKernel(const double *__restrict__ a, const double *__restrict__ b, ...
Lab2.5-手写 SIMD 向量化
Lab2.5-手写 SIMD 向量化
实验简介
12需要完成的任务非常简单,将下列循环使用手写 SIMD 向量化的方式进行优化。(因为是作为手写 SIMD 向量化的例子进行了简化,不接受任何其它的优化方式,优化的过程中需要保证总计算量不变且结果正确)
基准代码
123456789for (int n = 0; n < 20; ++n) { /* 可以修改的代码区域 */ // ----------------------------------- for (int i = 0; i < MAXN; ++i) { c[i] += a[i] * b[i]; } // -----------------------------------}
中间代码
12345678910111213141516171819202122for (int n = 0; n < 20; ++n) { /* 可以修改的代码区域 */ // ----------------- ...
Lab2-向量化计算
Lab2-向量化计算
实验简介
123456789101112Numpy 代码一般采用向量化(矢量化)描述,这使得代码中没有任何显式的循环,索引等,这样的代码有以下好处:· 向量化代码更简洁,更易于阅读· 更少的代码行通常意味着更少的错误· 代码更接近于标准的数学符号另外,向量化的代码能够规避掉 Python 中缓慢的迭代循环,被底层的实现更好的调度,如接入 BLAS 矩阵运算库,从而实现更高的性能。双线性插值是计算机视觉图像处理中的常用算法,它在计算机图形学中也可以用于材质贴图的重采样。本次实验我们将借助 NumPy 实现一个支持批量处理的向量化的双线性插值,来让大家熟悉 NumPy 的向量化编程模式。
环境配置
安装 Python 3.11.4 并添加到环境变量
使用 pip install NumPy 命令安装 NumPy
基准代码
1234567891011121314151617181920212223242526272829def bilinear_interp_baseline(a: np.ndarray, b: np.ndarray) -> ...
大一下课程总结
大一下课程总结
写在前面
刚刚补完大一上的大坑,大一下什么时候写就看天意吧(bushi)。这里仅仅写一些课程感想,比较随意。
数学分析(甲)Ⅱ(H) \(~~~\) 5.5 学分 贾厚玉
线代代数 Ⅱ(H) \(~~~\) 3 学分 刘康生
普通物理学 Ⅰ(H) \(~~~\) 4 学分 GENTARO WATANABE
C程序设计专题 \(~~~\) 2 学分 任重
普通物理学实验 Ⅰ \(~~~\) 1.5 学分 厉位阳
普通化学实验(乙) \(~~~\) 1.5 学分 徐孝菲
大学写作——写作 · 自然 \(~~~\) 1.5 学分 仝维鋆
新中国史 \(~~~\) 1.5学分 赵晖
现代战争与国防技术 \(~~~\) 1.5 学分 吕强
职业生涯规划 \(~~~\) 1.5 学分 卢思颖
形势与政策 \(~~~\) 1 学分 郭文刚
无线电测向(初级班) \(~~~\) 1 学分 朱玲
身体素质课 \(~~~\) 楼恒阳
大一上课程总结
大一上课程总结
写在前面
开个课程总结的坑,不知道后续能不能坚持填坑,这里仅仅写一些课程感想
(写给自己看的),比较随意。
数学分析(甲)Ⅰ(H) \(~~~\) 5.5 学分 贾厚玉
先前在看高等数学先修课的时候,视频种 jhy
老师总是青着个脸,不苟言笑的授课,让我看到预置课表的时候还有一些不安。不过实际上老师是很幽默风趣的,上课用的是
PPT +
电子板书,因此授课速度也比较快。上课总是拓展物理方面的数学知识😛,因为班上有求物和强物的同学。授课顺序是从集合
-> 数列极限 ->
函数极限,函数里又包括了连续、微分、积分的知识。
分析学的核心是非常朴素的极限的思想,也就是我们常说的 \(\varepsilon - N\) 或者 \(\varepsilon - \delta\)
语言。从简单的极限思想出发,能够生出许多概念与定义。我们用这些语言能清晰地描述出
“无穷” 这一定义,避免 “幽灵般的 \(\Delta
x\) ” 这样的混淆,我想这就是数学分析最为吸引我的地方。
线代代数 Ⅰ(H) \(~~~\) 3.5 学分 刘康生
美好大 ...
Lab1-简单集群搭建
Lab1-简单集群搭建
实验简介
123456本次实验要求使用四台虚拟机搭建一个简易的集群,并对该集群进行性能测试,最后提交测试结果和实验报告。集群搭建的任务包括创建虚拟机、安装 Linux 发行版、配置网络和 ssh 通信。性能测试通过使用 OpenMPI 将 HPL 测试程序分配到四个虚拟机节点上执行。因此,需要下载并编译 OpenMPI、BLAS 和 HPL 的源代码,其中 OpenMPI、BLAS 是 HPL 的依赖项。
虚拟机安装与镜像文件下载
在 Virtual Box 官网下载 windows hosts
在镜像站下载 Linux
光盘映像文件(debian-live-11.7.0-amd64-standard.iso)
创建虚拟机
选择发行版(Linux),分配内存(2GB)、磁盘空间(5GB)
插入发行版映像文件和配置网络(一开始使用的是网络地址转换(NAT))
完成图形安装程序并重启
下载并安装OpenMPI
下载 openmpi-4.1.5.tar.gz 1wget https://download.open-mpi ...
HPC101 小学期
HPC101 小学期
大一的下半学期也很快结束了(悲),因为本专业大一学年没有小学期课程,在加上室友的热情邀请🥵,于是报名了超算的小学期。花了三个晚上完成了报名条件
Lab1,顺利选上了这门课程。因为零基础做的实在是要死要活,当然完成了也有很好的收获感,就想着写个
Blog
把实验报告丢在上面。多尝试一些好玩有趣的事情,我认为总是好的😀。
超算小学期授课从 7 月 3 日到 7 月 15 日,这段时间会坚持上传
学习笔记
(我从来没有记笔记的习惯,虽然我不确定计算机的课程是否需要)和实验报告
(大概) 。
最后贴一下 Lab 网站链接备忘 (bushi) :
HPC101-Labs-2023
(需要内网访问)
超算小学期报名帖
(需要内网访问)