收藏 分销(赏)

Combining-MPI-and-OpenMP.ppt

上传人:知****运 文档编号:14660547 上传时间:2026-10-26 格式:PPT 页数:27 大小:827.04KB 下载积分:10 金币
下载 相关
Combining-MPI-and-OpenMP.ppt_第1页
第1页 / 共27页
Combining-MPI-and-OpenMP.ppt_第2页
第2页 / 共27页


点击查看更多>>
资源描述
Click to edit Master title style,*,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,Copyright,The McGraw-Hill Companies,Inc.Permission required for reproduction or display.,Parallel Programming,in C with MPI and OpenMP,Michael J.Quinn,Chapter 18,Combining MPI and OpenMP,Outline,Advantages of using both MPI and OpenMP,Case Study:Conjugate gradient method,Case Study:Jacobi method,C+MPI vs.C+MPI+OpenMP,C+MPI,C+MPI+OpenMP,Why C+MPI+OpenMPCan Execute Faster,Lower communication overhead,More portions of program may be practical to parallelize,May allow more overlap of communications with computations,Case Study:Conjugate Gradient,Conjugate gradient method solves,Ax,=,b,In our program we assume,A,is dense,Methodology,Start with MPI program,Profile functions to determine where most execution time spent,Tackle most time-intensive function first,Result of Profiling MPI Program,Function,1 CPU,8 CPUs,matrix_vector_product,99.55%,97.49%,dot_product,0.19%,1.06%,cg,0.25%,1.44%,Clearly our focus needs to be on function,matrix_vector_product,User Control of Threads,Want to give user opportunity to specify number of active threads per process,Add a call to omp_set_num_threads to function main,Argument comes from command line,omp_set_num_threads(atoi(argv3);,What Happened?,We transformed a C+MPI program to a C+MPI+OpenMP program by adding only two lines to our program!,Benchmarking,Target system:a commodity cluster with four dual-processor nodes,C+MPI program executes on 1,2,.,8 CPUs,On 1,2,3,4 CPUs,each process on different node,maximizing memory bandwidth per CPU,C+MPI+OpenMP program executes on 1,2,3,4 processes,Each process has two threads,C+MPI+OpenMP program executes on 2,4,6,8 threads,Results of Benchmarking,Analysis of Results,C+MPI+OpenMP program slower on 2,4 CPUs because C+MPI+OpenMP threads are sharing memory bandwidth,while C+MPI processes are not,C+MPI+OpenMP programs faster on 6,8 CPUs because they have lower communication cost,Case Study:Jacobi Method,Begin with C+MPI program that uses Jacobi method to solve steady state heat distribution problem of Chapter 13,Program based on rowwise block striped decomposition of two-dimensional matrix containing finite difference mesh,Methodology,Profile execution of C+MPI program,Focus on adding OpenMP directives to most compute-intensive function,Result of Profiling,Function,1 CPU,8 CPUs,initialize_mesh,0.01%,0.03%,find_steady_state,98.48%,93.49%,print_solution,1.51%,6.48%,Function find_steady_state(1/2),its=0;,for(;),if(id 0),MPI_Send(u1,N,MPI_DOUBLE,id-1,0,MPI_COMM_WORLD);,if(id 0),MPI_Recv(u0,N,MPI_DOUBLE,id-1,0,MPI_COMM_WORLD,Function find_steady_state(2/2),diff=0.0;,for(i=1;i my_rows-1;i+),for(j=1;j diff),diff=fabs(wij-uij);,for(i=1;i my_rows-1;i+),for(j=1;j N-1;j+),uij=wij;,MPI_Allreduce(&diff,&global_diff,1,MPI_DOUBLE,MPI_MAX,MPI_COMM_WORLD);,if(global_diff=EPSILON)break;,its+;,Making Function Parallel(1/2),Except for two initializations and a return statement,function is a big,for,loop,Cannot execute,for,loop in parallel,Not in canonical form,Contains a,break,statement,Contains calls to MPI functions,Data dependences between iterations,Making Function Parallel(2/2),Focus on first,for,loop indexed by,i,How to handle multiple threads testing/updating,diff,?,Putting,if,statement in a critical section would increase overhead and lower speedup,Instead,create private variable,tdiff,Thread tests,tdiff,against,diff,before call to,MPI_Allreduce,Modified Function,diff=0.0;,#pragma omp parallel private(i,j,tdiff),tdiff=0.0;,#pragma omp for,for(i=1;i my_rows-1;i+),.,#pragma omp for nowait,for(i=1;i diff)diff=tdiff;,MPI_Allreduce(&diff,&global_diff,1,MPI_DOUBLE,MPI_MAX,MPI_COMM_WORLD);,Making Function Parallel(3/3),Focus on second,for,loop indexed by,i,Copies elements of,w,to corresponding elements of,u,:no problem with executing in parallel,Benchmarking,Target system:a commodity cluster with four dual-processor nodes,C+MPI program executes on 1,2,.,8 CPUs,On 1,2,3,4 CPUs,each process on different node,maximizing memory bandwidth per CPU,C+MPI+OpenMP program executes on 1,2,3,4 processes,Each process has two threads,C+MPI+OpenMP program executes on 2,4,6,8 threads,Benchmarking Results,Analysis of Results,Hybrid C+MPI+OpenMP program uniformly faster than C+MPI program,Computation/communication ratio of hybrid program is superior,Number of mesh points per element communicated is twice as high per node for the hybrid program,Lower communication overhead leads to 19%better speedup on 8 CPUs,Summary,Many contemporary parallel computers consists of a collection of multiprocessors,On these systems,performance of C+MPI+OpenMP programs can exceed performance of C+MPI programs,OpenMP enables us to take advantage of shared memory to reduce communication overhead,Often,conversion requires addition of relatively few pragmas,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服