NOTICE: FULL O2 Cluster Outage, January 3 - January 10th
O2 will be completely offline for a planned HMS IT data center relocation from Friday, Jan 3, 6:00 PM, through Friday, Jan 10
- on Jan 3 (5:30-6:00 PM): O2 login access will be turned off.
- on Jan 3 (6:00 PM): O2 systems will start being powered off.
This project will relocate existing services, consolidate servers, reduce power consumption, and decommission outdated hardware to improve efficiency, enhance resiliency, and lower costs.
Specifically:
- The O2 Cluster will be completely offline, including O2 Portal.
- All data on O2 will be inaccessible.
- Any jobs still pending when the outage begins will need to be resubmitted after O2 is back online.
- Websites on O2 will be completely offline, including all web content.
More details at: https://harvardmed.atlassian.net/l/cp/1BVpyGqm & https://it.hms.harvard.edu/news/upcoming-data-center-relocation
Conda on O2
Warning: If you are using any of HMS IT’s conda modules that DOES NOT begin with miniconda3
, please switch to using a miniconda3
module immediately. As of August 13, 2024, all conda modules not beginning with miniconda3
have been hidden, and will be fully decommissioned at a later date, to be determined. To properly retain conda environment functionality, please load a miniconda3
module instead.
If you have executed conda init
at any point (you can confirm this by observing whether you see (base)
in your terminal prompt upon login), please check to see if your which conda
output points to anywhere OTHER than /n/app/miniconda3
. For example, the following is fine:
$ which conda
/n/app/miniconda3/23.1.0/bin/conda
The following is NOT:
$ which conda
/n/app/conda3/bin/conda
If so, please remove the block from your $HOME/.bashrc file. For general guidance related to conda init
, see Conda on O2 | Usage of conda init .
On O2, we encourage cluster users to install the packages and software they need. One method to install packages and manage environments is to use conda, which is available through our miniconda
modules. Conda manages dependencies by default when you install packages, which can make it easier to install software. Packages that can be installed with conda include Python modules, libraries, or executable programs.
Commonly used commands, examples
Command | Meaning |
---|---|
| shows the versions of conda installed on O2 |
| loads an individual conda module (replace version with an actual version) |
| see available conda environments |
| create conda environment named test_env (name the environment whatever you'd like) |
| create conda environment, and install some packages (bwa, bowtie, and star) on the fly |
| "activate" a conda environment located at |
| exit current conda environment |
| delete a conda environment named test_env (may also require full path if installed to nonstandard location) |
| search for a package (replace numpy with the package of your choice) |
| install a package, and must be within a conda environment or this command will fail. (replace numpy with the package of your choice) |
Setup
To install packages on O2 using conda, you must first create a conda environment. Environments are simply directories in ~/.conda/envs/Â
that contain packages you installed. You "source" an environment to use those packages, and can "deactivate" to exit the environment. You can have multiple environments, and can switch between them.Â
First let's get into an interactive session, as installing conda packages is resource intensive and should not be done on the login nodes.
mfk8@login01:~$ srun --pty -p interactive -t 0-2 bash
Next, load the conda module:
Then the conda
command will be available:
Running conda info
will return information about the current conda installation:
You can see available conda environments with conda info --envs.
 If you have not created any conda environments yet, the only listing you will see is the root environment in /n/app/miniconda3
. Cluster users do not have access to alter this.Â
You can create your own environment to install packages to. You can change the environment name (specified after -n
):
If you no longer want an environment, use conda-env remove
 to delete the environment and any packages installed to it:
Basic usage
To use the conda environment, it must be activated. Note that your prompt will change:
To exit an environment you run source deactivate
, and your prompt will return to normal:
As you just exited the environment, any packages installed to that environment will not be able to be used now.
You can create as many conda environments as you need. Environments are independent (changing one environment won't affect another). They can be used for different analyses, or perhaps if you need more than one version of the same tool. You can run conda info --envs
 to list all of your conda environments.
Usage of conda init
At some point in their interactions with conda, users may be prompted to execute conda init
. Executing conda init
results in a block of initialization code being added to the bottom of the the executing user’s $HOME/.bashrc
profile, causing that conda distribution’s (base)
environment to be initialized upon login to O2. This block also enables the use of the conda activate
command.
The block looks something like this (depending on distribution):
Research Computing does not recommend the use of conda init
on O2. There are two primary reasons for this:
This fixes the use of the specified version of conda (and all that entails) for the user on login, which may become the cause of package dependency mismatches and errors as a user requires either alternative conda or application versions for future projects and environments.
There have been reports of users experiencing high latency when logging in to O2 when they have
conda init
blocks present in their$HOME/.bashrc
files. This is due to an interaction between the login initialization processes and Research Computing’s login node process watchdog, combined with our existing authentication procedures; this interaction can cause logins can take upwards of minutes to resolve.
Research Computing recommends users either comment out or outright delete the conda init
block from their $HOME/.bashrc
files entirely, and get used to the source activate
(and load the appropriate associated conda module beforehand) approach. Executing conda init --revert
should also serve to remove the block (given that the correct Conda distribution is currently active), but do make sure the $HOME/.bashrc
file accurately reflects the removal of the block afterward. In particular, while using the O2-available miniconda modules, the source activate
method should always work.
If a user is leveraging their own personal anaconda/miniconda distribution (i.e., not available via O2’s module system), they can choose to ignore this section at their peril. Users that would like to request assistance in maintaining access to their local distributions without the use of conda init
can contact Research Computing at rchelp@hms.harvard.edu.
Installing Packages
To search for available versions of a package that can be installed, use conda search
:
With your conda environment activate, you can install a package with conda install
. Conda will handle dependencies by default. Make sure that you do not install conda packages when on a login node. Only install packages when you have requested dedicated resources beforehand (i.e. you are on a compute node and in a interactive job).
Conda and Python versions
Note that conda includes its own version of Python:
If you want to use a specific version of Python with conda (strongly recommended), you can create a conda environment and install it. For example to create an environment using Python 3.6.5:
A full example
Supported channels
The centralized conda installation, available through the conda modules, includes several channels that we support. Channels are repositories where conda looks for packages. This is done with a centralized .condarc file that contains:
conda-forge
defaults
r
bioconda
The order here matters, as conda will pull packages from channels based upon the channel "priority". For example, the channel listed first in .condarc has the highest priority, and the channel listed last has the lowest priority. This means that if the package you want to install is found in multiple channels in your .condarc, conda will default to installing the version found in the highest priority channel. See here in the conda documentation for more information on channel management.
Conda-forge is a repository of recipes, which are used to build conda packages. The defaults channel is necessary for several dependencies, including conda and conda-build. The r channel contains common R packages, some of which are dependencies for bioconda packages. Bioconda is a channel geared for bioinformatics packages.
If you wish, you can still maintain your own ~/.condarc
 file, but we may be unable to assist when using unsupported channels.
Installing difficult packages
We have created a page to document any particularly difficult packages as observed from interacting with the user community, located at Installing Difficult Conda Packages on O2 . We will keep this page updated as necessary as we encounter more.