1、并行算法实践上篇 并行程序设计导论* 1现代密码学理论与实践之五并行算法实践上篇 并行程序设计导论 单元 I 并行程序设计基础 单元 II 并行程序编程指南 单元 III 并行程序开发方法Date 2现代密码学理论与实践之五单元 II 并行程序编程指南 第四章 MPI编程指南 第五章 PVM编程指南 第六章 HPF编程指南 第七章 OpenMP编程指南Date 3现代密码学理论与实践之五第四章 MPI编程指南 4.1 引言 4.2 6个基本函数组成的 MPI子集 4.3 MPI消息 4.4 点对点通信 4.5 群集通信 4.6 MPI扩展 4.7 小结Date 4现代密码学理论与实践之五4.1
2、 引言 MPI(Message Passing Interface )是一个消息传递接口标准 MPI提供一个可移植、高效、灵活的消息传递接口库 MPI以语言独立的形式存在,可运行在不同的操作系统和硬件平台上 MPI提供与 C/C+和 Fortran语言的绑定Date 5现代密码学理论与实践之五4.1 引言 MPI的版本 MPICH: http:/www-unix.mcs.anl.gov/mpi/mpich LAM (Local Area Multicomputer): http:/www.lam-mpi.org Open-MPI: http:/www.open-mpi.org/ CHIMP:
3、ftp:/ftp.epcc.ed.ac.uk/pub/chimp/release/Date 6现代密码学理论与实践之五4.2 6个基本函数组成的 MPI子集#include “mpi.h“ /*MPI头函数,提供了 MPI函数和数据类型定义*/int main( int argc, char* argv )int rank, size, tag=1;int senddata,recvdata;MPI_Status status; MPI_Init( /*MPI的初始化函数 */MPI_Comm_rank(MPI_COMM_WORLD, /*该进程编号*/MPI_Comm_size(MPI_CO
4、MM_WORLD, /*总进程数目 */Date 7现代密码学理论与实践之五4.2 6个基本函数组成的 MPI子集if (rank=0)senddata=9999; MPI_Send( /*发送数据到进程 1*/if (rank=1) MPI_Recv( /*从进程 0接收数据 */MPI_Finalize(); /*MPI的结束函数 */return (0);Date 8现代密码学理论与实践之五4.2 6个基本函数组成的 MPI子集 MPI初始化:通过 MPI_Init函数进入 MPI环境并完成所有的初始化工作。 int MPI_Init( int *argc, char * * * arg
5、v ) MPI结束:通过 MPI_Finalize函数从 MPI环境中退出。 int MPI_Finalize(void)Date 9现代密码学理论与实践之五4.2 6个基本函数组成的 MPI子集 获取进程的编号:调用 MPI_Comm_rank函数获得当前进程在指定通信域中的编号,将自身与其他程序区分。 int MPI_Comm_rank(MPI_Comm comm, int *rank) 获取指定通信域的进程数:调用 MPI_Comm_size函数获取指定通信域的进程个数,确定自身完成任务比例。 int MPI_Comm_size(MPI_Comm comm, int *size)Date 10现代密码学理论与实践之五