para02-2.dvi

Similar documents
±é½¬£²¡§£Í£Ð£É½éÊâ

2 T 1 N n T n α = T 1 nt n (1) α = 1 100% OpenMP MPI OpenMP OpenMP MPI (Message Passing Interface) MPI MPICH OpenMPI 1 OpenMP MPI MPI (trivial p

目 目 用方 用 用 方

WinHPC ppt

MPI usage

演習 II 2 つの講義の演習 奇数回 : 連続系アルゴリズム 部分 偶数回 : 計算量理論 部分 連続系アルゴリズム部分は全 8 回を予定 前半 2 回 高性能計算 後半 6 回 数値計算 4 回以上の課題提出 ( プログラム + 考察レポート ) で単位

44 6 MPI 4 : #LIB=-lmpich -lm 5 : LIB=-lmpi -lm 7 : mpi1: mpi1.c 8 : $(CC) -o mpi1 mpi1.c $(LIB) 9 : 10 : clean: 11 : -$(DEL) mpi1 make mpi1 1 % mpiru

NUMAの構成

smpp_resume.dvi

chap2.ppt

C/C++ FORTRAN FORTRAN MPI MPI MPI UNIX Windows (SIMD Single Instruction Multipule Data) SMP(Symmetric Multi Processor) MPI (thread) OpenMP[5]

Microsoft PowerPoint MPI.v...O...~...O.e.L.X.g(...Q..)

untitled

MPI MPI MPI.NET C# MPI Version2

スライド 1

58 7 MPI 7 : main(int argc, char *argv[]) 8 : { 9 : int num_procs, myrank; 10 : double a, b; 11 : int tag = 0; 12 : MPI_Status status; 13 : 1 MPI_Init

Microsoft PowerPoint - 演習1:並列化と評価.pptx

コードのチューニング

Microsoft PowerPoint 並列アルゴリズム04.ppt

コードのチューニング

Microsoft PowerPoint - KHPCSS pptx

かし, 異なったプロセス間でデータを共有するためには, プロセス間通信や特殊な共有メモリ領域を 利用する必要がある. このためマルチプロセッサマシンの利点を最大に引き出すことができない. こ の問題はマルチスレッドを用いることで解決できる. マルチスレッドとは,1 つのプロセスの中に複 数のスレッド

86 8 MPIBNCpack 15 : int n, myid, numprocs, i; 16 : double pi, start_x, end_x; 17 : double startwtime = 0.0, endwtime; 18 : int namelen; 19 : char pro

DKA ( 1) 1 n i=1 α i c n 1 = 0 ( 1) 2 n i 1 <i 2 α i1 α i2 c n 2 = 0 ( 1) 3 n i 1 <i 2 <i 3 α i1 α i2 α i3 c n 3 = 0. ( 1) n 1 n i 1 <i 2 < <i

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

untitled

Microsoft PowerPoint - 講義:片方向通信.pptx

演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 RIKEN AICS HPC Spring School /3/5

MPI

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

115 9 MPIBNCpack 9.1 BNCpack 1CPU X = , B =

スライド 1

Microsoft PowerPoint _MPI-03.pptx

A B 1: Ex. MPICH-G2 C.f. NXProxy [Tanaka] 2:

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)

¥Ñ¥Ã¥±¡¼¥¸ Rhpc ¤Î¾õ¶·

Microsoft PowerPoint - 講義:コミュニケータ.pptx

2002 avidemux MPEG-4 : : : G99P045-1

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データタ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)

Microsoft PowerPoint - MPIprog-C2.ppt [互換モード]

120802_MPI.ppt

ex14.dvi

MPI () MPIMessage Passing Interface MPI MPI OpenMP 7 ( ) 1

Microsoft PowerPoint - 演習2:MPI初歩.pptx

Krylov (b) x k+1 := x k + α k p k (c) r k+1 := r k α k Ap k ( := b Ax k+1 ) (d) β k := r k r k 2 2 (e) : r k 2 / r 0 2 < ε R (f) p k+1 :=

スライド 1

スライド 1

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データタ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)


86

情報処理演習 II

MPI 超 入門 (FORTRAN 編 ) 東京大学情報基盤センター C 言語編は以下 /ohshima/seminars/t2k201111/ (MPI による並列アプリケーション開発入門 2)

エラー処理・分割コンパイル・コマンドライン引数

untitled

Gfarm/MPI-IOの 概要と使い方

untitled

Microsoft PowerPoint - MPIprog-F1.ppt [互換モード]

IP L09( Tue) : Time-stamp: Tue 14:52 JST hig TCP/IP. IP,,,. ( ) L09 IP (2017) 1 / 28

課題 S1 解説 C 言語編 中島研吾 東京大学情報基盤センター

Microsoft PowerPoint - MPIprog-C1.ppt [互換モード]

Microsoft PowerPoint - MPIprog-C [互換モード]

第5回お試しアカウント付き並列プログラミング講習会

r07.dvi

ohp07.dvi

program.dvi

並列計算導入.pptx

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

joho07-1.ppt

GNU開発ツール

Microsoft PowerPoint - MPIprog-C1.ppt [互換モード]

comment.dvi

smpp_resume.dvi

£Ã¥×¥í¥°¥é¥ß¥ó¥°(2018) - Âè11²ó – ½ÉÂꣲ¤Î²òÀ⡤±é½¬£² –

MPI によるプログラミング概要 C 言語編 中島研吾 東京大学情報基盤センター

r08.dvi

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>


tuat1.dvi

I. Backus-Naur BNF S + S S * S S x S +, *, x BNF S (parse tree) : * x + x x S * S x + S S S x x (1) * x x * x (2) * + x x x (3) + x * x + x x (4) * *

ohp08.dvi

CS

& & a a * * ptr p int a ; int *a ; int a ; int a int *a

£Ã¥×¥í¥°¥é¥ß¥ó¥°ÆþÌç (2018) - Â裵²ó ¨¡ À©¸æ¹½Â¤¡§¾ò·ïʬ´ô ¨¡

Page 1

Microsoft PowerPoint - MPIprog-F [互換モード]

II 3 yacc (2) 2005 : Yacc 0 ~nakai/ipp2 1 C main main 1 NULL NULL for 2 (a) Yacc 2 (b) 2 3 y

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (

PowerPoint プレゼンテーション

double float

講義の流れ 並列プログラムの概要 通常のプログラムと並列プログラムの違い 並列プログラム作成手段と並列計算機の構造 OpenMP による並列プログラム作成 処理を複数コアに分割して並列実行する方法 MPI による並列プログラム作成 ( 午後 ) プロセス間通信による並列処理 処理の分割 + データの

Microsoft PowerPoint - MPIprog-C1.ppt [互換モード]

ohp03.dvi

CM-3G 周辺モジュール拡張技術文書 MS5607センサ(温度、気圧)

Microsoft PowerPoint - scls_biogrid_lecture_v2.pptx

Microsoft PowerPoint - MPIprog-F2.ppt [互換モード]

XMPによる並列化実装2

II ( ) prog8-1.c s1542h017%./prog8-1 1 => 35 Hiroshi 2 => 23 Koji 3 => 67 Satoshi 4 => 87 Junko 5 => 64 Ichiro 6 => 89 Mari 7 => 73 D

卒業論文


DA100データアクイジションユニット通信インタフェースユーザーズマニュアル

Transcription:

2002 2 2002 4 23 : MPI MPI 1 MPI MPI(Message Passing Interface) MPI UNIX Windows Machintosh OS, MPI 2 1 1 2 2.1 1 1 1 1 1 1 Fig. 1 A B C F Fig. 2 A B F Fig. 1 1 1 Fig. 2 2.2 Fig. 3 1

. Fig. 4 Fig. 3 Fig. 4. MPI 3 MPI MPI MPIF(MPI Forum) API(Application Program Interface) MPI MPI_Send MPI MPI 3.1 MPI MPI API TCP/IP MPI 3.2 MPI MPI 1. 2. 3. 4. PVM 2

3.3 MPI MPI MPICH 3.3.1 MPICH MPICH 4 MPI Programming MPI. 4.1 MPI Table 1. Table 1 MPI Init() MPI Comm size() MPI Comm rank() MPI Finalize() MPI - - rank MPI MPI MPI COMM WORLD rank : ID 0 MPI Fig. 5 4.2.,... rank0 rank1 0,. Table 2. Table 2 rank0 Data rank1 rank1 rank1 rank0 Data rank0 3

/* (1) */ #include "mpi.h" int main(int argc, char **argv) { int numprocs, myid; /* (2) MPI */ MPI_Init(&argc,&argv); /* (3) numprocs */ MPI_Comm_size(MPI_COMM_WORLD,&numprocs); /* (4) rank myid rank */ MPI_Comm_rank(MPI_COMM_WORLD,&myid); /* (5) */ } /* (6) MPI */ MPI_Finalize(); return 0; Fig. 5 MPI. MPI.. 4.3 MPICH 4.3.1 MPI. MPICH. SSH Secure SHell.. MPI FTP Sun NFS Network File System Fig. 6 /home Fig. 6 NFS 4

4.4 MPICH,,. UNIX rsh MPI. MPI mpirun., MPI., machines.linux. Fig. 7 Fig. 7 MPI MPI, ID,.,, IF,. ID MPI,,. 5 MPICH 5.1 C MPI C mpicc. MPI C MPI..,. bash$ mpicc samplecpi.c -o samplecpi 5.2 MPI,. bash$ mpirun -np 8 samplecpi -np,.., samplecpi.,,., rsh Remote SHell,. MPICH,. MPI-2. 5

6 MPICH 6.1 MPI MPI SIMD.,,. MPI MPI COMM WORLD., MPI COMM RANK. 1,., MPI Comm rank,, if(rank == 0){ // }., Fig. 8. if(myrank==0){ } if(myrank==1){ } Fig. 8 6.2,.,.MPI,.,,,.,n,,0,1,2, n-1. 6.3,. 1.,.,,. 2.,. 3.,.1) tag.2)communicator. 6.4 MPI MPI 127. 1 1,,,,,.,. 6.4.1 1 1 1 1 2 MPI SEND(buffer,count,datatype, destination,tag,communicator) 6

void *bufin int count (IN) MPI Datatype datatype (IN) int dest (IN) int tag (IN) MPI Comm comm (IN) MPI RECV(buffer,count,datatype,source, tag,communicator,status) void *buf(out) int sourcempi ANY SOURCE (IN) int tagmpi ANY TAG (IN) MPI Status *status (OUT), MPI ANY SOURCE. MPI ANY TAG. source status,,,.,, status. Fig. 9 MPI Send MPI Recv MPI SENDRECV(sendbuf,count,datatype,tag, communicator,recvbuf,count,datatype,tag,communicator) void *sendbufin int sendcount (IN) MPI Datatype sendtype (IN) int dest (IN) int sendtag (IN) void *recvbuf(out) int recvcount (IN) MPI Datatype recvtype (IN) int sourcempi ANY SOURCE (IN) int recvtag (IN),MPI SEND MPI RECV,. MPI SENDRECV Fig. 10 MPI Wait() 7

int buf2[100]; error= MPI_Send(buf2,5,MPI_INT,1,1234,MPI_COMM_WORLD); error = MPI_Recv(buf1,5,MPI_INT,0,1234,MPI_COMM_WORLD,&status); int a[50]; error= MPI_Send(a,20,MPI_INT,1,5678,MPI_COMM_WORLD); int n; error= MPI_Send(&n,1,MPI_INT,1,1111,MPI_COMM_WORLD); Fig. 9 MPI 8

Fig. 10. int MPI Isend(void* sendbuf,int sendcount,mpi Datatype sendtype, int dest,mpi Comm comm,mpi Request *request) MPI request ( ) (OUT) MPI Request : int MPI Irecv(void *recvbuf,int recvcount, MPI Datatype recvtype, int source,int recvtag, MPI Comm comm,mpi request *request) int MPI Wait(MPI request *request,mpi Status *status) MPI Wait request request MPI REQUEST NULL status 6.4.2,,,. MPI BCAST(sendbuf,count,datatype,root,communicator) Fig. 11 void *buf int count MPI Datatype datatype int root rank MPI Comm comm int MPI Reduce ( void *sendbuf, void *recvbuf, int count, MPI Datatype datatype, MPI op op, int dest, MPI Comm comm ) 9

Fig. 11. void *sendbuf void *recvbufdest rank MPI Op op MPI GATHER(sendbuf,count,datatype,recvbuf,datatype,communicator) (Fig. 12). Fig. 12 MPI GATHER. MPI SCATTER., (Fig. 13). Fig. 13 MPI SCATTER. 10

MPI ALLGATHER.GATHER.,ALLGATHER (Fig. 14). Fig. 14 MPI ALLGATHER. MPI ALLTOALL,. SCATTER.,ALLTOALL (Fig. 15). Fig. 15 MPI ALLTOALL. URL. http://hamic6.ee.ous.ac.jp/software/mpich-1.1.2/ 6.5 MPI 6.5.1 1 [hello ] #include <stdio.h> #include "mpi.h" int main(int argc, char *argv[]) { int myid,procs,src,dest,tag=1000,count; char inmsg[10],outmsg[]="hello"; MPI_Status stat; MPI_Init(&argc,&argv); 11

MPI_Comm_rank(MPI_COMM_WORLD,&myid); count=sizeof(outmsg)/sizeof(char); if(myid == 0){ src =1; dest =1; /*"hello"*/ MPI_Send(outmsg,count,MPI_CHAR,dest,tag,MPI_COMM_WORLD); MPI_Recv(inmsg,count,MPI_CHAR,src,tag,MPI_COMM_WORLD,&stat); printf("%s from rank %d\n",inmsg,src); }else{ src =0; dest =0; MPI_Recv(inmsg,count,MPI_CHAR,src,tag,MPI_COMM_WORLD,&stat); MPI_Send(outmsg,count,MPI_CHAR,dest,tag,MPI_COMM_WORLD); printf("%s from rank %d\n",inmsg,src); } MPI_Finalize(); return 1; } 6.5.2 2 [] #include <mpi.h> #include <stdio.h> #define M 1000000 int main(int argc,char *argv[]){ int i,j,rank,pnum,data[m],local_sum=0,global_sum,n; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Comm_size(MPI_COMM_WORLD,&pnum); for(i=0;i<pnum;i++){ if(rank==i){ N=(M+i)/pnum; for(j=0;j<n;j++)data[j]=1; for(j=0;j<n;j++)local_sum+=data[j]; } } MPI_Reduce(&local_sum,&global_sum,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD); if(rank==0)printf("sum = %d\n",global_sum); MPI_Finalize(); return(0); 12

} MPI Reduce Fig. 16 13

Fig. 16 1) MPI http://mikilab.doshisha.ac.jp/dia/smpp/cluster2000/ 2) http://mikilab.doshisha.ac.jp/dia/smpp/cluster2000/ 14