program main c*********************************************************************72 c cc MAIN is the main program for HELLO. c c Discussion: c c HELLO is a simple MPI test program. c c Each process prints out a "Hello, world!" message. c c The master process also prints out a short message. c c Licensing: c c This code is distributed under the GNU LGPL license. c c Modified: c c 30 October 2008 c c Author: c c John Burkardt c c Reference: c c William Gropp, Ewing Lusk, Anthony Skjellum, c Using MPI: Portable Parallel Programming with the c Message-Passing Interface, c Second Edition, c MIT Press, 1999, c ISBN: 0262571323, c LC: QA76.642.G76. c c c Define MPI symbols: c include 'mpif.h' c c implicit none c integer error integer id integer p double precision wtime c c Initialize MPI. c call MPI_Init ( error ) c c Get the number of processes. c call MPI_Comm_size ( MPI_COMM_WORLD, p, error ) c c Get the individual process ID. c call MPI_Comm_rank ( MPI_COMM_WORLD, id, error ) c c Print a message. c if ( id .eq. 0 ) then wtime = MPI_Wtime ( ) write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'HELLO_WORLD - Master process:' write ( *, '(a)' ) ' FORTRAN77 version' write ( *, '(a)' ) ' A simple MPI program.' write ( *, '(a)' ) ' ' write ( *, '(a,i3)' ) ' The number of processes is ', p write ( *, '(a)' ) ' ' end if write ( *, '(a)' ) ' ' write ( *, '(a,i3,a)' ) ' Process ', id, & ' says "Hello, world!"' if ( id .eq. 0 ) then write ( *, '(a)' ) ' ' write ( *, '(a)' ) 'HELLO_WORLD - Master process:' write ( *, '(a)' ) & ' Normal end of execution: "Goodbye, world!".' wtime = MPI_Wtime ( ) - wtime write ( *, '(a)' ) ' ' write ( *, '(a,g14.6,a)' ) & 'Elapsed wall clock time = ', wtime, ' seconds.' end if c c Shut down MPI. c call MPI_Finalize ( error ) stop end