Running IDL
IDL (Interactive Data Language) is available on the cluster. For more information about the IDL software itself, see the IDL website. This software is limited to group members who have the license for it. Other IDL users may also be interested in GDL (GNU Data Language) which is a compatible, open source alternative.
Running with SLURM
First, we’ll need an example IDL program:
; sayhello.pro
pro sayhello,what
print,'HELLO ',what
end
We’ll also need a main program:
; main.pro
pro main
sayhello,'WORLD'
end
Then we’ll create a batch script, run.slurm
:
#!/bin/bash
#SBATCH --job-name=idl_hello
#SBATCH --output=idl_hello_%j.out
#SBATCH --error=idl_hello_%j.err
#SBATCH --partition=contrib
#SBATCH --qos=qtong
#SBATCH --nodes=1
#SBATCH --cpus-per-task=12
#SBATCH --mem=8GB
#SBATCH --time=0-00:15:00
module load idl
setenv IDL_CPU_TPOOL_NTHREADS $SLURM_CPUS_PER_TASK
idl -e main
In this SLURM script, we're requesting a single node and 12 cpus on the node with a total of 8GB memory for 15 minutes.
Recent versions of IDL support multi-threading. This means that on systems with more than one CPU and/or
multiple cores per CPU socket, IDL will use multiple threads to do work in parallel when the application
determines it is advantageous to do so.
This is automatic, and invisible to the user except for hopefully improved performance.
By default, when IDL encounters a calculation that would benefit from multi-threading,
it will generate a thread for every CPU core on the system it is running. To avoid conflicts with other jobs that might be running on the same node, it is necessry to restrict the number of cores it can use. This is done using the IDL_CPU_TPOOL_NTHREADS
. In the SLUR
script, this is set to SLURM_CPUS_PER_TASK
to match the number of cpus being requested.
Once the script is ready, we submit it to the compute nodes with:
sbatch run.slurm
When the run is done, you should see the .out
and .err
files that have been generated.
To download and extract all the example files, run:
wget https://wiki.orc.gmu.edu/mkdocs/idl_example/idl_example.tar.gz
tar tar -xzvf idl_example.tar.gz