Post on 15-Jan-2016
description
June 24-25, 2008
Regional Grid Training, University of Belgrade, Serbia
Acad
em
ic a
nd E
ducat ional Gr id Init iat ive o
f Serbia
A E G I S
Hands-on: Compiling MPI codes with PGI
Dušan Vudragovićdusan@phy.bg.ac.yuSCL, Institute of Physics Belgrade
A E G I S
June 24-25, 2008
Advanced job typesAdvanced 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
A E G I S
June 24-25, 2008
PGI WorkstationPGI 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
A E G I S
June 24-25, 2008
Simple Example (f77)Simple Example (f77)
Regional Grid Training, University of Belgrade, Serbia
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
A E G I S
June 24-25, 2008
Simple Example (jdl)Simple Example (jdl)
Regional Grid Training, University of Belgrade, Serbia
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
A E G I S
June 24-25, 2008
Advanced Example Advanced Example (pgi) (pgi)
Regional Grid Training, University of Belgrade, Serbia
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
A E G I S
June 24-25, 2008
Advanced Example Advanced Example (pgi vs. gnu) (pgi vs. gnu)
Regional Grid Training, University of Belgrade, Serbia
Node: 1Node integral: 1.047197550530024 Node: 2Node integral: 1.047197549863390 Number of nodes: 3Number of intervals: 1000000000Node: 0Node integral: 1.047197553196500 PI exact : 3.141592741012573 PI estimate: 3.141592653589914 PI diff : 0.8742265888983525E-07 Wall clock time: 11.238281
GNU
A E G I S
June 24-25, 2008
Advanced Example Advanced Example (pgi vs. gnu) (pgi vs. gnu)
Regional Grid Training, University of Belgrade, Serbia
Node: 1Node integral: 1.047197550530024 Node: 2Node integral: 1.047197549863390 Number of nodes: 3Number of intervals: 1000000000Node: 0Node integral: 1.047197553196500 PI exact : 3.141592741012573 PI estimate: 3.141592653589914 PI diff : 0.8742265888983525E-07 Wall clock time: 8.765625
PGI