80 likes | 189 Views
Hands-on: Compiling MPI codes with PGI Dušan Vudragović dusan@phy.bg.ac.yu SCL, Institute of Physics Belgrade. Advanced job types. Job Collections Type = "Collection"; DAG jobs (Direct Acyclic Graphs) Type = “Dag"; Parametric jobs Type = "Parametric"; Interactive Jobs
E N D
Hands-on: Compiling MPI codes with PGI Dušan Vudragović dusan@phy.bg.ac.yuSCL, Institute of Physics Belgrade
Advanced job types • Job Collections • Type = "Collection"; • DAG jobs (Direct Acyclic Graphs) • Type = “Dag"; • Parametric jobs • Type = "Parametric"; • Interactive Jobs • Type = "Interactive”; • MPI Jobs (Message Passing Interface) • JobType = ”MPICH”; • https://edms.cern.ch/file/722398/1.2/gLite-3-UserGuide.html Regional Grid Training, University of Belgrade, Serbia
PGI Workstation • High-performance compilers • F77, F95, HPF, C and C++ compilers • 64-bit x64 and 32-bit x86 processor • http://www.pgroup.com/products/workpgi.htm Regional Grid Training, University of Belgrade, Serbia
Simple Example (f77) PROGRAM mpi INCLUDE 'mpif.h' INTEGER ierr, rank, size CALL MPI_INIT(ierr) CALL MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr) CALL MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr) PRINT *, 'I am ', rank, ' of ', size CALL MPI_FINALIZE(ierr) END http://wiki.egee-see.org/index.php/SG_Gridification_Guide #MPI_.28T9.29 Regional Grid Training, University of Belgrade, Serbia
Simple Example (jdl) JobType = "mpich"; NodeNumber = 3; Executable = "mpif"; StdOutput = "std.out"; StdError = "std.err"; InputSandbox = {"mpif"}; OutputSandbox = {"std.out", "std.err"}; Requirements = (other.GlueCEInfoLRMSType == "pbs") && RegExp("ce64.phy.bg.ac.yu*", other.GlueCEUniqueID); http://wiki.egee-see.org/index.php/SG_Gridification_Guide #MPI_.28T9.29 Regional Grid Training, University of Belgrade, Serbia
Advanced Example (pgi) number_of_intervals=1000000000 step=1.0D+00/dble(number_of_intervals) node_integral=0.0D+00 do counter = node_id+1, number_of_intervals, number_of_nodes x=step*(dble(counter) - 0.5D+00) node_integral=node_integral+f(x) end do Regional Grid Training, University of Belgrade, Serbia
Advanced Example (pgi vs. gnu) GNU Node: 1 Node integral: 1.047197550530024 Node: 2 Node integral: 1.047197549863390 Number of nodes: 3 Number of intervals: 1000000000 Node: 0 Node integral: 1.047197553196500 PI exact : 3.141592741012573 PI estimate: 3.141592653589914 PI diff : 0.8742265888983525E-07 Wall clock time: 11.238281 Regional Grid Training, University of Belgrade, Serbia
Advanced Example (pgi vs. gnu) PGI Node: 1 Node integral: 1.047197550530024 Node: 2 Node integral: 1.047197549863390 Number of nodes: 3 Number of intervals: 1000000000 Node: 0 Node integral: 1.047197553196500 PI exact : 3.141592741012573 PI estimate: 3.141592653589914 PI diff : 0.8742265888983525E-07 Wall clock time: 8.765625 Regional Grid Training, University of Belgrade, Serbia