|
|
|
The Computing for Science (CS) group supports ILL scientists, students and visitors in a number of activities including data analysis, instrument simulation and sample simulation.

Computational clusterA cluster here is a set of computers of a similar architecture which share common management and configuration and usually share the users' files transparently. The systems have good communications between themselves, and jobs can either be launched on one processor or multiple copies can be launched on several, allowing part of the calculation to be performed in parallel. Computationally intensive tasks interfere with general purpose time-sharing activities and one function of offering processors on a cluster is to dedicate the processors fully to that task in hand. To use the parallel computing possibilities it is necessary to invoke languages where this is a built-in feature, or to analyse the problem and use library functions to distribute data and program over selected processors. Typically groups who develop such programs optimise them for their own systems. These notes might help the installation of such programs for use at the ILL. SI and CS operates together a computational cluster of 45 nodes with system SLES 10.1. This machine is available to everyone for computationally intensive work i.e. hours, days, months ... An older cluster 'brick' (8 nodes) is used mainly for Material Studio. SI staff involved in configuring the cluster: Remi Mudingay, Stephane Armanet, etc. Good Practice Guidelines
Please remember the following when using the cluster:
1 file(s).
Main cluster 'NodeX'
Other cluster 'Brick'
Programming tipsHigh Performance Fortran, HPFThe aim is to produce a program with a structure of SPMD, single program, multiple data model. Each processor loads the same program but then operates on a distinct subset of the program's data, each using a local portion of distributed arrays. Special directives are added to this variant of the Fortran standard to control data and parallel program flow. The Portland Group HPF is available on brick. Message Passing Interface, MPIThis comprises of utilities with a library of functions callable from C, Fortran etc., which allow tasks to be copied to other nodes, portions of data transferred, and then results reassembled after processing. This standard call interface allows the implementation of transfers and synchronisation to be left either to Open-source developers, or proprietary manufacturers (who often use concepts from the first group but optimise performance to their own hardware). Because the calls are standardised it is possible to build variants using any of the MPI implementations, and select the optimal performer for routine use. In each case there are a number of options on buffer sizes and transfer methods to explore.
Building Programs with MPIIn addition to a library to the organising routines there are several tools designed to simplify development. Note
On brick this is /usr/lib/lam-6.5.4/bin/mpif77 showing that lam-mpi is the default MPI method. To change this to MPI-CH place /usr/lib/mpich-1.2.2/bin in your PATH environment variable ahead of the lam-mpi reference modifying your .cshrc file. The .cshrc file is re-used as each node starts your task anew. In general MPI libraries and utilities are built using the GNU configure script. If the default installation does not match the imported source code it may be necessary to build a private library appropriate to that task, specifying installation in the builder's area using ./configure -prefix ... If the new mpif77 is used the correct libraries will be loaded. (It is probably simplest to modify the PATH for this.) Such programs should be linked as static entities (linker switch -Bstatic) to include copies of all libraries at link time, avoiding conflicts which might arise as default sharable libraries are sought on target nodes when run by mpirun or Alinka. The Portland compiler package includes utilities for profiling programs to identify compute intensive code, and also debuggers to analyse problems in execution of parallel routines. |