




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GPU并行计算与CUDA编程第8课本周介绍内容1.MPI简介2.MPI+CUDA3.UVA统一虚拟寻址4.使用MPI+CUDA实现Jacobi迭代1.MPI简介MPI(MessagePassingInterface)是一个消息传递接口标准MPI提供一个可移植、高效、灵活的消息传递接口库MPI以语言独立的形式存在,可运行在不同的操作系统和硬件平台上MPI提供与C/C++和Fortran语言的保定MPI的版本–MPICH:/mpi/mpich–LAM(LocalAreaputer):
–Open-MPI:–CHIMP:ftp://ftp.epcc.ed.ac.uk/pub/chimp/release/$mpicc-omyappmyapp.c$mpiexec-machinefile./machinefile./myapp6个基本函数组成的MPI子集#include"mpi.h"/*MPI头函数,提供了MPI函数和数据类型定义*/intmain(intargc,char**argv)
{
intrank,size,tag=1;intsenddata,recvdata;
MPI_Statusstatus;
MPI_Init(&argc,&argv);/*MPI的初始化函数*/m_rank(M_WORLD,&rank);/*该进程编号*/m_size(M_WORLD,&size);/*总进程数目*/if(rank==0){senddata=9999;MPI_Send(&senddata,1,MPI_INT,1,tag,M_WORLD);/*发送数据到进程1*/}if(rank==1)MPI_Recv(&recvdata,1,MPI_INT,0,tag,M_WORLD,&status);/*从进程0接收数据*/MPI_Finalize();/*MPI的结束函数*/return(0);
}6个基本函数组成的MPI子集MPI初始化:通过MPI_Init函数进入MPI环
境并完成所有的初始化工作。
—intMPI_Init(int*argc,char***argv)MPI结束:通过MPI_Finalize函数从MPI环境中退出。
–intMPI_Finalize(void)获取进程的编号:调用m_rank函数获得当前进程在指定通信域中的编号,将自身与其他程序区分。
–intm_rank(mcomm,int*rank)
6个基本函数组成的MPI子集获取指定通信域的进程数:调用m_size函数获取指定通信域的进程个数,确定自身完成任务比例。
–intm_size(mcomm,int*size)消息发送:MPI_Send函数用于发送一个消息到目标进程。
–intMPI_Send(void*buf,intcount,MPI_Datatypedataytpe,intdest,inttag,mcomm)消息接受:MPI_Recv函数用于从指定进程接收一个消息
–intMPI_Recv(void*buf,intcount,MPI_Datatypedatatyepe,intsource,inttag,mcomm,MPI_Status*status)2.MPI+CUDA3.UVA统一虚拟寻址左图:withoutUVA右图:withUVA4.Jacobi迭代Jacobi迭代是一种比较常见的迭代方法。Jacobi迭代得到的新值是原来旧值点相邻数值点的平均。Jacobi的局部性很好,可以取得很高的并行化,将参加迭代的数据按照块分割,各块之前除了相邻的元素需要通讯外,各块内部可以独立的并行化计算。串行表示的Jacobi迭代用MPI程序实现Jacobi迭代TOP/BOTTOMUPDATELEFT/RIGHTUPDATECUDA_Normal_MPI.cCUDA_Aware_MPI.c本周作业使用MPI+CUDA实现矩阵向量乘(如图为矩阵与向量相乘原理),参考方法:
主进程将向量B广播给所有从进程,然后矩阵A的各行依次发送给从进程,从进程计算一行和B相乘的结果,然后将结果发送给主进程。从进程中,使用CUDA计算每个元素的相乘。法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。课程详情访问炼数成金培训网站
炼数成金逆向收费式网络课程Dataguru(炼数成金)是专业数据分析网站,提供教育,媒体,内容,社区,出版,数据分析业务等服务。我们的课程采用新兴的互联网教育形式,独创地发展了逆向收费式网络培训课程模式。既继承传统教育重学习氛围,重竞争压力的特点,同时又发挥互联网的威力打破时空限制,把天南地北志同道合的朋友组织在一起交流学习,使到原先孤立的学习个体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度工伤人员伤残评定及赔偿协议
- 2025年度集体合同协商中的劳动争议处理
- 2025年度幼儿园保安聘用合同标准范本
- 二零二五年度专业护工针对心血管疾病病人护理合同
- 2025年度中小企业发展基金借款连带担保人合同
- 2025年度单位食堂承包及员工满意度提升协议
- 2025年度知识产权股份代持许可使用协议
- 2025年度国际文化交流项目合作诚意金协议
- 2025年度工程监理个人劳动合同(工程质量安全管理)
- 2025年度航空航天器复合材料维修合同
- 编纸条 市赛获奖 完整版课件
- 玩具公司职位说明书汇编
- 平面设计创意与制作课件
- 化学专业英语元素周期表
- 新湘版小学科学四年级下册教案(全册)
- Q∕SY 06349-2019 油气输送管道线路工程施工技术规范
- 肾内科临床诊疗规范(南方医院)
- 实验心理学课件(周爱保博士版)
- 04 第三章 环境污染物的生物转运和生物转化 -毒物动力学
- 珍爱生命 安全第一 中小学主题教育班会
- 杀虫双(单)合成反应的研究及其工艺条件的优化
评论
0/150
提交评论