Available Software

Where can I find software on CS machines?

On the CS linux machines, the installed software comes from either CentOS’s repositories or is built from source. Packages from repositories get installed under standard system locations (like /bin, /usr/bin, etc).

Software built from source is installed under /usr/local/<sw-name>

How do I know if a system binary is installed?

To find look for a binary use the command:

which <binary-name>

For example, if you would like know if the binary npm is installed:

which npm

If the binary is available, the above command would show the path in the output:

/bin/npm

And if it is not available, the command would say that it’s not available.

which foo

which: no foo in (/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin)

How do I know if a system package is installed?

If you know the exact name of the package, then you can query if it is installed by the command:

rpm -q <package-name>

The above command returns the package version, if the package is installed.

For instance, to check if the package “gcc” is available:

rpm -q gcc
gcc-8.3.1-5.1.el8.x86_64

If you do not know the exact package name, use the following command to search:

rpm -qa | grep <keywords>

This would provide a list of installed packages whose name matches the keywords supplied.

How do I know if a package built from source is available?

A complete list of software built from source is provided this web page.

You can also browse the /usr/local directory via the ls command:

ls -l /usr/local/

Software is installed under sub-directories named after the software.

For software specific instructions, please look at the list below and click/tap on the link to take you to that section:

Available Software (/usr/local)

Additional software (in addition to system software) is installed under the location /usr/local. This webpage lists the major software packages available on the CS systems.

How to use software available under /usr/local?

You will need to load the appropriate environment module for the software package you would like to use.

More information on environment modules is available on the environment modules guide.

What versions of software are available under /usr/local?

For many software, multiple versions are available. One can switch between versions using environment modules.

Complete list of software under /usr/local

SoftwareSoftware DescriptionCommand to Load the Software
AtomA hackable text editor for the 21st Century
module load ide/atom
CalibreA cross-platform open-source suite of e-book softwaremodule load office/calibre
CLionA cross-platform IDE for C and C++ by JetBrainsmodule load ide/clion
CUDACompute Unified Device Architecture, GPU programming tools
See the cuda guide for setup instructions
module load cuda
EclipseIntegrated development environment for Javamodule load ide/eclipse/eclipse-java
EmacsA highly extensible text editormodule load ide/emacs
FFMPEGvideo/audio encoder/decoder librarymodule load dev/ffmpeg
GCCGNU C Compiler collection
See the gcc guide for details.
module load gcc
GitHub CLIGitHub command-line toolmodule load dev/github-cli
GoGoogle Go programming languagemodule load compilers/go
GradleA build automation system that builds upon the concepts of Apache Ant and Apache Mavenmodule load dev/gradle
HadoopMap Reduce frameworkmodule load big-data/hadoop
IntelliJ IdeaJetBrains IDE for Java and Kotlin development (community and ultimate editions)For community edition:
module load ide/intellij/community
For ultimate edition:
module load ide/intellij/ultimate
Intel Advisor ToolkitA design and analysis tool for developing performant codemodule load dev/intel-advisor
Intel ICXIntel compiler suite (icx, etc)module load compilers/icx
JavaJava Software Development Kit (SDK)module load java
MatLabComputational mathematics and programming languagemodule load matlab
MavenSoftware project managementmodule load dev/maven
Mentor GraphicsCatapult Synthesis and Questa productsmodule load mentor
MongoDBA key-value based databasemodule load big-data/mongodb
nvtopAn (h)top like task monitor for NVIDIA GPUsmodule load tools/nvtop
OpenCVComputer vision librarymodule load dev/opencv
PostmanAn API platform for building and using APIsmodule load dev/postman
PyCharmJetBrains IDE for Python development ((community and Pro editions)For community edition:
module load ide/pycharm/community
For Pro edition:
module load ide/pycharm/pro
RacketSscheme programming languagemodule load compilers/racket
RustA multi-paradigm, general-purpose programming language designed for performance and safetymodule load compilers/rust
sbtIntereactive build tool for Scala, Java, and moremodule load tools/sbt
ScalaScala is a programming language for general software applicationsmodule load compilers/scala
SparkFast and general engine for big data processing, with built-in modules for streaming, SQL, machine learning and graph processing.module load big-data/spark
SWI-PrologA comprehensive free Prolog environmentmodule load compilers/swi-prolog
TexLiveA complete Latex suitemodule load office/texlive
Visual Studio CodeAn IDE from Microsoftmodule load ide/visual-studio-code

Environment Modules (eMod)

What are environment modules (eMod)?

On CS Linux systems, additional software is made available via Linux Environment Modules. This helps us to provide and maintain multiple versions of a variety of software. Users do not have to deal with details such as environment paths to different software versions or libraries. Modules will set or unset the appropriate paths for you.

How to see all available modules?

To see all available modules run module available command. Here is an example output:

--------------------- /usr/local/modules-alma9 ---------------------
aiml/ollama                   deprecated/tensorflow-1.15
av/ffmpeg/4.3.1               dev/github-cli
av/mplayer/1.4                dev/github-hub
big-data/hadoop               dev/gradle
big-data/mongodb              dev/intel-advisor
big-data/spark                dev/maven/3.3.9
cloud-tools/aws               dev/maven/3.5.4
cloud-tools/gcloud            dev/maven/3.6.3
cloud-tools/rclone            dev/maven/3.9.4
compilers/go                  dev/opencv/4.5.1
compilers/icx                 dev/postman
compilers/mpi/mpich-4.0.1     gcc/6.5.0
compilers/mpi/openmpi-i386    gcc/7.4.0
compilers/mpi/openmpi-slurm   gcc/8.2.0
compilers/mpi/openmpi-x86_64  gcc/9.3.0
compilers/racket              gcc/10.2.0
compilers/rust                gcc/11.2.0
compilers/scala               gcc/12.2.0
compilers/swi-prolog          gcc/13.2.0
...

How to use a software via modules?

To use a specific software package, load the corresponding module. For instance, if you would like to use NVIDIA CUDA 12.8, use the command:

module load cuda/12.8

As a good practice, when loading an environment module you must specify the full name of the module. Just like in the above example we used the complete name of the CUDA module (along with the version number). The full name for modules can be found in the output of module available command.

How to know which modules I have loaded?

To see which specific modules are loaded, run module list command:

$ module list
Currently Loaded Modulefiles:
 1) cuda/12.8   2) gcc/13.2.0

In the above example, we see that the user has loaded two modules: CUDA v12.8 and GCC v13.2.0

How to unload a module?

To remove a module from your environment, use the module unload <module-name> command. Let us unload the CUDA 12.8 module which we loaded before:

module unload cuda/12.8

To verify, list the presently loaded modules:

$ module list
Currently Loaded Modulefiles:
 1) gcc/13.2.0

We see that the CUDA module is not loaded anymore.

How to unload all loaded modules?

Use the module purge command to unload all loaded modules.

module purge

Now as a check:

$ module list
No Modulefiles Currently Loaded.

How to switch between software versions?

Use the module switch <module-name> command to switch to a different version of the software package. For example, let us assume we want to switch to CUDA version 11.6 from 12.8 (which we have already loaded).

First, confirm we have CUDA 12.8 loaded:

$ module list
Currently Loaded Modulefiles:
 1) cuda/12.8

We can also check the version of the nvcc compiler:

$ nvcc --version | grep release
Cuda compilation tools, release 12.8, V12.8.93

This confirms that we are indeed using CUDA v12.8. Now, let us switch to CUDA v11.6

module switch cuda/11.6

Let us see what modules are loaded now:

$ module list
Currently Loaded Modulefiles:
 1) cuda/11.6

So, this confirms that we have switched CUDA version from 12.8 to 11.6.

How can I make this persistent?

Most modules can be made to load at every login by adding the appropriate module load <module-name> statement in your shell configuration files (.bashrc or .cshrc).

Note that in non-login shells, the modules configuration environment can not automatically load.

If you need to use environment modules in non-login shells, non-interactive SLURM jobs, or other similar sessions, you will need to include the following in your shell config files:

BASH

source /etc/profile.d/modules.sh
module purge

TCSH

source /etc/profile.d/modules.csh
module purge

These statements must be added before any module load statements. Following these, you could add any module load <module-name> statements.

Using CUDA

What is CUDA?

CUDA stands for Compute Unified Device Architecture. CUDA is a parallel computing architecure and C based programming language for general purpose computing on NVIDIA GPU’s

Which department machines support CUDA?

Below is a list of machines with higher-end CUDA cards:

HostGPU QtyGPU(s)LocationExclusive Access
falcon cluster8A100 80GBSR 475
falcon cluster2 RTX 3090 24GBSR 475
ahsoka1RTX 4000 Ada 20GBLab 225
anakin1RTX 4000 Ada 20GBLab 225
boba1RTX 4000 Ada 20GBLab 225
bo-katan1RTX 4000 Ada 20GBLab 225
cad-ban1RTX 4000 Ada 20GBLab 225
clan-wren1RTX 4000 Ada 20GBLab 225
ezra1RTX 4000 Ada 20GBLab 225
grogu1RTX 4000 Ada 20GBLab 225
hera1RTX 4000 Ada 20GBLab 225
hondo1RTX 4000 Ada 20GBLab 225
kallus1RTX 4000 Ada 20GBLab 225
kanan1RTX 4000 Ada 20GBLab 225
kuiil1RTX 4000 Ada 20GBLab 225
loth-cats1RTX 4000 Ada 20GBLab 225
mando1RTX 4000 Ada 20GBLab 225
nightsisters1RTX 4000 Ada 20GBLab 225
obi-wan1RTX 4000 Ada 20GBLab 225
palpatine1RTX 4000 Ada 20GBLab 225
rex1RTX 4000 Ada 20GBLab 225
sabine1RTX 4000 Ada 20GBLab 225
satine1RTX 4000 Ada 20GBLab 225
tarkin1RTX 4000 Ada 20GBLab 225
thrawn1RTX 4000 Ada 20GBLab 225
tusken1RTX 4000 Ada 20GBLab 225
ventress1RTX 4000 Ada 20GBLab 225
zeb1RTX 4000 Ada 20GBLab 225
anchovy1RTX 4000 Ada 20GBLab 325
barracuda1RTX 4000 Ada 20GBLab 325
blowfish1RTX 4000 Ada 20GBLab 325
bonito1RTX 4000 Ada 20GBLab 325
brill1RTX 4000 Ada 20GBLab 325
bullhead1RTX 4000 Ada 20GBLab 325
char1RTX 4000 Ada 20GBLab 325
cod1RTX 4000 Ada 20GBLab 325
dorado1RTX 4000 Ada 20GBLab 325
eel1RTX 4000 Ada 20GBLab 325
flounder1RTX 4000 Ada 20GBLab 325
grouper1RTX 4000 Ada 20GBLab 325
halibut1RTX 4000 Ada 20GBLab 325
herring1RTX 4000 Ada 20GBLab 325
mackerel1RTX 4000 Ada 20GBLab 325
marlin1RTX 4000 Ada 20GBLab 325
perch1RTX 4000 Ada 20GBLab 325
pollock1RTX 4000 Ada 20GBLab 325
sardine1RTX 4000 Ada 20GBLab 325
shark1RTX 4000 Ada 20GBLab 325
sole1RTX 4000 Ada 20GBLab 325
swordfish1RTX 4000 Ada 20GBLab 325
tarpon1RTX 4000 Ada 20GBLab 325
turbot1RTX 4000 Ada 20GBLab 325
tuna1RTX 4000 Ada 20GBLab 325
wahoo1RTX 4000 Ada 20GBLab 325
earth1Titan V 12GBSR 475
jupiter1Titan V 12GBSR 475
mars1Titan V 12GBSR 475
mercury1Titan V 12GBSR 475
neptune1Titan V 12GBSR 475
saturn1Titan V 12GBSR 475
uranus1Titan V 12GBSR 475
venus1Titan V 12GBSR 475
winter-park1Titan V 12GBSR 475
lamborghini1GeForce GTX TITAN X 12GBSR 475
lotus1GeForce GTX TITAN X 12GBSR 475
maserati1GeForce GTX TITAN X 12GBSR 475
porsche1GeForce GTX TITAN X 12GBSR 475
old_ahsoka1GeForce RTX 3080 10GBSR 475
old_anakin1GeForce RTX 3080 10GBSR 475
old_boba1GeForce RTX 3080 10GBSR 475
old_bo-katan1GeForce RTX 3080 10GBSR 475
old_chopper1GeForce RTX 3080 10GBSR 475
old_clan-wren1GeForce RTX 3080 10GBSR 475
old_ezra1GeForce RTX 3080 10GBSR 475
old_grogu1GeForce RTX 3080 10GBSR 475
old_hera1GeForce RTX 3080 10GBSR 475
old_hondo1GeForce RTX 3080 10GBSR 475
old_kallus1GeForce RTX 3080 10GBSR 475
old_kanan1GeForce RTX 3080 10GBSR 475
old_kuiil1GeForce RTX 3080 10GBSR 475
old_loth-cats1GeForce RTX 3080 10GBSR 475
old_mando1GeForce RTX 3080 10GBSR 475
old_nightsisters1GeForce RTX 3080 10GBSR 475
old_obi-wan1GeForce RTX 3080 10GBSR 475
old_omega1GeForce RTX 3080 10GBSR 475
old_palpatine1GeForce RTX 3080 10GBSR 475
old_rex1GeForce RTX 3080 10GBSR 475
old_sabine1GeForce RTX 3080 10GBSR 475
old_satine1GeForce RTX 3080 10GBSR 475
old_tarkin1GeForce RTX 3080 10GBSR 475
old_thrawn1GeForce RTX 3080 10GBSR 475
old_ventress1GeForce RTX 3080 10GBSR 475
old_zeb1GeForce RTX 3080 10GBSR 475
kale1GeForce GTX 1060p 6GBSR 475
kelp1GeForce GTX 1060p 6GBSR 475
leek1GeForce GTX 1060p 6GBSR 475
lettuce1GeForce GTX 1060p 6GBSR 475
mushroom1GeForce GTX 1060p 6GBSR 475
okra1GeForce GTX 1060p 6GBSR 475
onion1GeForce GTX 1060p 6GBSR 475
parsley1GeForce GTX 1060p 6GBSR 475
parsnip1GeForce GTX 1060p 6GBSR 475
pea1GeForce GTX 1060p 6GBSR 475
pepper1GeForce GTX 1060p 6GBSR 475
potato1GeForce GTX 1060p 6GBSR 475
pumpkin1GeForce GTX 1060p 6GBSR 475
radish1GeForce GTX 1060p 6GBSR 475
rhubarb1GeForce GTX 1060p 6GBSR 475
romanesco1GeForce GTX 1060p 6GBSR 475
rutabaga1GeForce GTX 1060p 6GBSR 475
shallot1GeForce GTX 1060p 6GBSR 475
spinach1GeForce GTX 1060p 6GBSR 475
squash1GeForce GTX 1060p 6GBSR 475
tomatillo1GeForce GTX 1060p 6GBSR 475
tomato1GeForce GTX 1060p 6GBSR 475
turnip1GeForce GTX 1060p 6GBSR 475
wasabi1GeForce GTX 1060p 6GBSR 475
yam1GeForce GTX 1060p 6GBSR 475
zucchini1GeForce GTX 1060p 6GBSR 475

How do I configure my shell environment for CUDA development?

The NVIDIA graphics driver and CUDA compilier are already installed on machines that support CUDA. However, one must set some environment variables in order to run and write CUDA enabled programs.

This can be done using environment modules.

First, to see what versions of CUDA are available:

$ module available cuda
------------------------ /usr/local/modules-alma9 ------------------------
cuda/9.1   cuda/11.6  cuda/11.8  cuda/12.1  cuda/12.8
cuda/10.2  cuda/11.7  cuda/12.0  cuda/12.6

To load the latest version of CUDA:

$ module load cuda

Or to load a specific version of CUDA:

$ module load cuda/12.6

Confirm:

$ module list
Currently Loaded Modulefiles:
 1) cuda/12.6

And:

$ nvcc --version | grep release
Cuda compilation tools, release 12.6, V12.6.85

How can I switch to a different version of CUDA?

If you have loaded a CUDA version and would like to switch to a different version:

$ module load cuda/12.6

Using GCC

In addition to the default GCC provided by the OS, we have several older and newer versions of GCC compiler available. To see what versions of GCC are available:

$ module available gcc
------------------------ /usr/local/modules-alma9 -------------------------
gcc/6.5.0  gcc/8.2.0  gcc/10.2.0  gcc/12.2.0  gcc/15.1.0
gcc/7.4.0  gcc/9.3.0  gcc/11.2.0  gcc/13.2.0

To load the latest version of GCC:

$ module load gcc

Or to load a specific version of GCC:

$ module load gcc/11.2.0

Confirm:

$ module list
Currently Loaded Modulefiles:
 1) gcc/11.2.0

And:

$ gcc --version
gcc (GCC) 11.2.0

How can I switch to a different version of GCC?

If you have loaded a GCC version and would like to switch to a different version:

$ module switch gcc/<VERSION>

Using Java

What versions of JAVA are available?

In addition to the default JAVA provided by the OS, we have several older and newer versions of JAVA compiler available. To see what versions of JAVA are available:

$ module available java
------------------------ /usr/local/modules-alma9 -------------------------
java/11  java/15  java/17  java/20  java/21

To load the latest version of JAVA:

$ module load java

Or to load a specific version of JAVA:

$ module load java/17

Confirm:

$ module list
Currently Loaded Modulefiles:
 1) java/17

And to confirm:

$ java --version
openjdk 17.0.17 2025-10-21 LTS

$ javac --version
javac 17.0.17

How can I switch to a different version of JAVA?

If you have loaded a JAVA version and would like to switch to a different version:

$ module switch java/<VERSION>

Using VS Code

How do I use Visual Studio Code ?

VS Code editor is installed on all CS machines. You can launch the editor by finding it in the Applications menu. If you would like to launch it from within a terminal, via the code command, you will need to load the necessary environment module as shown below:

$ module load ide/visual-studio-code

After that, the code command will be available in your current terminal session. Refer to Environment Modules page for more information on how to find and use modules and make them persistent.

How do I use Visual Studio Code remotely?

In this use-case Visual Studio Code is installed and running on your personal machine (laptop or desktop). You write and edit code on your laptop, but connect to the CS machines for running the code. The connection is handled by a proprietary SSH extension which you will need to install on your laptop.

Warning

It is not feasible for SNA to support this use case, yet we are listing some common issues and troubleshooting steps below.

Troubleshooting Remote VS Code Connection

SNAs are not experts on the specific details of VS Code or its proprietary extensions, however, we have encountered a few common issues that users may experience when using VS Code remotely. These issues include:

  1. Connection drops
  2. VS Code repeatedly asking for a password even though supplied password is correct
  3. Multiple sessions can’t exist simultaneously
  4. Only the session from the last connected server will work
  5. Connections work on some machines and do not work on some other machines.

Possible Causes

When a user connects remotely to a CS machine via VS code, it creates a sub-directory under the user’s home directory to facilitate the connection. We believe that corruption of files under vscode directories is likely the main cause of most connection issues. Since home directories on CS Linux machines are shared across machines, your home directory and its content is the same on all machines. This increases the likelyhood of clashes and overwriting files when one logs in to multiple machines via remote vscode. Other causes of corruption could be:

  • Accessing multiple CS machines simultaneously while using VS Code.
  • Ungraceful shutdown of a connection on one machine and re-connecting to another machine.

Suggested Solution

The ideal solution is to change the default path of VS Code server directory to a path local on the remote host you are connecting to. By default the location is ~/.vscode-server, which is in your home directory. The following steps will show how to change this.

  1. Delete the ~/.vscode-server directory by logging in without VS Code, using an SSH client to connect (see here). Enter the following commands:
    pkill -u node
    rm -rf ~/.vscode-server
  2. Open VS Code on your laptop
  3. Go to the Settings
  4. Go to Remote SSH extension’s settings by typing @ext:ms-vscode-remote.remote-ssh install in the search box (see screenshot below)
  5. Now, under Server Install Path, click Add Item and add the following key:value pair
    Item = host
    Value = /s/$HOSTNAME/a/tmp/$USER
  6. Click OK
  7. Do this for each and every host in your SSH configuration. Click Add Item to add more hosts. Notice how the path stays the same for all hosts, see screenshot below
  8. Now connect to one of the remote machines and you would notice that the .vscode-server directory gets created on a local filesystem on this host, not in your home directory.

Warning

In Step 5 above, the “host” in the Item field must match with the host you have in your SSH config file. The Value field stays the same for all hosts, so use the exact value as listed above.

Tip

Always close your remote connections via File ⮕ Close Remote Connection instead of just closing the window.

Customizing .bashrc

What is .bashrc?

.bashrc is a shell script that the Bash shell uses to configure and customize your shell environment. It is typically used to change prompts, set environment variables, define command aliases and define shell functions. Other shells use their own specific dot files.

Where is the .bashrc file located?

The .bashrc file lives in your home directory. Since it is a dot file (filename begins with a “.”, it is hidden). To see if it exists:

$ ls -la ~/.bashrc

How do I set environment variables in my .bashrc file?

You can use the .bashrc file to define environment variables like PATH, LD_LIBRARY_PATH, PYTHONPATH, etc. Once you define these variables in the .bashrc file, your shell would know the paths since .bashrc is read at every login.

Let’s say you want to use two software from /usr/local/, CUDA and Eclipse IDE. For this you would define the PATH variable by adding the following lines to your .bashrc file:

# add cuda and eclipse to command path
export PATH=/usr/local/cuda/latest/bin:$PATH
export PATH=/usr/local/eclipse/java/latest/bin:$PATH

Save the file and source it for changes to be applied to the current shell.

$ source ~/.bashrc

How do I confirm that the environment variable configuration has been applied?

You can confirm by using the printenv command. The command output should contain the paths you added.

$ printenv $PATH
/usr/local/eclipse/java/latest/bin:/usr/local/cuda/latest/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin

Where do I add the environment variable settings in the .bashrc file?

You can add these lines at any place in the .bashrc file, however, note that these variables get built as the shell reads the file. So, be careful with multiple definitions of the same variable in your .bashrc file.

I have messed up my .bashrc file. How do I fix it?

You can get a fresh copy of the default .bashrc file using these commands:

/bin/mv ~/.bashrc ~/.bashrc.backup
/bin/cp ~info/dot.files/.bashrc ~/.bashrc

Environment Variables

What are environment variables?

In Unix based systems, environment variables are variables that are defined for the current shell and are inherited by any child shells or processes. Environmental variables contain information that tells your shell where to find resources.

Why should I care about environment variables?

Environment variables allow you to customize your Unix environment. For example, you may change the default text editor, the path to executable files and libraries by setting appropriate environment variables. On the CS machines, additional software can be used by tweaking your environment variables.

How do environment variables look like?

The environment variables look like strings that represent key-value pairs. They generally look something like this:

/bin/mv ~/.bashrc ~/.bashrc.backup
/bin/cp ~info/dot.files/.bashrc ~/.bashrc

Note:

  • The names of the variables are case-sensitive. By convention, environment variables should have UPPER CASE names.
  • If multiple values are passed for a key, they should be separated by colon (:) characters.
  • If the value contains spaces, quotes should be used
  • There is no space around the equals = symbol.

What are some important environment variables that I should know?

Here are some of the important variables:

Variable NameDescription
HOMEThe current user’s home directory.
LD_LIBRARY_PATHAn ordered list of directories that are checked when looking for libraries.
PATHAn ordered list of directories that are checked when looking for binaries (commands).
PYTHONPATHAn ordered list of directories that are checked when looking for Python libraries (modules).
SHELLThe default shell for you. It is set to be bash by default, but other values can be set if you prefer other options.

How do I set environment variables?

You can use the export command to define and set environment variables. For example, if you want to set a new variable named FOO, having the value bar, use the following command:

$ export FOO="bar"

How do I confirm that the environment variable configuration has been applied?

You can confirm by using the printenv command. To see if the FOO variale we defined in the previous question was successfully set, use:

$ printenv $FOO
bar

You should see the value you had defined for the variable.

Warning

Environment variables created in a terminal shell are available only in the current session. If you open a new shell or if you log out all variables will be lost. For making them persistent, see the bashrc guide.

How do I delete environment variables?

You can use the unset command to remove environment variables. For example, to delete the variable we created earlier:

$ unset FOO

Is the command export PATH=/usr/local/foo/latest/bin:$PATH the same as export PATH=$PATH:/usr/local/foo/latest/bin?

No. The order matters. When a user types in a command, the system checks directories in this order for the executable. So, for export PATH=/usr/local/foo/latest/bin:$PATH, the location /usr/local/foo/latest/bin is searched before any other location in the binaries path. And for export PATH=$PATH:/usr/local/foo/latest/bin the /usr/local/foo/latest/bin is searched for at the last.

In fact, by changing the order of directory locations in your environment variables, you can tweak which locations get more preference for locating software. This is useful if a software is available from more than one location.

Installing Software

How do I install software?

You can install software under your home directory. Most software support installation under non-system locations. If you are building from source, you can change the install location to some directory in your home directory. For instance, in the traditional method of building software from source code, generally called the configure-make-install method, you could set the install location in the configure step using the --prefix= option.

Here is an example of installing a software named foo in a directory named bar (in your home directory) from the source file foo.tar.gz

tar xvzf foo.tar.gz
cd foo
./configure --prefix=~/bar
make
make install

After a successful build, you would find a typical directory structure under the install directory:

bar
├── bin
├── lib
└── share

Now to use this software, you would need to add the install paths for binaries and libraries (at the least) to your environment variables:

export PATH="~/bar/bin:$PATH"
export LD_LIBRARY_PATH="~/bar/lib:$LD_LIBRARY_PATH"

How do I install Python libraries?

You may install Python libraries under your home directory. The easiest way to do this is using pip. If the library is not available via PyPI, you might need to build it from source, using the instructions above.

When installing via pip, the install files go under the .local directory under your home directory. Let’s say you want to install a Python library named foo.

pip3 install foo --user

Now, you should be able to use the library you just installed.

>>> import foo
>>>

Python Virtual Environments

You can create Python virtual environments to install different Python libraries. This is very helpful when you’re working on multiple research papers or courses requiring different versions of libraries and want to keep everything organized separately.

Since we have various sources and versions of Python available, you should first load the right environment module depending on the Python version you want to use. After that, creating a virtual environment on CS machines is similar to doing it on any other Linux machine.

To create a virtual environment using Anaconda, you would do:

module load python/anaconda
conda create -n my-env python=3.x anaconda

And to create one using “venv” you would:

module load python/bundle-3.x
python3.x -m venv my-env

Please note that if you install Python libraries within your virtual environment, additional configuration of your environment paths may be required. This depends on the method used to create your virtual environment and its location.

Tip

If you have loaded one of the Python bundles via environment modules, you do not need to set the paths above. The modules take care of that automatically.

Warning

The Anaconda environment module does not automatically handle user-installed Python paths, so you will need to set the paths appropriately.

Python Libraries

What versions of Python are available?

We have several different versions of the Python interpreter available, see details below.

Warning

Python v2.x is not supported.

Where are Python libraries installed?

Python libraries are sourced from system packages, python module bundles, from source code and from Anaconda. Each type of source has a different install location, as discussed in the next answer.

How do I use Python libraries?

For Python modules coming from system packages you need not make any changes to your environment paths. But to use any other form of Python libraries, you would need to add the install location to your environment paths.

Tip

Although possible, it is generally not recommended to mix Anaconda’s libraries with any of the bundles.

Refer to the links below for more information on how to use these Python modules.

Anaconda

Anaconda brings in a lot of open-source Python modules and it’s own Python interpreter. Popular modules like Jupyter Notebook, TensorFlow, CUDA, CuDNN, PyTorch, OpenCV etc are included in this install. The current version of Anaconda provides Python v3.10

To use Anaconda (with Python v3.10), run the following command:

module load python/anaconda

Once this has been done, verify that you are using Anaconda’s Python interpreter by the command:

which python

This should return:

/usr/local/anaconda3/2023.03/bin/python

To use Python v3.9 via Anaconda, use the following command instead of above:

module load python/anaconda/py3.9-2022.08   

To use Python v3.8 via Anaconda, use the following command instead of above:

module load python/anaconda/py3.8-2021.11

To see if a module is installed, use the conda command. For instance, if you would like to check whether tensorflow is installed :

$ conda list tensorflow
# packages in environment at /usr/local/anaconda3/2023.03:
#
# Name                    Version                   Build  Channel
tensorflow                2.12.0                   pypi_0    pypi
tensorflow-estimator      2.12.0                   pypi_0    pypi
tensorflow-io-gcs-filesystem 0.33.0                   pypi_0    pypi

Now you may use the modules provided by Anaconda.

Bundle (Python 3.9)

This is a complete bundle of various Python libraries for Python 3.9

To use this, run the following command:

module load python/bundle-3.9

d

ls -l /usr/local/python-env/py39/lib/python3.9/site-packages

Note

The versions of packages in the bundle are frozen. If you need a specific version for a package, please contact us.

Bundle (Python 3.11)

This is a complete bundle of various Python libraries for Python 3.11

To use this, run the following command:

module load python/bundle-3.11

d

ls -l /usr/local/python-env/py311/lib/python3.11/site-packages

Note

The versions of packages in the bundle are frozen. If you need a specific version for a package, please contact us.

Bundle (Python 3.13)

This provides Python libraries for Python 3.13

To use this, run the following command:

module load python/bundle-3.13

A Python library I need is not installed. What are my options?

You could install the module in your home directory, see this page for more information. Or contact us and we will help you out.

Using Eclipse IDE

How do I use Eclipse IDE on the CS machines?

From the Applications menu: ApplicationsDevelopmentEclipse IDE for Java

If you would like to use the command line to start Eclipse, first add the install directory to your environment path:

module load ide/eclipse/eclipse-java

Then run Eclipse via the command:

eclipse

Eclipse is acting wonky and I am unable to create a new java class in an eclipse project. How can I fix this?

This is usually caused by a corruption in your local Eclipse space. The remedy is to back up your local eclipse settings and relaunch eclipse.

cd
mv .eclipse .eclipse_backup
eclipse

Once the problem goes away don’t forget to remove your .eclipse_backup.

Note

You will lose any custom plugins/settings you have currently installed.

Using Jupyter Notebook

How do I use JupyterNotebook ?

You may use either Anaconda, or the modules bundle for Python 3.6/3.8/3.9. Configure your environment as shown in the Python Libraries section. After you have configured it, you can use JupyterNotebook as:

cd
mv .eclipse .eclipse_backup
eclipse

Note that this command starts the JupyterNotebook server on port 8888 and opens a browser window. This works if you are logged into a physical session on the machine, or through a remote desktop connection.

How do I use JupyterNotebook remotely?

You can either use the remote desktop connection to connect to a CS machine via a GUI session and start JupyterNotebook as explained above, or use SSH tunneling.

SSH tunneling is explained below:

  1. Connect to a CS machine via SSH (follow this guide)
  2. Set up your environment with either Anaconda, or the modules bundle for Python 3.6/3.8 as shown in the Python Libraries section.
  3. Start JupyterNotebook without opening the browser (that’s the key), via the command:
    jupyter-notebook --no-browser --port=9090
  4. Now set up an SSH tunnel to a CS machine, from your laptop. Type this command in a terminal on your laptop (and not on the CS machine):
    ssh -N -L 9090:localhost:9090 your-eid@cs-machine-name.cs.colostate.edu
    Replace your-eid with your CS username and cs-machine-name with an actual name of a CS machine.
  5. Now on your laptop, open this URL in a browser: http://localhost:9090/

Using TensorFlow

How do I use TensorFlow version 2.x ?

You may use either Anaconda, or the modules bundle for Python 3.6/3.8/3.9. Configure your environment as shown in the Python Libraries section. After you have configured it, you can use TensorFlow as:

$ python3
Python 3.9.13 | packaged by conda-forge | (main, May 27 2022, 16:56:21)
[GCC 10.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.version.VERSION
'2.9.1'

How do I use TensorFlow version 1.x ?

We have version 1.15 available, if you need to use the older version of TensorFlow. Both CPU and GPU packages are installed. Use the following command:

module load deprecated/tensorflow-1.15

After you have configured it, you can use TensorFlow as:

module load deprecated/tensorflow-1.15

LOADING THE DEPRECATED MODULE IS BROKEN.