Skip to content

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
Download: sayhello.pro

We’ll also need a main program:

; main.pro
pro main
  sayhello,'WORLD'
end
Download: main.pro

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
Download: run.slurm

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