SERC

SERC Computing Facility: Softwares

Parallel Programming Paradigm

Intuitively, parallel programming is the programming paradigm of concurrent execution of multiple instruction sequences. In practice, these sequences may

      share a common address space or data, or
      have their completely private address space or data.

Case 1 is called the Shared Memory Programming (SMP) paradigm while case 2 is termed as Distributed Memory Programming (DMP) paradigm.

In SMP, data being shared, the key issue is to enforce synchronization between processes, that is to ensure the access of correct state of data at intended point of computation. This is done through synchronization schemes like locks and barriers. In practice, this detail is hidden from the programmer who is happy with plugging in auto-parallelising options into the compiler. This often yields better performance if the compiler is further assisted with directives inside a serial code. These directives are considered as comment statements according to the serial language specifications.

In DMP, data being private to each streams of instructions, it is necessary to exchange data across different streams. It is the user's prerogative to decide at what point of computation which data to be sent/received to/from which stream. Message Passing libraries like Message Passing Interface (MPI) or Parallel Virtual Machine (PVM) do the send and receive and provide a standard interface for writing programs in a portable way. Both Fortran and C interfaces exists for these libraries and there are numerous public-domain implementations of them as well.

Parallel Systems at SERC
SMP Systems :
 
6-CPU SGI Power Challenge
 
8-CPU DEC Turbolaser 8400
 
A number of 2-CPU SUN Ultra 60 Workstations.
DMP Systems :
 
32-CPU IBM RS/6000 SP
 
8-CPU C-DAC Param 10000
 
8-CPU HP C200 Cluster.
Programming on SMP Systems at SERC
System for Fortran codes for C codes
SGI Power Challenge -pfa -pca
DEC Turbolaser 8400 -kapf -kapc

Further help could be obtained through man pages in the respective system.

Programming on DMP Systems at SERC

As mentioned before, programming on DMP systems involves inserting appropriate MPI or PVM calls in the serial code (Fortran/C) to enable message passing between different processes. MPI and PVM are available in all the DMP systems at SERC.

Following documents provide introduction to MPI programming (Note : these links can only be accessed from the IISc Campus. Disable your proxy settings before you click on these links.) :

MPI Tutorial (reproduced with kind permission of Maui High Performance Computing Center).
Hitchhikers Guide to the Parallel Environment in IBM SP
MPI Subroutine reference for IBM SP
MPICH : a Public Domain Implementation of MPI
The IBM RS/6000 SP has some additional parallel programming utilities (like parallel debuggers,trace visulaization tool etc.) details of which can be found in the following document (accessible only from the IISc Campus) :
IBM Parallel Environment : Operation & Use

For further assistance, please contact HelpDesk@SERC by E-mail or phone (#444 within SERC).