Lecture1
视频链接:CS267 (Sp22) - Lecture 1: Introduction and Overview - YouTube
不会完全记录课程内容,具体内容可以看知乎文章:UCB CS267 并行计算机应用 第一讲 引言 - 知乎 (zhihu.com)
从看完前两节课的感受来看,这门课提到的一些东西如果偏基础,那么他就不太会细讲。我建议先看一看 Nvidia CS344 学习一些基础的并行方法,再来看这门课。
Reduce 是 HPC 中常用的计算方法,Reduce 的前提是运算符满足交换律。
这个应该在 HPC 领域比较著名:如果你要耕地,你会选择两头强壮的公牛还是 1024 只小鸡?其实 HPC 领域就是要用小鸡战胜强大的公牛的。
虽然很多时候集群使用的 CPU 比我们的笔记本的 CPU 要更好。那就属于 1024 只公牛战胜 1 只小鸡了
什么是并行计算机
共享内存多处理器:
许多个处理器上面连接着同一块内存。
分布式内存多处理器
单指令多数据计算机:使用的 SIMD 方法,多核在多个数据上同时执行相同的指令。现代处理器上应该都有这种指令集支持,比如 AVX 指令集(我的电脑上支持 avx 256 指令集,在这里可以查看你的电脑支持什么 AVX 指令集)、向量指令、一般 GPU 中也会使用这种(一个 Warp 中的所有线程执行相同的指令,如果线程执行不同的指令就休息一部分线程,当然这对于性能来说非常不好)
这个人我不是很陌生,他在 Nvidia CS344 上进行了一次讲座,大家可以再去看看。以下这两个等式基本上回答了下面的两个问题。
-
为什么高性能计算是并行计算的同义词?
-
为什么我们总是关注内部和外部通信?
-
Performance = parallelism
-
Efficiency = locality
世界上的超级计算机
如下是一些 HPC 的评估指标:
FLOP:浮点数运算,通常是双精度的(这个感觉可以再求证以下,我记得 CS344 说 GPU 对于单精度 float 运算的支持比 double 更好,无特殊精度要求的情况下建议先用 float)
Flop/s:每秒的浮点数运算数
HPC 应用
科学仿真
如今,仿真也成了科学领域的第三大支柱。
科学仿真的高性能计算:宏观、微观、高速、低速、高成本、危险的工作都可以进行并行(下面这个图我很喜欢,色彩比较丰富)
数据分析
数据分析也成为了一大支柱。HPC 用于分析非常大的、非常复杂的、非常快的(streaming)、有很多噪声的、混杂的数据集。
这些领域经常会使用 HPC 进行数据分析。数据量今年爆炸性增长,和计算能力相对发展。
机器学习
机器学习是否会成为科学的第五大支柱?
用于机器学习的计算量今年的发展也是快速增长中从 AlexNet 到 AlphoGo Zero 来看,机器学习领域的科学计算量增长了 300000 倍,但是超算的计算能力没有增长太多。
The Motifs of Parallel Computing
Pill Colella 提出了在计算机领域的 “7 个小矮人”(大约 20 年前):Dense Linear Algebra、Sparse Linear Algebra、Particle Methods、Structured Grids、Unstructured Grids、Spectral Methods、Monte Carlo
不同计算在不同领域的重要程度
为什么从 2005 年开始所有计算机都是并行的了?
摩尔定律
片上晶体管的数量每 18 个月翻一番。
在计算机高度发展的是否,当特征尺寸缩小 x 倍,由于线路更短,所以时钟率也提高了 x 倍,晶体管密度提高 x 方倍,计算能力提高 x^4 倍。因此即便程序没有发生变化,性能也能提高。
限制:串行计算机的性能极限
我们考虑 1 Tflops/s 的串行计算机,假设 r 是数据从内存到处理器的长度。假设一个时钟周期拿来一个数据,那么也要 10^{12} 次时钟周期,用光速来算,芯片最长不能超过 0.3mm。
空间上,如果将 1 Tbyte 放在 0.3\times 0.3 的硬件上,那么每个 bit 将占用差不多一个原子的位置,所以别无选择。
芯片功率也正比于 V^2fC (电压、频率、核心数)。增加主频也会增加电压,让功率上升飞快。因此可以选择增加核心数,控制主频。
Dennard 缩放定律:随着晶体管变得越来越小,它们的功率密度保持不变,因此功率的使用与面积成比例;电压和电流的规模与长度成比例。