SommeVecVecPAR.f90 ================== .. code-block:: fortran program Somme implicit none include 'mpif.h' integer, dimension( MPI_STATUS_SIZE ) :: statut integer, parameter :: etiquette=100 integer :: A(10),B(10),C(10),Aloc(5),Bloc(5),Cloc(5) integer :: i integer :: nb_procs,rang,code call MPI_INIT(code) call MPI_COMM_SIZE(MPI_COMM_WORLD,nb_procs,code) call MPI_COMM_RANK(MPI_COMM_WORLD,rang,code) if (rang .eq. 0) then do i=1,10 A(i) = i B(i) = 10 - i enddo write ( *, * ) 'LES DEUX VECTEURS :' write (*,*) 'A = ',(A(i),i=1,10) write (*,*) 'B = ',(B(i),i=1,10) endif call MPI_BARRIER ( MPI_COMM_WORLD ,code) if (rang .eq. 0) then call MPI_SEND (A(1:5),5, MPI_INTEGER ,0,etiquette, MPI_COMM_WORLD,code) call MPI_SEND (A(6:10),5, MPI_INTEGER ,1,etiquette, MPI_COMM_WORLD,code) call MPI_SEND (B(1:5),5, MPI_INTEGER ,0,etiquette+1, MPI_COMM_WORLD,code) call MPI_SEND (B(6:10),5, MPI_INTEGER ,1,etiquette+1, MPI_COMM_WORLD,code) endif call MPI_RECV (Aloc,5, MPI_INTEGER ,0,etiquette, MPI_COMM_WORLD,statut,code) call MPI_RECV (Bloc,5, MPI_INTEGER ,0,etiquette+1, MPI_COMM_WORLD,statut,code) call MPI_BARRIER ( MPI_COMM_WORLD ,code) if (rang .eq. 0) then write ( *, * ) 'LES DEUX VECTEURS LOCAUX :' endif print *,'Je suis le proc ',rang,'parmi ',nb_procs,' processus' write (*,*) 'A local ( proc ',rang,' ) = ',(Aloc(i),i=1,5) write (*,*) 'B local ( proc ',rang,' ) = ',(Bloc(i),i=1,5) call MPI_BARRIER ( MPI_COMM_WORLD ,code) do i=1,5 Cloc(i) = Aloc(i) + Bloc(i) enddo if (rang .eq. 0) then write ( *, * ) 'LE VECTEUR SOMME LOCAL : ' endif call MPI_BARRIER ( MPI_COMM_WORLD ,code) write (*,*) 'C local ( proc ',rang,' ) = ',(Cloc(i),i=1,5) call MPI_BARRIER ( MPI_COMM_WORLD ,code) call MPI_SEND (Cloc(1:5),5, MPI_INTEGER ,0,etiquette, MPI_COMM_WORLD,code) if (rang .eq. 0) then call MPI_RECV (C(1:5),5, MPI_INTEGER ,0,etiquette, MPI_COMM_WORLD,statut,code) call MPI_RECV (C(6:10),5, MPI_INTEGER ,1,etiquette, MPI_COMM_WORLD,statut,code) endif if (rang .eq. 0) then write ( *, * ) 'LE VECTEUR SOMME :' write (*,*) 'C = ',(C(i),i=1,10) endif call MPI_FINALIZE(code) end program