80 likes | 202 Views
Join the Regional Grid Training at the University of Belgrade, Serbia, focusing on compiling MPI codes using PGI compilers. This workshop covers advanced job types, including DAG, parametric, interactive, and MPI jobs. Participants will learn about high-performance compilers for Fortran and C/C++, and explore practical examples to solidify their understanding. We provide a platform for hands-on experience in optimizing jobs using MPI, essential for high-performance computing applications. Enhance your skills and collaborate with experienced instructors.
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