并行计算(中科大讲义)
并行计算-中国科学技术大学

PCAM设计方法学
设计并行算法的四个阶段
划分(Partitioning) 通讯(Communication) 组合(Agglomeration) 映射(Mapping)
划分:分解成小的任务,开拓并发性; 通讯:确定诸任务间的数据交换,监测划分的合理性; 组合:依据任务的局部性,组合成更大的任务; 映射:将每个任务分配到处理器上,提高算法的性能。
并行计算
中国科学技术大学计算机科学与技术系 国家高性能计算中心(合肥)
2004年12月
第二篇 并行算法的设计
第四章 并行算法的设计基础 第五章 并行算法的一般设计方法 第六章 并行算法的基本设计技术 第七章 并行算法的一般设计过程
第七章 并行算法的一般设计过程
7.1 PCAM设计方法学 7.2 划分 7.3 通讯 7.4 组合 7.5 映射 7.6 小结
通过增加任务的粒度和重复计算,可以减 少通讯成本;
保持映射和扩展的灵活性,降低软件工程 成本;
国家高性能计算中心(合肥)
2019/5/31
31
7.4 组合
7.4.1 方法描述 7.4.2 表面-容积效应 7.4.3 重复计算 7.4.4 组合判据
功能分解是一种更深层次的分解。
国家高性能计算中心(合肥)
2019/5/31
14
功能分解
示例1:搜索树
示例2:气候模型
国家高性能计算中心(合肥)
2019/5/31
15
7.2 划分
7.2.1 方法描述 7.2.2 域分解 7.2.3 功能分解 7.2.4 划分判据
划分判据
划分是否具有灵活性? 划分是否避免了冗余计算和存储? 划分任务尺寸是否大致相当? 任务数与问题尺寸是否成比例? 功能分解是一种更深层次的分解,是否
中科大-并行计算讲义-并行计算机系统与结构模型

Intel Paragon系统框图
I/O部分
SCSI
计算
节点
节点
计算部分
计算 节点
……
服务部分 I/O部分
计算
服务
SCSI
节点
节点
节点
以太网
HIPPI 节点
计算 节点
计算 节点
……
计算 节点
服务 节点
SCSI 节点
FDDI
VME 节点
用户I/O
磁带
HIPPI 节点
计算 节点
计算 节点
……
计算 节点
CU
PE0
PE1
…
P E n-1
IN
M0
M1
…
M m-1
(b)共享存储阵列机
中科大-并行计算讲义-并行计算机系统与结构模 型
2021/1/21
6
阵列处理机的特点
• SIMD-单指令多数据流机
• 利用资源重复开拓计算空间的并行
• 同步计算--所有PE执行相同操作
• 适于特定问题(如有限差分、矩阵运算等) 求解
2021/1/21
10
Balance同构对称多处理机系统
80386CPU Weitek1167FPU
…
80386CPU Weitek1167FPU
存储器 8MB
…
存储器 8MB
64KB 高速缓存
…
64KB 高速缓存 系统总线
存储控制器
… 存储控制器
总线适配器 以太局域网
磁盘控制器
…
磁盘
磁盘
总线适配器 多总线
• 阵列处理机 分布存储 共享存储 流水线
• 向量处理机 并行向量机
第1讲-并行计算概述1分解

专用高性能网络,大多为政府直接支持
27
并行计算机的发展
并行计算机发展趋势
由于向量机和 MPP 受研制费用高、售价高等因素的 影响,其市场受到一定的限制 SMP 由于共享结构的限制,系统的规模不可能很大 由于机群系统具有投资风险小、可扩展性好、可继 承现有软硬件资源和开发周期短、可编程性好等特点, 目前已成为并行处理的热点和主流
SISD
SIMD
MIMD
并行计算--高性能计算
➢并行计算(Parallel Computing) 高端计算(High-end Parallel Computing) 高性能计算(High Performance Computing) 超级计算(Super Computing)
任何高性能计算和超级计算都离不开使用并行技术
也称为 COW(Cluster of Workstations) NOW(COW)与 MPP 之间的界线越来越模糊
24
并行计算机的发展
90 年代:体系结构框架趋于统一
NOW的典型代表:Beowulf cluster 微机机群
性能价格比极高
25
第一台 Beo并wul行f 机计群 算机的发展
IBM 3090 80 年代普遍为银行所采用 Cray X-MP Cray 研究公司第一台 MIMD 并行计算机
西摩 • 克雷 Seymour Cray (1925-1996) ,
电子工程学学士,应用数学硕士,
超级计算机之父, Cray研究公司的创始人,
亲手设计了Cray机型的全部硬件与操作系统,
26
并行计算机的发展
2000 年至今:前所未有大踏步发展
Cluster 机群
每个结点含多个商用处理器,结点内部共享存储 采用商用机群交换机通过前端总线连接结点,结点分布存储 各个结点采用 Linux 操作系统、GNU编译系统和作业管理系统
并行计算基础知识-中国科学技术大学超级计算中心

十年来体系结构的演变
2018/9/4
并行计算基础知识
29/66
机群:厂家面临的问题
怎样避免同质化?
一样的CPU、一样的网络、一样的操作系统、几乎一 样的机群系统 不一样的用户需求,一样的系统能最优满足? Scalability Usability Manageability Availability 可扩展性 易用性 可管理性 高可用性
最大可“在线”扩展到80个机柜 1300个CPU 每秒6.75万亿次峰值速度 4000G内存 600T存储 1200A最大电流,160千瓦最大功耗的海量处理系统
并行计算基础知识 35/66
2018/9/4
初步的面向网格的特点
Grid Terminal智能控制台能够实现庞大系 统的安全管理 GridView网格监控中心软件则提供了逻辑 视角、视角的可伸缩性、历史记录分析三 项特色,被称为系统的“千里眼”。
Earth Simulator
2018/9/4
并行计算基础知识
8/66
Earth Simulator
2018/9/4
并行计算基础知识
9/66
ASCI Q
1024 nodes 8cpu/node 10240Gflops 7727Gflops
2018/9/4
并行计算基础知识
10/66
ASCI white
设想logp模型中的log都为0那么logp模型就等同于pram模型2019310并行计算基础知识5566各种计算模型比较模型属性pramaprambsplogp体系结构simdsmmimdsmmimddmmimddmmimddm计算模式同步异步异步异步异步同步方式自动同步路障同步路障同步隐式同步路障同步模型参数单位时间步d读写时间b同步时间p处理器数g带宽因子l同步间隔l通信延迟o额外开销g带宽因子p处理器数l信包长度s发送建立时间h通信延迟计算粒度细粒度中粒度中粒度粗粒度中粒度粗粒度中粒度粗粒度粗粒度通信方式读写共享变量读写共享变量发送接收消息发送接收消息发送接收消息地址空间全局地址空间单地址空间单多地址空间单多地址空间多地址空间2019310并行计算基础知识5666性能评价与benchmark常见benchmark简介2019310并行计算基础知识5766加速比定律在给定的并行计算系统上给定的应用并行算法并行程序的执行速度相对于串行算法串行程序加快的倍数就是该并行算法并行程序的加速比
中国科技大学GPU并行计算课件class7

GPU Architecture in detail and PerformanceOptimization (Part II)Bin ZHOU USTCAutumn, 20131 © 2012, NVIDIAAnnouncements •The Following Classes:–11/23 Review and Project Review–11/30 Final Exam + Project–12/07 12/14 Project–12/21 Project Defense–12/28 Or after that Course Close. •Project Source Code + Report + PPT •Important Time: Due to: 2013/12/18 24:00Contents•Last lecture Review + Continue•Optimization + Kepler New Things•Tools for Project3 © 2012, NVIDIAOptimizationMake the best or most effective use of asituation or resourceLast Lecture•General guideline•Occupancy Optimization•Warp branch divergence•Global memory access•Shared memory accessOutline•General guideline II•CPU-GPU Interaction Optimization•Kepler in detailTools•Winscp–Copy files from/to remote servers•Notepad++–Edit source files (with keyword highlighting)GENERAL GUIDELINE II8 © 2012, NVIDIAKernel Optimization WorkflowFind LimiterCompare topeak GB/s Memory optimization Compare topeak inst/sInstructionoptimizationConfigurationoptimizationMemory boundInstructionboundLatencybound Done!<< <<~ ~General Optimization Strategies: Measurement•Find out the limiting factor in kernel performance –Memory bandwidth bound (memory optimization)–Instruction throughput bound (instruction optimization) –Latency bound (configuration optimization)•Measure effective memory/instruction throughputMemory Optimization•If the code is memory-bound and effective memory throughput is much lower than the peak•Purpose: access only data that are absolutely necessary•Major techniques–Improve access pattern to reduce wasted transactions–Reduce redundant access: read-only cache, shared memoryInstruction Optimization•If you find out the code is instruction bound–Compute-intensive algorithm can easily become memory-bound if not careful enough–Typically, worry about instruction optimization after memory and execution configuration optimizations•Purpose: reduce instruction count–Use less instructions to get the same job done•Major techniques–Use high throughput instructions (ex. wider load)–Reduce wasted instructions: branch divergence, reduce replay (conflict), etc.Latency Optimization•When the code is latency bound–Both the memory and instruction throughputs are far from the peak•Latency hiding: switching threads–A thread blocks when one of the operands isn’t ready•Purpose: have enough warps to hide latency•Major techniques: increase active warps, increase ILPCPU-GPU INTERACTION14 © 2012, NVIDIAMinimize CPU-GPU data transferHost<->device data transfer has much lower bandwidth than global memory access.16 GB/s (PCIe x16 Gen3) vs 250 GB/s & 3.95 Tinst/s (GK110)Minimize transferIntermediate data can be allocated, operated, de-allocated directly on GPU Sometimes it’s even better to recompute on GPUMove CPU codes to GPU that do not have performance gains if it can reduce data transferGroup transferOne large transfer much better than many small onesOverlap memory transfer with computationPCI Bus 1.Copy input data from CPU memory to GPUmemoryPCI Bus 1.Copy input data from CPU memory to GPUmemory2.Load GPU code and execute itPCI Bus 1.Copy input data from CPU memory to GPUmemory2.Load GPU code and execute it3.Copy results from GPU memory to CPUmemory•T total=T HtoD+T Exec+T DtoH •More Overlap?HtoD Exec DtoH Stream 1HD1 HD2 E1 E2 DH1 DH2 Stream 2cudaStreamCreate(&stream1);cudaMemcpyAsync(dst1, src1, size, cudaMemcpyHostToDevice, stream1);kernel<<<grid, block, 0, stream1>>>(…);cudaMemcpyAsync(dst1, src1, size, stream1);cudaStreamSynchronize(stream1);cudaStreamCreate(&stream1);cudaStreamCreate(&stream2);cudaMemcpyAsync(dst1, src1, size, cudaMemcpyHostToDevice, stream1); cudaMemcpyAsync(dst2, src2, size, cudaMemcpyHostToDevice,stream2);kernel<<<grid, block, 0, stream1>>>(…);kernel<<<grid, block, 0, stream2>>>(…);cudaMemcpyAsync(dst1, src1, size, cudaMemcpyDeviceToHost, stream1); cudaMemcpyAsync(dst2, src2, size, cudaMemcpyDeviceToHost, stream2);cudaStreamSynchronize(stream1);cudaStreamSynchronize(stream2);KEPLER IN DETAIL23 © 2012, NVIDIAKepler•NVIDIA Kepler–1.31 tflops double precision–3.95 tflops single precision–250 gb/sec memorybandwidth–2,688 Functional Units(cores)•~= #1 on Top500 in 1997- KeplerKepler GK110 SMX vs Fermi SM3x perfPower goes down!New ISA Encoding: 255 Registers per Thread•Fermi limit: 63 registers per thread–A common Fermi performance limiter–Leads to excessive spilling•Kepler : Up to 255 registers per thread–Especially helpful for FP64 appsHyper-Q•Feature of Kepler K20 GPUs to increase application throughput by enabling work to be scheduled onto the GPU in parallel •Two ways to take advantage–CUDA Streams – now they really are concurrent –CUDA Proxy for MPI – concurrent CUDA MPIprocesses on one GPUBetter Concurrency SupportWork Distributor32 active gridsStream Queue Mgmt C B AR Q PZ Y XGrid Management UnitPending & Suspended Grids 1000s of pending gridsSMX SMX SMX SMXSM SM SM SM Work Distributor16 active gridsStream Queue MgmtC B AZ Y XR Q PCUDAGeneratedWorkFermiKepler GK110Fermi ConcurrencyFermi allows 16-way concurrency –Up to 16 grids can run at once–But CUDA streams multiplex into a single queue –Overlap only at stream edges P<<<>>> ;Q<<<>>> ;R<<<>>> A<<<>>> ; B<<<>>> ;C<<<>>> X<<<>>> ;Y<<<>>> ; Z<<<>>> Stream 1Stream 2Stream 3Hardware Work QueueA--B--C P--Q--R X--Y--ZKepler Improved ConcurrencyP<<<>>> ; Q<<<>>> ; R<<<>>>A <<<>>>;B <<<>>>;C<<<>>>X <<<>>>;Y <<<>>>; Z<<<>>>Stream 1Stream 2Stream 3Multiple Hardware Work QueuesA--B--CP--Q--R X--Y--ZKepler allows 32-way concurrencyOne work queue per stream Concurrency at full-stream level No inter-stream dependenciesCPU ProcessesShared GPUE FDCBACPU ProcessesShared GPUE FDCBACPU ProcessesShared GPUE FDCBACPU ProcessesShared GPUE FDCBACPU ProcessesShared GPUE FDCBACPU ProcessesShared GPUE FDCBACPU ProcessesShared GPUE FDCBAHyper-Q: Simultaneous MultiprocessE FDCBACPU ProcessesShared GPUCUDA ProxyClient – Server Software SystemWithout Hyper-QTime100500 G P U U t i l i z a t i o n % A B C D E FWith Hyper-Q Time 10050 0 G P U U t i l i z a t i o n % A A ABB BC CC D DDE E EF F FWhat is Dynamic Parallelism?The ability to launch new kernels from the GPU –Dynamically - based on run-time data–Simultaneously - from multiple threads at once–Independently - each thread can launch a different gridCPU GPU CPU GPU Fermi: Only CPU can generate GPU work Kepler: GPU can generate work for itselfCPU GPU CPU GPUWhat Does It Mean?Autonomous, Dynamic Parallelism GPU as Co-ProcessorNew Types of Algorithms•Recursive Parallel Algorithms like Quick sort •Adaptive Mesh Algorithms like Mandelbrot CUDA TodayCUDA on KeplerComputational Powerallocated to regions of interestGPU Familiar Programming Model__global__ void B(float *data) {do_stuff(data);X <<< ... >>> (data);Y <<< ... >>> (data);Z <<< ... >>> (data);cudaDeviceSynchronize();do_more_stuff(data);}ABCXYZ CPUint main() {float *data;setup(data);A <<< ... >>> (data);B <<< ... >>> (data);C <<< ... >>> (data);cudaDeviceSynchronize(); return 0;}__device__ float buf[1024]; __global__ void cnp(float *data){int tid = threadIdx.x;if(tid % 2)buf[tid/2] = data[tid]+data[tid+1];__syncthreads();if(tid == 0) {launch<<< 128, 256 >>>(buf); cudaDeviceSynchronize(); }__syncthreads();cudaMemcpyAsync(data, buf, 1024); cudaDeviceSynchronize();}Code Example Launch is per-threadand asynchronous__device__ float buf[1024]; __global__ void cnp(float *data) { int tid = threadIdx.x; if(tid % 2) buf[tid/2] = data[tid]+data[tid+1]; __syncthreads(); if(tid == 0) { launch<<< 128, 256 >>>(buf); cudaDeviceSynchronize();}__syncthreads();cudaMemcpyAsync(data, buf, 1024); cudaDeviceSynchronize();}Code Example Launch is per-threadand asynchronousCUDA primitives are per-blocklaunched kernels and CUDA objects like streams are visible to all threads in athread blockcannot be passed to child kernel__device__ float buf[1024]; __global__ void cnp(float *data) { int tid = threadIdx.x; if(tid % 2) buf[tid/2] = data[tid]+data[tid+1];__syncthreads();if(tid == 0) {launch<<< 128, 256 >>>(buf); cudaDeviceSynchronize();}__syncthreads();cudaMemcpyAsync(data, buf, 1024); cudaDeviceSynchronize();} Code Example Launch is per-threadand asynchronousCUDA primitives are per-blockSync includes all launches by any thread in the block__device__ float buf[1024]; __global__ void cnp(float *data) { int tid = threadIdx.x; if(tid % 2) buf[tid/2] = data[tid]+data[tid+1]; __syncthreads(); if(tid == 0) { launch<<< 128, 256 >>>(buf); cudaDeviceSynchronize(); } __syncthreads();cudaMemcpyAsync(data, buf, 1024); cudaDeviceSynchronize();}Code Example Launch is per-threadand asynchronousCUDA primitives are per-blockSync includes all launchesby any thread in the blockcudaDeviceSynchronize() does not imply syncthreads()__device__ float buf[1024]; __global__ void cnp(float *data){int tid = threadIdx.x;if(tid % 2)buf[tid/2] = data[tid]+data[tid+1];__syncthreads();if(tid == 0) {launch<<< 128, 256 >>>(buf); cudaDeviceSynchronize();}__syncthreads();cudaMemcpyAsync(data, buf, 1024); cudaDeviceSynchronize();}Code Example Launch implies membar(child sees parent state at time of launch)__device__ float buf[1024]; __global__ void cnp(float *data) { int tid = threadIdx.x; if(tid % 2)buf[tid/2] = data[tid]+data[tid+1];__syncthreads();if(tid == 0) {launch<<< 128, 256 >>>(buf); cudaDeviceSynchronize(); }__syncthreads();cudaMemcpyAsync(data, buf, 1024); cudaDeviceSynchronize(); } Code Example Launch implies membar(child sees parent state at time of launch) Sync implies invalidate(parent sees child writes after sync)。
中科大-并行计算讲义-并行计算机系统与结构模型PPT文档共37页

中科大-并行计算讲义-并行计算机系 统与结构模型
11、不为五斗米折腰。 12、芳菊开林耀,青松冠岩列。怀此 贞秀姿 ,卓为 霜下杰 。
13、归去来兮,田蜀将芜胡不归。 14、酒能祛百虑,菊为制颓龄。 15、春蚕收长丝,秋熟靡王税。
谢谢你的阅读
❖ 知识就是财富 ❖ 丰富你的人生
71、既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。——康德 在旅行之际却是夜间的伴侣。——西塞罗 73、坚持意志伟大的事业需要始终不渝的精神。——伏尔泰 74、路漫漫其修道远,吾将上下而求索。——屈原 75、内外相应,言行相称。——韩非
中科大多核并行计算课件

• 划分重点在于:子问题易解,组合成原问题的解方便; • 有别于分治法
常见划分方法
• 均匀划分 • 方根划分
• 对数划分
• 功能划分(补)
2013-6-26
《并行与分布计算》 3 / Ch6
6.1.4 功能划分
方法: n个元素A[1..n]分成等长的p组,每组满足 某种特性。 示例: (m, n)选择问题(求出n个元素中前m个最小者)
2013-6-26
《并行与分布计算》 6 / Ch6
6.1.4 功能划分
2.2 奇偶归并示例:m=n=4 A=(2,4,6,8) B=(0,1,3,5)
(4, 4)2×(2, 2)4×(1, 1)
2 4 6
8 0 1 3
2 0 6
3 4 1 8
0 2 3
6 1 4 5
0 2 3
6 1 4 5
0 1 2 3 4 5 6 8 交叉比较
- 功能划分:要求每组元素个数必须大于m;
- 算法是基于Batcher排序网络,下面先介绍一些预备知识 :
1.Batcher比较器
2.奇偶归并及排序网络: 网络构造、奇偶归并网络、奇偶排序网络
3.双调归并及排序网络:
定义与定理、网络构造、双调归并网络、双调排序网络
《并行与分布计算》 4 / Ch6
1
3
Circuit for 4 inputs
1 2 3 4 15 21 28
《并行与分布计算》 24 / Ch6
6
10 10 5 + 11 10 10
Circuit for 4 inputs
+ 10 18 +
26
并行计算讲义

燕山大学课程讲义并行计算导论授课人:郭栋梁学时:32学时其中实验课:8学时三级项目:16学时第1章引言1.1概述单处理器计算机即将成为过时的概念.我们需要考虑如下因素来着手改进提高计算机的性能:(1)单纯依靠单处理器很难提升现有计算机的性能.即使有一个性能十分强大的单处理器,其功耗也让人无法接受.想要提升计算机的性能,更加可行的方法是同时使用多个简单处理器,它所能达到的性能可能是现有单处理器计算机性能的几千倍。
(2)观察结果显示,除非使用并行处理技术,一个程序在一台型号更新的单处理器计算机上的运行速度,可能比在旧的计算机上的运行速度更慢。
能依照给定算法检测出程序中的并行结构的编程工具还有待开发。
此算法需要能够检测出变ja之间的依赖关系是否规则;而且不管这些依赖是否规则,此算法都能在保证程序正确性的前提下,通过将程序中的一些子任务并行化来加速程序的执行。
(3)提升未来的计算机性能的关键就在于并行程序的开发,这涉及各个层面的工作:算法、程序开发、操作系统、编译器及硬件设备。
(4)并行计算除了要考虑到参与并行计算的处理器的数量,还应该考虑处理器与处理器、处理器与内存之间的通信。
最终计算性能的提升既依赖于算法能够提升的空间,更依赖于处理器执行算法的效率。
而通信性能的提升则依赖于处理器对数据的供应和提取的速度。
(5)内存系统的速度始终比处理器慢,而且由于一次只能进行单个字的读写操作,内存系统的带宽也有限制。
(6)内存系统的速度始终比处理器慢,而且由于一次只能进行单个字的读写操作,内存系统的带宽也有限制。
本书内容主要涉及并行算法与为了实现这些算法而设计的硬件结构。
硬件和软件是相互影响的,任何软件的最终运行环境是由处理器组成的底层硬件设备和相应的操作系统组成.我们在本章开始的部分会介绍一些概念,之后再来讨论为了实现这些概念有哪些方法和限制.1.2自动并行编程对于算法在软件中的实现过程我们都很熟悉。
在编程并不需要了解目标计算机系统的具体细节,因为编译器会处理这些细节.但是在编程和调试时依旧沿用着在单一央处理器(CPU)上顺序处理的模式.从另一方面讲,为了实现并行算法,硬件和软件之间的相互联系需要比我们想象的更加密切。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ n,节点规模 w,数据宽度
国家高性能计算中心(合肥)
2021/4/12
22
标准互联网络(1)
▪ Myrinet:
▪ Myrinet是由Myricom公司设计的千兆位包交换网络,其目的 是为了构筑计算机机群,使系统互连成为一种商业产品。
▪ Myrinet是基于加州理工学院开发的多计算机和VLSI技术以及 在南加州大学开发的ATOMIC/LAN技术。Myrinet能假设任 意拓扑结构,不必限定为开关网孔或任何规则的结构。
▪ 多处理机总线系统的主要问题包括总线仲裁、中断处理、协议转换、 快速同步、高速缓存一致性协议、分事务、总线桥和层次总线扩展等
CPU板
LM
CPU
本地外围设备 (SCSI总线)
IOC
存储器板 存储器单元
本地总线
存储器总线
高速缓存
IF
IF
MC
系统总线
I/O板
IOP
IF
数据总线
缓冲
IF
(底板上)
通信板
IF
开关,在Ilinois大学的
Cedar[2]多处理机系统中采用了Ω网络
▪ Cray Y/MP多级网络,该网络用来支持8个向量处理器和256 个存储器模块之间的数据传输。网络能够避免8个处理器同时 进行存储器存取时的冲突。
国家高性能计算中心(合肥)
2021/4/12
21
动态互连网络比较
动态互连网络的复杂度和带宽性能一览表
▪ 一个交换开关模块有n个输入和n个输出,每个输入可连接到任 意输出端口,但只允许一对一或一对多的映射,不允许多对一 的映射,因为这将发生输出冲突
▪ 级间互连(Interstage Connection ):
▪ 均匀洗牌、蝶网、多路均匀洗牌、交叉开关、立方连接
▪ n输入的Ω网络需要log2 n 级22
国家高性能计算中心(合肥)
2021/4/12
3
第一章并行计算机系统及结构模型
▪ 1.1 并行计算
▪ 1.1.1 并行计算与计算科学 ▪ 1.1.2 当代科学与工程问题的计算需求
▪ 1.2 并行计算机系统互连
▪ 1.2.1 系统互连 ▪ 1.2.2 静态互联网络 ▪ 1.2.3 动态互连网络 ▪ 1.2.4 标准互联网络
国家高性能计算中心(合肥)
2021/4/12
2
并行计算——结构•算法•编程
▪ 第三篇 并行数值算法
▪ 第八章 基本通信操作 ▪ 第九章 稠密矩阵运算 ▪ 第十章 线性方程组的求解 ▪ 第十一章 快速傅里叶变换
▪ 第四篇 并行程序设计
▪ 第十二章 并行程序设计基础 ▪ 第十三章 并行程序设计模型和共享存储系统编程 ▪ 第十四章 分布存储系统并行编程 ▪ 第十五章 并行程序设计环境与工具
国家高性能计算中心(合肥)
2021/4/12
10
静态互连网络(1)
▪ 一维线性阵列(1-D Linear Array):
▪ 并行机中最简单、最基本的互连方式, ▪ 每个节点只与其左、右近邻相连,也叫二近邻连接, ▪ N个节点用N-1条边串接之,内节点度为2,直径N为/ 2N-1,对剖
宽度为1 ▪ 当首、尾节点相连时可构成循环移位器,在拓扑结构上等同于
▪ n-立方的节点度为n,网络直径也是n ,而对剖宽度为N / 2 。
▪ 如果将3-立方的每个顶点代之以一个环就构成了如图(d)所示 的3-立方环,此时每个顶点的度为3,而不像超立方那样节点 度为n。
(a)3-立方
(b)4-立方
(c)顶点代之以环
(d)3-立方环
国家高性能计算中心(合肥)
2021/4/12
▪ 中国联想: 1Tflops,Top43,2002
国家高性能计算中心(合肥)
ห้องสมุดไป่ตู้
2021/4/12
6
系统互连
▪ 不同带宽与距离的互连技术: 总线、SAN、LAN、MAN、WAN
100 Gb/s
MIN 或 交叉开关
10 Gb/s
局部总线 SCI
HiPPI
网络带宽
1
Myrinet
Gb/s
千兆位 以太网
100
网络特性
总线系统
多级互连网络
交叉开关
硬件复杂度
O(n w)
O((n log k n)w) O(n 2 w)
每个处理器带宽 报道的聚集带宽
O(wf / n) O(wf ) O(wf ) ~
O(wf )
SunFire服务器 IBM SP2中的 Digital的千兆开 中的Gigaplane 512节点的HPS: 关:3.4GB/s 总线:2.67GB/s 10.24GB/s
▪ 在垂直方向上带环绕,水平方向呈蛇状,就变成Illiac网孔了, 节点度恒为4,网络直径为 N 1 ,而对剖宽度为 2 N
▪ 垂直和水平方向均带环绕,则变成了2-D环绕(2-D Torus), 节点度恒为4,网络直径为 2 N / 2 ,对剖宽度为 2 N
(a)2-D网孔 国家高性能计算中心(合肥)
▪ 传统二叉树的主要问题是根易成为通信瓶颈。胖树节点间的通 路自叶向根逐渐变宽。
(a)二叉树
(b)星形连接
(c)二叉胖树
国家高性能计算中心(合肥)
2021/4/12
13
静态互连网络(4)
▪ 超立方 :
▪ 一个n-立方由 N 2n 个顶点组成,3-立方如图(a)所示;4-立 方如图(b)所示,由两个3-立方的对应顶点连接而成。
▪ Myrinet在数据链路层具有可变长的包格式,对每条链路施行 流控制和错误控制,并使用切通选路法以及定制的可编程的主 机接口。在物理层上,Myrinet网使用全双工SAN链路,最长 可达3米,峰值速率为(1.28+1.28)Gbps(目前有 2.56+2.56)
核武器数值模拟、航天器设计、基因测序等。 ▪ 需求类型:计算密集、数据密集、网络密集。 ▪ 美国HPCC计划:重大挑战性课题,3T性能 ▪ 美国Petaflops研究项目:Pflop/s。 ▪ 美国ASCI计划:核武器数值模拟。
国家高性能计算中心(合肥)
2021/4/12
5
高性能计算机
▪ Intel(Option Red): 1Tflops,1997,Pentium Pro
▪ 1.3 并行计算机系统结构
▪ 1.3.1 并行计算机结构模型 ▪ 1.3.2 并行计算机访存模型
国家高性能计算中心(合肥)
2021/4/12
4
并行计算
▪ 并行计算:并行机上所作的计算,又称高性能 计算或超级计算。
▪ 计算科学:计算物理、计算化学、计算生物等 ▪ 科学与工程问题的需求:气象预报、油藏模拟、
▪ 对剖宽度(Bisection Width) :对分网络各半所必须 移去的最少边数
▪ 对剖带宽( Bisection Bandwidth):每秒钟内,在最小的对
剖平面上通过所有连线的最大信息位(或字节)数
▪ 如果从任一节点观看网络都一样,则称网络为对称的 (Symmetry)
国家高性能计算中心(合肥)
2021/4/12
9
静态互连网络 与动态互连网络
▪ 静态互连网络:处理单元间有着固定连接的一类网络, 在程序执行期间,这种点到点的链接保持不变;典型的 静态网络有一维线性阵列、二维网孔、树连接、超立方 网络、立方环、洗牌交换网、蝶形网络等
▪ 动态网络:用交换开关构成的,可按应用程序的要求动 态地改变连接组态;典型的动态网络包括总线、交叉开 关和多级互连网络等。
桥
系统 I
节点 2
节点 N
SAN(e.g.Myrinet)
I/O总线,系统总线
接口
LAN(e.g.以太网,FDDI)
系统 II
国家高性能计算中心(合肥)
2021/4/12
8
网络性能指标
▪ 节点度(Node Degree):射入或射出一个节点的边 数。在单向网络中,入射和出射边之和称为节点度。
▪ 网络直径(Network Diameter): 网络中任何两个 节点之间的最长距离,即最大路径数。
N 1
是
N
非
2(N N )
非
2N
是
2N
二叉树
N
3 2log N 1
1
非
N 1
星形
2
N
N 1
超立方
N 2n
n
n
非 N / 2
N 1
是
N/2
nN / 2
立方环
N k 2k
3
2k 1 k / 2 N /(2k)
是
3N / 2
国家高性能计算中心(合肥)
2021/4/12
17
动态互连网络 (1)
▪ 总线:PCI、VME、Multics、Sbus、MicroChannel
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
(a)4种可能的开关连接
输入 000 001
输出 000 001
010
010
011
011
100
100
101
101
110
110
111
111
第0级
第1级
第2级
(b)一种8输入的Omega网络
国家高性能计算中心(合肥)
2021/4/12
20
动态互连网络(4)
▪ 交换开关模块:
▪ SGI(Option Blue Mountain): 3Tflops,1998,MIPS10000
▪ IBM(Option White): 7Tflops,Top4,2001,Power3