如何用openmp方法将jacobi迭代例题程序并行化

OpenACC并行编程实战
由""直接销售和发货 并提供售后服务
查看是否享有优惠(30天免息、任性分期)
使用享优惠(30天免息、任性分期),立即
请选择您需要的分期方式
商家满意度
与同行业相比
商品评分:分
服务态度:分
物流速度:分
1分钱畅读全场,海量书籍不限量任你看
出版时间:
印刷时间:
字数:200000
开本:16开
装帧:平装
本商家商品保证正品行货,严格按照国家三包政策提供售后服务,因质量问题产生的退换货服务运费由本店承担。
亲爱的顾客,为保障您的权益,请您对配送商品查验确认合格后签收,如有问题,请及时与商家联系。如需退货,请将包装一并寄回哦。
本站商品信息均来自于苏宁云台商家,其真实性、准确性和合法性由信息发布者(商家)负责。本站不提供任何保证,并不承担任何法律责任。因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本站不能确保客户收到的货物与网站图片、产地、附件说明完全一致,网站商品的功能参数仅供参考,请以实物为准。若本站没有及时更新,请您谅解!
易购价:易购价为商品的销售价,是您最终决定是否购买商品的依据。
参考价:商品展示的参考价(或划横线价),可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在苏宁易购平台或销售商门店曾经展示过的挂牌价;由于地区、时间的差异性和市场行情波动,品牌专柜标价、商品吊牌价、销售商门店挂牌价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:如无特殊说明,折扣指销售商在参考价或划横线价(如品牌专柜标价、商品吊牌价、厂商指导价、厂商建议零售价、销售商门店挂牌价)等某一价格基础上计算出的优惠比例或优惠金额;如有疑问,您可在购买前联系销售商进行咨询。
异常问题:商品促销信息以商品详情页“促销”信息为准;商品的具体售价以订单结算页价格为准;如您发现活动商品售价或促销信息有异常,建议购买前先联系销售商咨询。
如果您发现了更低价格,请告诉我们。我们将认真对待您的每一份建议,确保提供最优质的服务及最优惠的价格。
易购价:& 21.9
请选择您所发现的位置:
* 商品网址:
线下实体店
* 实体店名称:
提交成功,感谢您的反馈
该商品在当前城市正在进行
抢购价:& 38.00
易购价:& 38.00
注:参加抢购将不再享受其他优惠活动
亲,很抱歉,您购买的宝贝销售异常火爆,让小苏措手不及,请稍后再试~
看不清楚?
亲,大宗购物请点击小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
您已成功将商品加入收藏夹CUDA之多设备并行
[问题点数:40分,结帖人sparrow986831]
本版专家分:252
结帖率 58.33%
CSDN今日推荐
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:20
本版专家分:21
本版专家分:252
本版专家分:0
本版专家分:252
本版专家分:252
本版专家分:102
本版专家分:252
本版专家分:102
本版专家分:252
本版专家分:252
匿名用户不能发表回复!|
其他相关推荐计算机科学丛书:高性能科学与工程计算百度会学 - 定义优质教育资源
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
计算机科学丛书:高性能科学与工程计算
分84人在读
  《计算机科学丛书:高性能科学与工程计算》从工程实践的角度介绍了高性能计算的相关知识。主要内容包括现代处理器的体系结构、为读者理解当前体系结构和代码中的性能潜力和局限提供了坚实的理论基础。接下来讨论了高性能计算中的关键问题,包括串行优化、并行、OpenMP、MPI、混合程序设计技术。作者根据自身的研究也提出了一些前沿问题的解决方案,如编写有效的C++代码、GPU编程等。
作者简介更新中
Introduction to High Performance Computing for Scientists and Engineers出版者的话译者序序前言缩略词第1章
当代处理器1.1
存储程序的计算机体系结构1.2
基于高速缓存的通用微处理器体系结构1.2.1
性能指标和基准测试1.2.2
晶体管:摩尔定律1.2.3
流水线1.2.4
超标量1.2.5
存储层次1.3.1
高速缓存1.3.2
高速缓存映射1.3.3
多核处理器1.5
多线程处理器1.6
向量处理器1.6.1
设计原理1.6.2
最高性能估计1.6.3
程序设计习题第2章
串行代码基本优化技术2.1
标量剖析2.1.1
基于函数和代码行的程序剖析2.1.2
硬件性能计数器2.1.3
手工代码插入2.2
优化常识2.2.1
少做工作2.2.2
避免耗时运算2.2.3
缩减工作集2.3
小方法,大改进2.3.1
消除常用子表达式2.3.2
避免分支2.3.3
使用SIMD指令集2.4
编译器作用2.4.1
通用优化选项2.4.2
计算准确性2.4.5
寄存器优化2.4.6
利用编译日志2.5
C++优化2.5.1
临时变量2.5.2
动态内存管理2.5.3
循环与迭代器习题第3章
数据访存优化3.1
平衡分析与lightspeed评估3.1.1
基于带宽的性能建模3.1.2
STREAM 基准测试3.2
存储顺序3.3
案例分析:Jacobi算法3.4
案例分析:稠密矩阵转置3.5
算法分类和访存优化3.5.1
O(N)/O(N)3.5.2
O(N2)/O(N2)3.5.3
O(N3)/O(N2)3.6
案例分析:稀疏矩阵向量乘3.6.1
稀疏矩阵的存储机制3.6.2
JDS sMVM优化习题第4章
并行计算机4.1
并行计算模式分类4.2
共享存储计算机4.2.1
cache一致性4.2.2
分布式存储计算机4.4
混合型系统4.5
网络的基本性能特征4.5.2
交换网络和胖树网络4.5.4
Mesh 网络4.5.5
混合网络习题第5章
并行性基础5.1
为什么并行化5.2
并行性5.2.1
数据并行性5.2.2
功能并行性5.3
并行扩展性5.3.1
限制并行执行的因素5.3.2
可扩展性指标5.3.3
简单可扩展性定律5.3.4
并行效率5.3.5
串行性能与强可扩展性5.3.6
改进的性能模型5.3.7
选择正确的扩展性基准5.3.8
案例分析:低速处理器计算机能否变得更快5.3.9
负载不均衡习题第6章
使用OpenMP进行共享存储并行编程6.1
OpenMP简介6.1.1
并行执行6.1.2
数据作用域6.1.3
循环的OpenMP工作共享6.1.4
循环调度6.1.7
其他方面6.2
案例分析:OpenMP并行实现Jacobi算法6.3
高级OpenMP:波前并行化习题第7章
高效OpenMP编程7.1
OpenMP程序性能分析7.2
性能缺陷7.2.1
减轻Open MP共享区开销7.2.2
决定短循环的OpenMP开销7.2.3
串行化7.2.4
案例分析:并行稀疏矩阵向量乘习题第8章
ccNUMA体系结构的局部性优化8.1
ccNUMA的局部访问8.1.1
首次访问方式分配页面8.1.2
通过其他方式的局部性访问8.2
案例分析:稀疏MVM的ccNUMA优化8.3
页面布局缺陷8.3.1
非NUMA友好的OpenMP调度8.3.2
文件系统高速缓存8.4
C++中的ccNUMA问题8.4.1
对象数组8.4.2
标准模板库习题第9章
使用MPI进行分布式存储并行内存编程9.1
消息传递9.2
MPI简介9.2.1
一个简单例子9.2.2
消息和点对点通信9.2.3
集合通信9.2.4
非阻塞点对点通信9.2.5
虚拟拓扑9.3
实例:Jacobi解法器的MPI并行9.3.1
MPI实现9.3.2
性能特征习题第10章
高效MPI编程10.1
MPI性能工具10.2
通信参数10.3
同步、串行化和竞争10.3.1
隐式串行化和同步10.3.2
降低通信开销10.4.1
最优化区域分解10.4.2
聚合消息10.4.3
非阻塞与异步通信10.4.4
集合通信10.5
理解节点内点对点通信习题第11章
MPI与OpenMP混合编程11.1
基本MPI/OpenMP混合编程模型11.1.1
向量模式实现11.1.2
任务模式实现11.1.3
案例分析:混合Jacobi解法器11.2
MPI线程交互分类11.3
混合分解及映射11.3.1
每个节点一个MPI进程11.3.2
每个插槽一个MPI进程11.3.3
每个插槽多个MPI进程11.4
混合编程的优势和劣势11.4.1
改善的收敛速度11.4.2
共享高速缓存中的数据重用11.4.3
利用额外级别的并行性11.4.4
重叠MPI通信和计算11.4.5
减少MPI开销11.4.6
多级别开销11.4.7
向量模式下批量同步通信附录A
多核环境中的拓扑和亲缘性A.1
线程和进程分布A.2.1
外部亲缘性工具A.2.2
程序控制亲缘性A.3
非页面首次访问分配策略附录B
习题解答参考文献
书摘更新中《并行计算》期末总结
《并行计算》总结
标签: 并行计算
zhengdongjian@tju.edu.cn
Openmp gcc 编译选项为-fopenmp
虚进程不能避免死锁,系理解错误
一、并行介绍
针对的分解对象:数据
首先确定数据如何划分到各处理器
然后确定各处理器要做的事情
示例:求最大值
任务(功能)分解
针对的分解对象:任务(功能)
首先将任务划分到各处理器
然后确定各处理器要处理的数据
二、并行硬件性能
Flynn弗林分类
SISD: Single Instruction stream Single Data stream
并行计算机结构模型
PVP(Parellel Vector Processor),并行向量处理机。特点:不使用高速缓存,而是使用大量向量寄存器和指令缓存。只有充分考虑了向量处理特点的程序才能获得较好的性能。
SMP(Symmetric Multiprocessor),并行多处理器,共享存储器。扩展性有限。
MPP(Massively Parellel Processor),大规模并行处理器。只有微内核(每个节点无独立的操作系统etc),高通信带宽,低延迟互联网络,分布存储。异步MIMD。
Cluster,集群。分布存储,每个节点是一个完整的计算机。投资风险小、结构灵活、性价比高、充分利用分散的计算资源、可扩展性好。问题:通信性能。
内存访问模型
UMA(Uniform Memory Access),均匀存储访问。
物理存储器被均匀共享(访存时间)
可带私有Cache
外围设备也共享
NUMA(Nonuniform Memory Access),非均匀存储访问。
被共享的存储器分布在所有处理器中
处理器访问存储器的时间不同:本地(LM)和群内共享(CSM)较快,外地和全局共享(GSM)较慢
可带私有Cache
外围设备共享
NORMA(No-Remote Memory Access),非远程存储访问
所有存储器私有
节点间通过消息传递进行数据交换 -& 网络、环网、超立方、立方环
摩尔定律(18个月单位面积晶体管数量翻一倍)
Power Wall(性能越高,提高性能需要的功率越大)
Memory Wall,内存性能提高不及CPU
多核(Dual core)与超线程(Hyper Thread, HT)
双核是真正意义上的双处理器,不会发生资源冲突,每个线程拥有自己的缓存、寄存器和运算器
超线程提高性能&1/3,双核相当于2×NHT
执行时间 Elapsed Time, Tn=T计算+T并行开销+T通信
浮点运算数 Flop (Floating-point operation)
指令数目 MIPS (Million Instructions Per Sencond)
计算/通信比 TcompTcomm
加速比 S(n)=tstp
效率 E=tstp×n
代价 Cost=tsnS(n)=tsE
处理器数P,问题规模W(串行分量Ws),并行化部分Wp,串行时间Ts,并行时间Tp,加速比S,效率E
加速比定律 前两个拷一个
Amdahl定律: 固定的计算负载,增加处理器数量加速。S=Ws+WpWs+Wpp=f+(1-f)f+(1-f)/p=p1-f(p-1)
Gustafson定律:增加计算量,响应增多处理器,以提高精度。S′=Ws+pWpWs+pWp/p=f+p(1-f)=p-f(p-1)
Sun and Ni定律:存储受限。S′′=fW+(1-f)G(p)WfW+(1-f)G(p)W/p=f+(1-f)G(p)f+(1-f)G(p)/p
G(p)=1时为Amdahl定律
G(p)=p为Gustafson定律
G(p)&p时加速比Amdahl和Gustafson高
三、内存系统和多线程
内存系统对性能的影响
对很多应用而言,瓶颈在于内存系统,而不是CPU
内存性能包括:延迟和带宽
延迟:处理器向内存发起访问直到获取数据所需要的时间
带宽:内存系统向处理器传输数据的速率
想要立刻扑灭火灾 → 减少延迟
想要扑灭更大的火 → 增加带宽
使用高速缓存改善延迟
高速缓存生效的关键是:数据被重复利用。由高速缓存提供的数据份额称为高速缓存命中率
计算题:增加缓存后的峰值计算速度(MFLOPS)
时间本地性:对相同数据项的重复引用
空间本地性:对数据布局的假设 =& 连续的数据字被连续的指令所使用。
时间本地性和空间本地性对减少内存延迟和提高有效内存带宽非常重要
提高整体计算性能的参考指标之一:计算次数内存访问次数
多线程基本概念
线程是进程上下文中执行的代码序列,又称“轻量级进程”
可以并发执行
也可以并发执行,并发性更好
拥有自己的资源
除部分必不可少的栈和寄存器,不拥有自己的资源
创建和撤销要分配/回收资源,耗时大
线程切换只涉及少量寄存器的操作,不涉及存储管理方面的操作,切换较为容易
用户级线程:通过线程库实现
核心级线程:操作系统直接实现
硬件线程:线程在硬件执行资源上的表现形式
单个线程一般包括上述三个层次的表现:用户级线程通过操作系统被作为核心级线程实现,再通过硬件相应的接口作为硬件线程来执行
线程的声明周期
就绪状态:创建;唤醒
就绪状态→运行状态:进程调用
等待状态:睡眠
线程的同步
竞争条件:两个或多个进程视图在同一时刻访问共享内存,或读写某些共享数据,而最后的结果取决于线程执行的顺序,就成为竞争条件(Race Conditions)
Bernstein条件:I1∩O2=?,I2∩O1=?,O1∩O2=?,总结起来,就是→不能同时写←_←。满足Bernsteni条件的两个线程可以同步执行。
临界区:包含有共享数据的一段代码,这些代码可能被多个线程执行。
信号量:用一个证书变量sem表示;两个原子操作(P和V) ?sem_post&sem_wait
互斥锁:一种锁,线程在对共享资源进行访问前必须先获得锁。→死锁
条件变量:用于通知共享数据状态信息,当特定条件满足时,线程等待或者唤醒其他合作线程。?&pthread_cond_signal&pthread_cond_broadcast
pthread_cancel
终止另一个线程
pthread_create
创建一个线程
pthread_detach
pthread_equal
测试TID相等
pthread_exit
pthread_join
pthread_self
- pthread_mutex_t mtx
- pthread_mutex_init(&mtx, NULL);
- pthread_mutex_lock pthread_mutex_unlock
- pthread_mutex_destroy
实例:计算数组中3出现次数
Cache一致性
假共享(solve: add padding)
四、OpenMP
OpenMP概述
是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言
是一种能够被用于显示制导多线程、共享内存并行的应用程序编程接口(API)
编程模型:Fork-Join,并行时派生线程,并行结束后Join各线程
OpenMP实现
较新版本的gcc可在编译时指定-popenmp-fopenmp
编译制导语句:使用#pragma omp parellel标识并行程序块
并行域:并行域中的代码被所有线程执行
共享任务:将其所包含的代码划分给线程组的各成员来执行(for、sections、single)
for:。。。
sections:内部代码划分给各线程
single:内部代码只由一个线程执行
master:指定代码段只有主线程执行
critical:域中的代码只能执行一个线程,其他线程被阻塞在临界区
barrier:同步一个线程组中的所有线程
atomic:指定特定的存储单元将被原子更新(x binop = expr)
flush:标识一个同步点,用以确保所有线程看到一致的存储器视图
ordered:指定其包含循环的执行按循环次序进行(任何时候只能有一个线程执行被ordered所限定的部分)
数据域属性子句
列出的变量对每个线程私有
列出的变量为所有线程共享
firstprivate
私有,且原子初始化
lastprivate
私有,且原始变量由最后一次迭代的赋值所修改
对列表中出现的变量进行归约
threadprivate
使一个全局文件作用域的变量在并行域内编程每个线程私有。每个线程对该变量赋值一份私有拷贝。
用来为线程组中所有线程的threadprivate变量赋相同的值
copyprivate
运行时库函数: omp.h
环境变量: OMP_SCHEDULE, etc
五、MPI(Message Passing Interface)
是一种标准或规范的代表,也是一种消息传递编程模型。
MPI的实现是一个库,而不是一门语言
MPI属于SPMD,Single Program Multiple Data;MPI属于弗林(Flynn)分类中的MIMD,Multiple Instruction stream Multiple Data stream。
六个基本接口(默认通讯域为MPI_COMM_WORLD)
MPI初始化,开始
MPI_Finalize
MPI_Comm_size
获取通信域内进程数量
MPI_Comm_rank
获取当前进程的编号
发送消息(数据)
接收消息(数据)
点到点通信
默认通讯域名称:MPI_COMM_WORLD
可以用MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm* newcomm)创建一个通信域。color用来划分处理器。
MPI_Send:发送消息
MPI_Recv:接收消息
消息标签:避免两条消息混淆。情形一:同一进程发出的两条消息,无法区分一条消息是否已经传输完毕;情形二:多个进程向同一进程发送消息,无法区分消息来源。
标准通信模式
缓存通信模式
同步通信模式
就绪通信模式
标准通信模式
MPI_Send同步发送(→死锁)、异步发送
缓存通信模式
MPI_Bsend,用户自己管理缓冲区
同步通信模式
本身不依赖接收是否已经启动,但MPI_Ssend同步发送必须等到接收进程开始后才能正确返回。返回时说明数据已经全部进入缓冲,刚开始发送
就绪通信模式
MPI_Rsend只有当接收进程的接收操作已经启动时,才可以在发送进程启动发送操作
非阻塞通信
标准通信模式
缓存通信模式
同步通信模式
就绪通信模式
标准通信模式
MPI_Isend,立即返回
缓存通信模式
MPI_Ibsend
同步通信模式
MPI_Issend
就绪通信模式
MPI_Irsend
重复非阻塞通信模式
MPI_Send_init MPI_Bsend_init等
重复非阻塞通信模式用于需要重复进行通信的情形,如一个for循环内部。
非阻塞通信的完成与检测
检测:MPI_Test、MPI_Testany、MPI_Testsome、MPI_Testall
完成:MPI_Wait、MPI_Waitany、MPI_Waitsome、MPI_Waitall
Jacobi迭代
hi,j=hi-1,j+hi+1,j+hi,j-1+hi,j+14
使用非阻塞操作,或者捆绑发送接收,或者虚进程,以避免死锁
胡诌的一份伪码(使用非阻塞发送):
int right_rank = rank == max_rank ? 0 : rank + 1;
int left_rank = rank == 0 ? max_rank : rank - 1;
MPI_Issend(data, count, MPI_DOUBLE, right_rank, tag1, MPI_COMM_WORLD);
MPI_Irecv(buffer, count, MPI_DOUBLE, left_rank, tag2, MPI_COMM_WORLD);
MPI_Wait...
MPI_Sendrecv捆绑发送和虚进程
捆绑发送接收:把发送一个消息到一个目的地和从另一个进程接收一个消息合并到一个调用中,源和目的可以相同
语义上等价于一个发送和一个接收操作,但操作由通信系统来实现,系统会优化通讯次序,避免不合理次序,可以有效避免死锁。
非对称,一个捆绑发送接收调用发出的消息可以被普通接收操作接收,反之亦然。
该操作执行一个阻塞的发送和接收,接收和发送使用同一个通信域
MPI_Sendrecv(
void* sendbuf,
int sendcount,
MPI_Datatype sendtype,
int sendtag,
void* recvbuf,
int recvcount,
MPI_Datatype recvtype,
int source,
int recvtag,
MPI_Comm comm,
MPI_Status* status
虚拟进程:MPI_PROC_NULL:为了方便程序的编写。向虚进程发送数据或者从虚进程接收数据时,调用都会立即正确返回,如同执行了一个空操作。
mpicc v11.1将上述MPI_PROC_NULL定义为整数-2,不会和正常的编号(≥0)产生冲突,因此可以让MPI对其特殊处理。
if (myrank & 0) {
leftrank = myrank - 1;
leftrank = MPI_PROC_NULL;
if (myrank & n) {
rightrank = myrank + 1;
rightrank = MPI_PROC_NULL;
MPI_Sendrecv(send_data1, send_count, MPI_FLOAT, rightrank, tag1, recv_data1, recv_count, MPI_FLOAT, leftrank, tag1, MPI_COMM_WORLD, status);
MPI_Sendrecv(send_data2, send_count, MPI_FLOAT, leftrank, tag1, recv_data2, recv_count, MPI_FLOAT, rightrank, tag1, MPI_COMM_WORLD, status);
组通信类型
一到多, Broadcast,Scatter
广播(bcast,发送消息给某一通信域内的所有进程),发散(scatter,向某一通信域内的所有进程发送一个不同的消息)
多到一, Reduce,Gather
root进程接收各个进程(包括自己)的消息,通信连接按rank号进行。Reduce会进一步做归约处理(Max, Min, Sum等)
多到多, Allreduce,Allgather,Alltoall
每个进程都从其他进程接收消息。Reduce同上。Alltoall接发阵列
同步各进程
不同类型的归约操作对比
归约到某一进程
Reduce_scatter
归约并散发
组归约,每个进程的缓冲区都得到相同的归约结果
每个进程对排在前面的进程做归约
MPI数据类型
MPI数据类型
对应C/C++数据类型
自定义数据类型
虚拟进程拓扑
某些应用中,进程的线性排列不能充分反应进程间下逻辑上的通信模型。进程经常被排列成二维或三维网格形式的拓扑模型,而且通常用一个图类描述逻辑进程排列。这种逻辑进程排列成为虚拟拓扑。
只能用在组内(inter-communicator)通信域上
简化代码编写
辅助运行时系统将进程映射到实际的硬件结构之上
便于MPI内部对通信进行优化
笛卡尔拓扑
每个进程处于一个虚拟的网格内,与其邻居通信
边界可以构成环
通过笛卡尔坐标来标识进程
任何两个进程也可以通信
适用于复杂的通信环境
MPI_Cart_create
创建虚拟拓扑
MPI_Cart_coords
根据进程号返回笛卡尔坐标
MPI_Cart_rank
根据笛卡尔坐标返回进程号
MPI_Cart_shift
MPI_Cart_sub
划分子拓扑
六、MapReduce
自动实现分布式并行计算
提供状态监控工具
模型抽象简洁,程序员易用
使用函数式编程模型。用户只需要实现两个接口:map和reduce
map:(in_key, in_value) -& (out_key, intermediate_value) list
reduce: (out_key, intermediate_value list) -& out_value list
七、PCAM并行程序设计方法学
例子:求前缀和
PCAM步骤:划分→通讯→组合→映射
划分:分解成小的任务,开拓并发性。
先进行域分解,再进行功能分解
域分解:划分的对象为数据。可以是算法的输入数据、中间处理数据和输出数据。将数据分解成大致相等的小数据片。→如果一个任务需要别的任务中的数据,则会产生任务间的通讯。
功能分解:划分的对象为计算。划分后,如果不同任务所需数据不想交则划分成功;如果数据有相当的重叠,则需要重新进行域分解和功能分解。
通讯:确定诸任务间的数据交换,检测划分的合理性。
划分产生的诸任务,一般不能完全独立执行,需要在任务间进行数据交流,从而产生了通讯。
功能分解确定了诸任务之间的数据流
诸任务是并发执行的,通讯限制了这种并发性
四种通讯模式
局部/全局通讯:局部通讯限制在一个邻域内,全局通讯则是非局部的。
结构化/非结构化通讯:结构化通讯下每个任务的通讯模式是相同的
静态/动态通讯
同步/异步通讯
组合:依据任务的局部性,组合成更大的任务。
合并小尺寸任务,减少任务数。如果任务数恰好等于处理器数,则也完成了映射过程。
通过增加任务的粒度和重复计算,可以减少通讯成本。
保持映射和扩展的灵活性,降低软件工程成本。
表面-容积效应:通讯量和任务子集的表面成正比,计算量和任务子集的体积成正比。增加重复计算有可能减少通讯量→重复计算减少了通讯量,但增加了计算量,应保持恰当的平衡,重复计算的目标应当是减少算法的总运算时间。(实例:二叉树求和,碟式结构使用了重复计算,但减少了总时间)
映射:将每个任务分配到处理器上,提高算法的性能。
每个任务要映射到具体的处理器,定位到运行机器上。
任务数大于处理器数时,存在负载均衡和任务调度问题。
映射的目标:减少算法的总执行时间
基本原则:并发的任务映射到不同的处理器上,存在高通讯的任务则尽量映射到相同的处理器上。
负载均衡算法?
静态的:事先确定
概率的:随机确定
动态的:执行期间动态负载
基于域分解的:
两种常用的任务调度算法
经理/雇员模式
非集中模式
OpenMP只需要知道基本的概念和能干什么即可,不用掌握编译制导语句
MPI需要掌握,重点
MapReduce:word count & 倒排索引 要搞清楚,词共现等不需要
并行计算的一点小总结
计算机并行计算考试重点总结
为什么要并行计算?
[并行计算] 1. 并行计算简介
浅谈多核CPU、多线程与并行计算
并行计算及其发展
没有更多推荐了,

我要回帖

更多关于 jacobi迭代矩阵 的文章

 

随机推荐