CIS Computing & Information Services

Software

Many scientific and HPC software packages are already installed on Oscar, and additional packages can be requested by submitting a ticket to support@ccv.brown.edu. If you want a particular version of the software, do mention it in the email along with a link to the web page from where it can be downloaded.

CCV cannot, however, supply funding for the purchase of commercial software. This is normally attributed as a direct cost of research, and should be purchased with research funding. CCV can help in identifying other potential users of the software to potentially share the cost of purchase and maintenance. Several commercial software products that are licensed campus-wide at Brown are available on Oscar, however.

For software that requires a Graphical User Interface (GUI) we recommend running on the VNC nodes using CCV's VNC client rather than X-Forwarding.

All programs are installed under /gpfs/runtime/opt/<software-name>/<version>. Example files and other files can be copied to your home, scratch or data directory if needed.


Software modules

CCV uses the PyModules package for managing the software environment on OSCAR. The advantage of the modules approach is that it allows multiple versions of the same software to be installed at the same time. With the modules approach, you can "load'' and "unload'' modules to dynamically control your environment. You can also customize the default environment that is loaded when you login. Simply put the appropriate module commands in the .modules file in your home directory. For instance, if you edited your .modules file to contain

module load matlab

then the default module for Matlab will be available every time you log in.

Module commands

module list Lists all modules that are currently loaded in your software environment.
module avail Lists all available modules on the system. Note that a module can multiple version numbers: this allows us to maintain legacy versions of software or to try out beta or preview versions without disrupting the stable versions.
module help package Prints additional information about the given package.
module load package Adds a module to your current environment. If you load the generic name of a module, you will get the default version. To load a specific version, load the module using its full name with the version: $ module load gcc/4.7.2
module unload package Removes a module from your current environment.

Note that the module avail command allows searching modules based on partial names. For example:

 $ module avail bo

will list all available modules whose name starts with "bo".

Output:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name: bo*/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
boost/1.40.0         bowtie/0.12.8        bowtie2/2.1.0        
boost/1.49.0         bowtie/0.12.9        bowtie2/2.2.1        
boost/1.52.0         bowtie/1.1.2         bowtie2/2.2.3        
boost/1.55.0         bowtie2/2.0.0-beta7  bowtie2/2.2.5        
boost/1.55.0-intel   bowtie2/2.0.5        bowtie2/2.2.9        
boost/1.62.0         bowtie2/2.0.6        

This feature can be used for finding what versions of a module are available.

Moreover, the module load command supports auto-completion of the module name using the "tab" key. For example, writing "module load bo" on the shell prompt and hitting "tab" key a couple of times will show results similar to that shown above. Similarly, the module unload command also auto completes using the names of modules which are loaded.

What modules actually do: They simply set the relevant environment variables like PATH, LD_LIBRARY_PATH and CPATH. For example, PATH contains all the directory paths (colon separated) where executable programs are searched for. So, by setting PATH through a module, now you can execute a program from anywhere in the file-system. Otherwise, you would have to mention the full path to the executable program file to run it which is very inconvenient. Similarly, LD_LIBRARY_PATH has all the directory paths where the run time linker searches for libraries while running a program, and so on. To see the values in an environment variable, use the echo command. For instance, to see what's in PATH:

$ echo $PATH
/gpfs/runtime/opt/perl/5.18.2/bin:/gpfs/runtime/opt/python/2.7.3/bin:/gpfs/runtime/opt/java/7u5/bin:
/gpfs/runtime/opt/intel/2013.1.106/bin:/gpfs/runtime/opt/centos-updates/6.3/bin:/usr/lib64/qt-3.3/bin:
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/ibutils/bin:/gpfs/runtime/bin

MATLAB

MATLAB is available as a software module on Oscar. The default version of MATLAB is loaded automatically when you log in. Make sure you do not run Matlab on a login node.

We have a separate page on using Matlab on Oscar for more detailed info.

The command matlab is actually a wrapper that sets up MATLAB to run as a single-threaded, command-line program, which is the optimal way to pack multiple MATLAB scripts onto the Oscar compute nodes.

If you will only be running one MATLAB script per compute node, you can instead run MATLAB in threaded mode with:

$ matlab-threaded

MATLAB GUI

The VNC client provided by CCV is the best way to launch GUI applications on Oscar, including Matlab. You can also run the MATLAB GUI in an X-forwarded interactive session. For launching the GUI, you need to use the matlab-threaded command, which enables the display and JVM.

Example Batch Scripts

You can find an example batch script for running Matlab on an Oscar compute node in your home directory:

~/batch_scripts/matlab-serial.sh

SLURM job arrays can be used to submit multiple jobs using a single batch script. E.g. when a single Matlab script is to be used to run analyses on multiple input files or using different input parameters. An example batch script for submitting a Matlab job array can be found at:

~/batch_scripts/matlab-array.sh

Python packages

If you need a particular python package, chances are that it is already installed. Using command pip list will list all available packages. Try to import that package, seeing if it works.

However, if a particular package has many dependencies or many versions are required at the same time, we install it as a separate environment module instead of installing directly under python. So, use the module avail command to look for the package. You can contact us to have a particular package installed if it is not available.

Users will not be able to install packages globally using pip install. Although, you can always install them locally in your home directory and then set the PYTHONPATH environment variable accordingly.