X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d12142c9dc382512752775d0cca043bb1aef3f86..4c74bb7b6f2398da81ce462cbdfd9c5a77ffa683:/examples/smpi/NAS/LU/lu.f diff --git a/examples/smpi/NAS/LU/lu.f b/examples/smpi/NAS/LU/lu.f new file mode 100644 index 0000000000..543463a07b --- /dev/null +++ b/examples/smpi/NAS/LU/lu.f @@ -0,0 +1,164 @@ +!-------------------------------------------------------------------------! +! ! +! N A S P A R A L L E L B E N C H M A R K S 3.3 ! +! ! +! L U ! +! ! +!-------------------------------------------------------------------------! +! ! +! This benchmark is part of the NAS Parallel Benchmark 3.3 suite. ! +! It is described in NAS Technical Reports 95-020 and 02-007 ! +! ! +! Permission to use, copy, distribute and modify this software ! +! for any purpose with or without fee is hereby granted. We ! +! request, however, that all derived work reference the NAS ! +! Parallel Benchmarks 3.3. This software is provided "as is" ! +! without express or implied warranty. ! +! ! +! Information on NPB 3.3, including the technical report, the ! +! original specifications, source code, results and information ! +! on how to submit new results, is available at: ! +! ! +! http://www.nas.nasa.gov/Software/NPB/ ! +! ! +! Send comments or suggestions to npb@nas.nasa.gov ! +! ! +! NAS Parallel Benchmarks Group ! +! NASA Ames Research Center ! +! Mail Stop: T27A-1 ! +! Moffett Field, CA 94035-1000 ! +! ! +! E-mail: npb@nas.nasa.gov ! +! Fax: (650) 604-3957 ! +! ! +!-------------------------------------------------------------------------! + +c--------------------------------------------------------------------- +c +c Authors: S. Weeratunga +c V. Venkatakrishnan +c E. Barszcz +c M. Yarrow +c +c--------------------------------------------------------------------- + +c--------------------------------------------------------------------- + program applu +c--------------------------------------------------------------------- + +c--------------------------------------------------------------------- +c +c driver for the performance evaluation of the solver for +c five coupled parabolic/elliptic partial differential equations. +c +c--------------------------------------------------------------------- + + implicit none + + include 'applu.incl' + character class + logical verified + double precision mflops + integer ierr + +c--------------------------------------------------------------------- +c initialize communications +c--------------------------------------------------------------------- + call init_comm() + +c--------------------------------------------------------------------- +c read input data +c--------------------------------------------------------------------- + call read_input() + +c--------------------------------------------------------------------- +c set up processor grid +c--------------------------------------------------------------------- + call proc_grid() + +c--------------------------------------------------------------------- +c determine the neighbors +c--------------------------------------------------------------------- + call neighbors() + +c--------------------------------------------------------------------- +c set up sub-domain sizes +c--------------------------------------------------------------------- + call subdomain() + +c--------------------------------------------------------------------- +c set up coefficients +c--------------------------------------------------------------------- + call setcoeff() + +c--------------------------------------------------------------------- +c set the masks required for comm +c--------------------------------------------------------------------- + call sethyper() + +c--------------------------------------------------------------------- +c set the boundary values for dependent variables +c--------------------------------------------------------------------- + call setbv() + +c--------------------------------------------------------------------- +c set the initial values for dependent variables +c--------------------------------------------------------------------- + call setiv() + +c--------------------------------------------------------------------- +c compute the forcing term based on prescribed exact solution +c--------------------------------------------------------------------- + call erhs() + +c--------------------------------------------------------------------- +c perform one SSOR iteration to touch all data and program pages +c--------------------------------------------------------------------- + call ssor(1) + +c--------------------------------------------------------------------- +c reset the boundary and initial values +c--------------------------------------------------------------------- + call setbv() + call setiv() + +c--------------------------------------------------------------------- +c perform the SSOR iterations +c--------------------------------------------------------------------- + call ssor(itmax) + +c--------------------------------------------------------------------- +c compute the solution error +c--------------------------------------------------------------------- + call error() + +c--------------------------------------------------------------------- +c compute the surface integral +c--------------------------------------------------------------------- + call pintgr() + +c--------------------------------------------------------------------- +c verification test +c--------------------------------------------------------------------- + IF (id.eq.0) THEN + call verify ( rsdnm, errnm, frc, class, verified ) + mflops = float(itmax)*(1984.77*float( nx0 ) + > *float( ny0 ) + > *float( nz0 ) + > -10923.3*(float( nx0+ny0+nz0 )/3.)**2 + > +27770.9* float( nx0+ny0+nz0 )/3. + > -144010.) + > / (maxtime*1000000.) + + call print_results('LU', class, nx0, + > ny0, nz0, itmax, nnodes_compiled, + > num, maxtime, mflops, ' floating point', verified, + > npbversion, compiletime, cs1, cs2, cs3, cs4, cs5, cs6, + > '(none)') + + END IF + + call mpi_finalize(ierr) + end + +