高性能计算HPC笔记(一):概论

学习自:
B站北京大学Linux俱乐部:https://space.bilibili.com/3461562830424779
学习视频:北大未名超算队 高性能计算入门讲座(一):概论

概论

基本工具

高性能计算HPC笔记(一):概论_第1张图片
高性能计算HPC笔记(一):概论_第2张图片
这里PPT中有个问题:客户端只上传公钥给服务器,私钥是自己保留的。
高性能计算HPC笔记(一):概论_第3张图片

开发工具

概念

高性能计算HPC笔记(一):概论_第4张图片
SISD:用一个线程去执行一条指令。
高性能计算HPC笔记(一):概论_第5张图片
SIMD:使用单个instruction来操作多条数据(vector化),会共用一个很长的唯一运算器。

高性能计算HPC笔记(一):概论_第6张图片

SIMT:开发起来更自由,一条指令执行的运算器来自于不同的硬件,取的内容的地址位置可以在任何地方
高性能计算HPC笔记(一):概论_第7张图片
高性能计算HPC笔记(一):概论_第8张图片

高性能计算HPC笔记(一):概论_第9张图片
一个instrcution指令调用不同的运算器
高性能计算HPC笔记(一):概论_第10张图片

高性能计算HPC笔记(一):概论_第11张图片
用GPU做运算,把这里看为8个并行在做的事情,每一个流拿的tid不一样

高性能计算HPC笔记(一):概论_第12张图片
高性能计算HPC笔记(一):概论_第13张图片

用CPU做MIMD开发,加一行与编译指令就可以实现并行。

性能调优

高性能计算HPC笔记(一):概论_第14张图片
高性能计算HPC笔记(一):概论_第15张图片
CPU执行前一个指令时,下一个指令可能已经开始预取了(准备工作),吞吐提高。(但是if-else分支走向会影响预读取数据),可以让CPU预测走哪个分支的概率大。
高性能计算HPC笔记(一):概论_第16张图片
线程束分化:写两个线程,这两个线程执行一样的代码,但是数据不一样
GPU只有一个instruction器,遇到这种情况,GPU会比CPU更慢

CPU里最快的是寄存器,CPU的程序具有局部性,在CPU上是线性排列的。
GPU里有很多作用不同的内容,速度也不同,SIMT可能会在执行一条指令时用到各种不同位置的内存,内存地址差异过大一次读不完的话,会极大的浪费内存的带宽。要考虑多个内存之间怎么去访问内存,怎么在GPU里把数据很好的布局。

并发:首先要把数据拷贝到GPU,然后启动GPU的kernel,最后把GPU的执行结果拷贝到主存上。改进:并发,把每个阶段分为3份,在拷贝完1/3的数据后,就对前1/3的数据进行处理。流水线化。

高性能计算HPC笔记(一):概论_第17张图片
传统的数据中心网络是通过网卡连接,当有数据报到达后,网卡把数据DMA到主存中,发中断给CPU,让CPU对拷贝过来的数据报文通过协议去处理。这会把CPU浪费在不必要的报文处理(如:TCP/IP协议栈)。通过RDMA可以把CPU绕开

你可能感兴趣的:(HPC,笔记,云计算)