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,
#!/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:
When the run is done, you should see the
.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