2116
Comment: Änderungen für SL5
|
6824
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
/!\ '''This web page will no longer be updated.''' Please use this link for [[https://dv-zeuthen.desy.de/services/parallel_computing/|current information]]. ---- <<BR>> |
|
Line 2: | Line 5: |
<<TableOfContents>> | |
Line 3: | Line 7: |
At Zeuthen, two clusters are available, one with 16 dual Opteron machines connected by Infiniband and one with 8 dual Xeons and Myrinet. They are integrated into the SGE batch system. The documentation in ["Batch System Usage"] applies to them. | == Introduction == There are 3 dedicated parallel clusters (blade centers, Miriquid compute nodes) available for running parallel applications, but you can also run parallel MPI jobs in the SGE farm. The documentation in [[https://dv-zeuthen.desy.de/services/batch/|Batch System Usage]] applies there. For discussions and information regarding the usage of the PAX cluster a mailing list has been introduced: <<MailTo(zn-cluster AT desy DOT de)>>. To get subscribed to that list, send an email to <<MailTo(sympa AT desy DOT de)>> with the subject: '''subscribe zn-cluster''' == Hardware == The PAX cluster consists of an interactive and a batch part. The interactive part is a blade center with 16 blade servers configured as workgroup servers. You can interactively log into the machines pax80 to pax8f to build and test your programs. Please don't use these machines to run long production code, use the batch system instead. The batch part consists of three separate partitions that are not interconnected: pax11 and pax10 each consist of 32 compute nodes, connected via a FDR Infiniband network.The older system is pax9, 16 nodes connected by a QDR Infiniband network. === Nodes === All nodes have two CPUs (sockets). ||Name||CPU||Memory|| ||pax9[0-f]||Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz||48G|| ||pax10-[00-31]||Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz||64G|| ||pax11-[00-31]||Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz||128G|| |
Line 6: | Line 25: |
Since the upgrade to SL5, both clusters use the openmpi implementation of the MPI standard. There are MPI versions for the GCC, Intel and PGI compilers installed: /opt/openmpi/gcc/bin/mpicc /opt/openmpi/intel/bin/mpicc /opt/openmpi/pgi/bin/mpicc Compilers for C++ and Fortran are available as well. |
Use the 'module' command to first add a compiler implementation and then a version of MPI to your path e.g.: {{{ module add gnu mvapich2 }}} OpenHPC provides the {{{module}}} command from the lmod project. It supports more features then the old environment-modules, including dependent modules, that are shown only after loading the prequisites, e.g. for {{{openmpi}}} you'll have to load the {{{intel}}} module first. ||module name ||version ||depends on || ||gnu ||5.4.0 || || ||gnu7||7.2.0 || || ||intel ||18.0.0 || || ||openmpi ||1.10.6 ||gnu || ||openmpi ||1.10.7 ||intel || ||openmpi3||3.0.0||gnu7/intel|| ||mvapich2 ||2.2 ||gnu/gnu7/intel || ||opencoarrays ||1.8.5 || || |
Line 19: | Line 41: |
=== Infiniband === Applications for the cluster must be compiled on a 64 bit SL5 machine, at the moment, this is sl5-64.ifh.de only. |
==== Building applications ==== Build your application on any SL7 workgroup server, e.g. the pax8 machines pax80 to pax8f or the machine sl7. |
Line 22: | Line 44: |
=== Myrinet === Applications for the cluster must be compiled on a 32 bit SL5 machine, at the moment, this is sl5.ifh.de only. |
==== Running your application interactively on pax8 ==== To run an MPI program outside the batch system, you must specify a machinefile listing all the machines and the number of cores your application should run on. A typical machine file looks like this: {{{ pax8a slots=8 pax8b slots=8 pax8c slots=8 pax8d slots=8 }}} The command line would look like this: {{{ /opt/ohpc/pub/mpi/openmpi-gnu/1.10.6/bin/mpirun -np 32 -machinefile ./machinefile ./program }}} More information on openmpi is in the openmpi FAQ: http://www.open-mpi.org/faq/ ==== Building and running programs interactively ==== To use mvapich2, add one of those versions to your path and compile your application with that mpi compiler. Applications built with mvapich2 can use only Infiniband network hardware, so they will work on the pax machines, but not on more than one farm machine or WGS. The machine file format is different from the one for openmpi, you must list the host name for every core you want to use, e.g. if you want to run four processes, two processes on each of pax89 and pax88: {{{ pax88 pax89 pax88 pax89 }}} The preferred way to run a application with mvapich2 is mpiexec, e.g.: {{{ /usr/lib64/mvapich2-intel/bin/mpiexec -n 4 -machinefile ./machinefile /usr/lib64/mvapich2-intel/bin/mpitests-IMB-MPI1 }}} |
Line 26: | Line 77: |
/!\ '''ATTENTION''': The PAX is now based on the SLURM scheduling system. ===== Local Disk Space ===== Each node has a local directory /scratch with 1TB of space. It is cleared automatically at the end of the job. |
|
Line 27: | Line 81: |
A job script designated for a parallel job needs to specify the parallel environment and the number of required CPUs. The parameter looks like this for the Infiniband cluster: | ===== pax10 and pax11 I/O nodes ===== Most of the pax10 and pax11 machines have external 1GB/s Ethernet connections to the storage. To allow faster storage access, four machines each in the pax10 and pax11 partitions are equipped with 10GB/s Ethernet instead. To access them, you'll have to request the 10g feature in Slurm: {{{ --constraint=10g*1}}}. That way, the first process, the one executing the job scripts, will run on one of the machines with faster connectivity. == SL7 changes == As the versions and paths of the MPI implementations have changed, programs are not compatible between SL6 and SL7. You should rebuild your application on SL7, but you could also try singularity. |
Line 29: | Line 86: |
#$ -pe mpich-ppn2 4 On the Myrinet cluster, it is similar: #$ -pe mpichgm-ppn2 4 Be sure to call the right mpirun version for your compiler. If you application was compiled with GCC, use /opt/openmpi/gcc/bin/mpirun -np $NSLOTS yourapp |
The 'module' command was replaced by a different, more powerful implementation called lmod. It doesn't list all available module, instead it supports dependent modules, e.g. the MPI implementations build with 'gnu7' are shown after {{{module add gnu7}}}. ==== Running EL6 software using Singularity ==== It is possible to run software built on EL6 in a [[Singularity]] container. This works with mvapich2 binaries by calling singularity in the batch script like this: {{{ mpiexec singularity exec /project/singularity/images/SL6.img yourbinary }}} However, Mvapich2 2.2 isn't optimized yet for Singularity, so this is slower than running native programs. |
Line 40: | Line 95: |
It is important to request the right limit for memory with the parameter h_vmem. | For Openmpi, singularity is supported in Openmpi >= 2.1, that's why you'll have to rebuild your program with openmpi3 as installed in the SL6 singularity container: {{{ singularity exec /project/singularity/images/SL6.img /usr/lib64/openmpi-3.0/bin/mpicc yourprog.c -o yourprog.sl6 }}} and in the job script: {{{ module add gnu7 openmpi3 prun prun singularity exec -B /scratch /project/singularity/images/SL6.img yourprog.sl6 }}} == AFS Access == The application binary must be available to all nodes, that's why it should be placed in an AFS or Lustre directory. |
Line 42: | Line 107: |
The Opteron machines have 3.3G of RAM and by default two jobs are executed on one node, so the maximal amount of memory is 1650M per process: | == Monitoring == Ganglia provides a web monitoring interface. These pages are only available from the internal network. |
Line 44: | Line 110: |
#$ -l h_vmem=1650M The Xeons have 922.5M of RAM. If your application is using threads, it is recommended to set the value of h_stack (by default the same as h_vmem) to a sane value, e.g. 10M. == AFS Access == The application binary must be available to all nodes, that's why it should be placed in an AFS directory. |
[[http://ganglia.zeuthen.desy.de/ganglia/?c=Parallel%20Clusters&m=load_one&r=hour&s=descending&hc=4&mc=2|interactive machines]] [[http://ganglia.zeuthen.desy.de/ganglia/?c=Gridengine%20PAX%20Farm&m=load_one&r=hour&s=descending&hc=4&mc=2|parallel batch machines]] |
Line 55: | Line 113: |
[[http://www-zeuthen.desy.de/technisches_seminar/texte/waschk_20100427.pdf|Paralleles Rechnen in Zeuthen - die neuen Cluster]] , 04/27/10, technical seminar | |
Line 56: | Line 115: |
[http://www-zeuthen.desy.de/technisches_seminar/texte/Technisches_Seminar_Waschk.pdf HPC-Clusters at DESY Zeuthen] , 11/22/06, technical seminar | [[http://www-zeuthen.desy.de/technisches_seminar/texte/Technisches_Seminar_Waschk.pdf|HPC-Clusters at DESY Zeuthen]] , 11/22/06, technical seminar |
This web page will no longer be updated. Please use this link for current information.
Usage of the Linux Clusters at DESY Zeuthen
Contents
Introduction
There are 3 dedicated parallel clusters (blade centers, Miriquid compute nodes) available for running parallel applications, but you can also run parallel MPI jobs in the SGE farm. The documentation in Batch System Usage applies there.
For discussions and information regarding the usage of the PAX cluster a mailing list has been introduced: <zn-cluster AT desy DOT de>. To get subscribed to that list, send an email to <sympa AT desy DOT de> with the subject: subscribe zn-cluster
Hardware
The PAX cluster consists of an interactive and a batch part. The interactive part is a blade center with 16 blade servers configured as workgroup servers. You can interactively log into the machines pax80 to pax8f to build and test your programs. Please don't use these machines to run long production code, use the batch system instead.
The batch part consists of three separate partitions that are not interconnected: pax11 and pax10 each consist of 32 compute nodes, connected via a FDR Infiniband network.The older system is pax9, 16 nodes connected by a QDR Infiniband network.
Nodes
All nodes have two CPUs (sockets).
Name |
CPU |
Memory |
pax9[0-f] |
Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz |
48G |
pax10-[00-31] |
Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz |
64G |
pax11-[00-31] |
Intel(R) Xeon(R) CPU E5-2697A v4 @ 2.60GHz |
128G |
Building Applications
Use the 'module' command to first add a compiler implementation and then a version of MPI to your path e.g.:
module add gnu mvapich2
OpenHPC provides the module command from the lmod project. It supports more features then the old environment-modules, including dependent modules, that are shown only after loading the prequisites, e.g. for openmpi you'll have to load the intel module first.
module name |
version |
depends on |
gnu |
5.4.0 |
|
gnu7 |
7.2.0 |
|
intel |
18.0.0 |
|
openmpi |
1.10.6 |
gnu |
openmpi |
1.10.7 |
intel |
openmpi3 |
3.0.0 |
gnu7/intel |
mvapich2 |
2.2 |
gnu/gnu7/intel |
opencoarrays |
1.8.5 |
|
Building applications
Build your application on any SL7 workgroup server, e.g. the pax8 machines pax80 to pax8f or the machine sl7.
Running your application interactively on pax8
To run an MPI program outside the batch system, you must specify a machinefile listing all the machines and the number of cores your application should run on. A typical machine file looks like this:
pax8a slots=8 pax8b slots=8 pax8c slots=8 pax8d slots=8
The command line would look like this:
/opt/ohpc/pub/mpi/openmpi-gnu/1.10.6/bin/mpirun -np 32 -machinefile ./machinefile ./program
More information on openmpi is in the openmpi FAQ: http://www.open-mpi.org/faq/
Building and running programs interactively
To use mvapich2, add one of those versions to your path and compile your application with that mpi compiler. Applications built with mvapich2 can use only Infiniband network hardware, so they will work on the pax machines, but not on more than one farm machine or WGS.
The machine file format is different from the one for openmpi, you must list the host name for every core you want to use, e.g. if you want to run four processes, two processes on each of pax89 and pax88:
pax88 pax89 pax88 pax89
The preferred way to run a application with mvapich2 is mpiexec, e.g.:
/usr/lib64/mvapich2-intel/bin/mpiexec -n 4 -machinefile ./machinefile /usr/lib64/mvapich2-intel/bin/mpitests-IMB-MPI1
Batch System Access
ATTENTION: The PAX is now based on the SLURM scheduling system.
Local Disk Space
Each node has a local directory /scratch with 1TB of space. It is cleared automatically at the end of the job.
pax10 and pax11 I/O nodes
Most of the pax10 and pax11 machines have external 1GB/s Ethernet connections to the storage. To allow faster storage access, four machines each in the pax10 and pax11 partitions are equipped with 10GB/s Ethernet instead. To access them, you'll have to request the 10g feature in Slurm: --constraint=10g*1. That way, the first process, the one executing the job scripts, will run on one of the machines with faster connectivity.
SL7 changes
As the versions and paths of the MPI implementations have changed, programs are not compatible between SL6 and SL7. You should rebuild your application on SL7, but you could also try singularity.
The 'module' command was replaced by a different, more powerful implementation called lmod. It doesn't list all available module, instead it supports dependent modules, e.g. the MPI implementations build with 'gnu7' are shown after module add gnu7.
Running EL6 software using Singularity
It is possible to run software built on EL6 in a Singularity container. This works with mvapich2 binaries by calling singularity in the batch script like this:
mpiexec singularity exec /project/singularity/images/SL6.img yourbinary
However, Mvapich2 2.2 isn't optimized yet for Singularity, so this is slower than running native programs.
For Openmpi, singularity is supported in Openmpi >= 2.1, that's why you'll have to rebuild your program with openmpi3 as installed in the SL6 singularity container:
singularity exec /project/singularity/images/SL6.img /usr/lib64/openmpi-3.0/bin/mpicc yourprog.c -o yourprog.sl6
and in the job script:
module add gnu7 openmpi3 prun prun singularity exec -B /scratch /project/singularity/images/SL6.img yourprog.sl6
AFS Access
The application binary must be available to all nodes, that's why it should be placed in an AFS or Lustre directory.
Monitoring
Ganglia provides a web monitoring interface. These pages are only available from the internal network.
interactive machines parallel batch machines
Further documentation
Paralleles Rechnen in Zeuthen - die neuen Cluster , 04/27/10, technical seminar
HPC-Clusters at DESY Zeuthen , 11/22/06, technical seminar