IDL

From Peyton Hall Documentation
Jump to navigation Jump to search

IDL is a data visualization & analysis program used by many in the department.


Getting started

If you don't have the IDL module loaded, load it with module load idl. Then run idl to start the program.

NOTE: If you use some other way to start IDL and setup its variables - such as the EUPS 'setup' system favored by SDSS/ACT/etc - and have a problem with IDL, you should remove all traces of it first to make sure the problem isn't related to the EUPS setup. 99% of the time we receive an email asking for help with an IDL problem, it is not because of the IDL installation but because of EUPS and/or something related to it (such as a peripherally required server being down, or some other error in a shell startup file).


Running IDL on laptops

If you have a laptop (or otherwise "unmanaged" machine) and want to run IDL directly on it, you need to tell IDL to access the department license server. NOTE: You must be using a wired network connection within Peyton Hall to see the license server! The easiest way to do this is to set the environment variable IDL_LMGRD_LICENSE_FILE to 1700@TULLY. ie, in your ~/.bashrc: export IDL_LMGRD_LICENSE_FILE=1700@TULLY On a Mac laptop, do this change, open a new terminal window to source the .bashrc file, and then run IDL for the first time with the command /Applications/itt/idl/idl/bin/idl (or wherever you have it installed). This will create a file in your home directory named ~/.flexlmrc containing the same information as the environment variable; future invocations can be from the Finder or Dock.


NOTE: You must be using a wired network connection within Peyton Hall to see the license server! If your laptop leaves the network, IDL will warn you multiple times before shutting down when it can no longer reach the license server. The license you checked out, however, will remain in use on the server for many hours and will subtract from the number of licenses that people can use. Therefore, if you make a habit of checking out licenses and preventing others from using them your device may be barred from using the license server (you'll have to run IDL on a managed machine instead, displaying the output on your laptop).


Color problems

Sometimes the colors in IDL can seem all wrong. One workaround found on a web page suggests setting the image decomposition to 0 with 'device,decomposed=0'. This has to be set in IDL before any windows are opened. The need for this comes about because IDL only works properly with 8-bit color. Obviously, with our new fangled modern video cards, no-one uses 8-bit anymore, hence the need to force the X-window to work as 8-bit.


There is also a problem for IDL 5.5 running on linuxes with pixmap depth set to 24. The use of TVSCL or TV loads the wrong color map and gives a streaky appearance to the graphics. You can prevent this by adding the lines 'WINDOW, /PIXMAP & WDELETE' and 'DEVICE, BYPASS_TRANSLATION=0' to your .idl_startup file. If one is trying to read an image from the graphics window using TVRD, this workaround fails - one has to run X in depth 8 or 16. This problem is because IDL still cannot handle TrueColor in 24bit depth, though it can now handle it in 8 and 16 bits.


Setting Thread Pools

IDL has multi-threading capabilities, and the default number of threads is set to the number of CPUs on the machine. In certain cases (e.g. running jobs through Condor), you might want to limit the number of threads IDL can use so that it does not eat up all the resources on a machine. This can be set through the environment variable IDL_CPU_TPOOL_NTHREADS, or alternatively using the 'CPU' procedure after starting IDL: 'CPU, TPOOL_NTHREADS = NumThreads'


IDL Licenses

Every copy of IDL that is run checks out licenses from the license server, and we have a limited number of licenses. Because of this, it's frowned upon to run many copies of IDL at the same time unless you're actively doing work that requires them (and very frowned upon to leave an IDL instance open for long periods of time when it's not being used, as others could be using those licenses). If you're getting errors about IDL being out of licenses, or you're just curious who's using it, you can check by running lmstat -a. Feel free to email offenders and ask them to clean up their old processes, or contact us to kill them if you've heard no reply and need the cycles yourself.


Running Multiple Copies On The Same Computer

Craig Loomis points out a method by which one can run multiple copies of IDL and only use one copy's worth of licenses:

IDL hands out licenses based on hostname+username+display. If all three of those are equal you can start as many sessions as you want and only consume one license. The modern habit of letting ssh create X tunnels causes the display name to be different for each ssh connection, even if several connections come from a single host.

There are several ways of making your DISPLAY name the same for all such connections. The simplest is to note which your first one is (echo $DISPLAY), and set DISPLAY on other connections to that.

Many people run "console-only" IDL sessions on a single host by unsetting DISPLAY entirely before running the program; no matter how you do it, as long as the user name, host and DISPLAY variable are all the same, every copy of IDL running that way will only use a single license (good for multiple copies on dual- and quad-core hosts).