This is an old revision of the document!

3. CPU slot count

The npxx resource requirement should be substituted by ncpus=xx. For example, in order to choose a node with 20 CPU slots, your submission script should contain

#BSUB -R "ncpus=20"

The old syntax (-R np20) will continue to work, and will also be supported on the new nodes. However, it is now deprecated and will be removed with the next cluster extension. It will also be removed from our documentation.

Please note: Like -R np20, -R “ncpus=20” does not substitute the -n <x> statement. -n <x> requests the amount of cores, while -R “ncpus=20” only tells the batchsystem that you want your job to be run only on nodes with the given amount of cores.

4. Memory selection

Note that the following paragraph is about selecting nodes with enough memory for a job. The mechanism to actually reserve that memory does not change: The memory you are allowed to use equals memory per core times slots (-n option) requested.

You can select a node either by currently available memory (mem) or by maximum available memory (maxmem). If you request complete nodes, the difference is actually very small, as a free node's available memory is close to its maximum memory. All requests are in MB.

To select a node with more than about 500 GB memory use:

#BSUB -R "maxmem>500000"

To select a node with more than about 6 GB memory per core use:

#BSUB -R "maxmem/ncpus>6000"

(Yes, you can do basic math in the requirement string!)

It bears repeating: None of the above is a memory reservation. If you actually want to reserve memory, the easiest way is to combine -R “maxmem>… with -x for an exclusive job.

Finally, note that the -M option just denotes the memory limit of your job per core (in KB). This is of no real consequence, as we do not enforce these limits and it has no influence on the host selection.

5. Using the fat+ queue

Nodes with a lot of memory are very expensive and should not normally be used for jobs which could also run on our other nodes. Therefore, please note the following policies:

  • Your job must need more than 250 GB RAM.
  • Your job must use at least a full 512 GB node or half a 1.5 TB or 2 TB node:
  • For a full 512 GB node:
#BSUB -x
#BSUB -R "maxmem < 600000"
  • For half a 1.5 TB node (your job needs more than 500 GB RAM):
#BSUB -n 20
#BSUB -R span[hosts=1]
#BSUB -R "maxmem < 1600000 && maxmem > 600000"
  • For a full 1.5 TB node (your job needs more than 700 GB RAM):
#BSUB -x
#BSUB -R "maxmem < 1600000 && maxmem > 600000"
  • For half a 2 TB node (your job needs more than 700 GB RAM):
#BSUB -n 16
#BSUB -R span[hosts=1]
#BSUB -R "maxmem > 1600000"
  • For a full 2 TB node (your job needs more than 1.5 TB RAM):
#BSUB -x
#BSUB -R "maxmem > 1600000"

The 512 GB nodes are also available in the fat queue, without these restrictions. However, fat jobs on these nodes have a lower priority compared to fat+ jobs.

6. GPU selection

In order to use a GPU you should submit your job to the GPU queue, and request GPU shares. Each node equipped with a GPU provides as many GPU shares as it has cores, independent of how many GPUs are built in. So, on the new nodes, which have 24 cores, the following would give you exclusive access to GPUs:

#BSUB -R "rusage[ngpus_shared=24]"

Note that you need not necessarily also request 24 cores with -n 24, as jobs from the MPI queue may utilize free CPU cores if you do not need them. The new nodes have two GPUs each, and you should use both, if possible.

If you request less shares than cores available, other jobs may also utilize the GPUs. However, we have currently no mechanism to select a specific one for a job. This would have to be handled in the application or your job script.

A good way to use the new nodes with jobs only working on one GPU would be to put two together in one job script and preselect a GPU for each one.

Currently we have two generations of NVidia GPUs in the cluster, selectable in the same way as CPU generations:

nvgen=1 : Kepler
nvgen=2 : Maxwell

Most GPUs are commodity graphics cards, and only provide good performance for single precision calculations. If you need double precision performance, or error correcting memory (ECC RAM), you can select the Tesla GPUs with

#BSUB -R tesla

Our Tesla K40 are of the Kepler generation (nvgen=1).

If you want to make sure to run on a node equipped with two GPUs use:

#BSUB -R "ngpus=2"

7. New frontend

The new frontend gwdu103 has 2×12 Intel Broadwell CPUs and 64 GB memory. If you compile a program on gwdu103 it will often be automatically optimized for Broadwell CPUs / intel=4. In that case it will probably also run on intel=3 / Haswell, but not below that or on AMD nodes.

The same policies apply as for all other frontends: You may use it to compile software, to copy from and to the new scratch-Filesystem, and for short tests of your compiled binaries. You must not use it to run long time tasks, especially if they are CPU or memory intensive.