Accessing software on Balena

Overview:

  • Teaching: 10 min
  • Exercises: 5 min

Questions

  • How do I access software?
  • What libraries are available?
  • How can I access different applications?
  • What tools are there to help me?
  • Why can't I access certain applications?
  • Can you help me to install my research codes?

Objectives

  • Know that software on Balena is managed with module and understand how to use it
  • Know that software is collected into groups with different functions
  • Understand that some applications are under license which may need to be verified before granting access
  • Understand that we can help install or build software but it is important for you to know how to do this as well

module

On Balena module is used to manage different libraries and pieces of software. Unlike you own machine where you likely have one set of up packages each running with the latest versions on Balena there are many different applications each with different versions and libraries that they rely on. Tools like module ensure researchers can access the versions of applications and libraries they want and allow the service to be managed more easily. It also means that the correct dependencies, typically libraries that are used to compile applications can be loaded automatically making life easier for users.

You can check what modules are loaded when you first log-in to Balena:

module list

You can also run this command at any time to check which modules you have loaded or removed.

By default only gcc/4.9.3 and slurm/17.11.17 are loaded.

  • gcc provides the standard serial gnu compiler suite
  • slurm is the scheduler which manages the queue and allows you to run jobs

We will discuss slurm in more detail in the following episode. For now let's find what other modules are available:

module avail

As you will see there is a lot of software available. It is broken down into sections:

Section Content
/apps/modules/balena Balena specific modules
/apps/modules/applications (HPC) Applications
/apps/modules/compilers-langs Programming languages and compilers
/apps/modules/libraries Additional libraries
/apps/modules/tools Build, debugging & profiling tools

In order to access these modules they need to be loaded:

module load python3

Licensed software

Some of the software on Balena is licensed, for instance there are a finite number of intel compiler licenses so if these happen to be in use you may have to wait for one to become available to compile your code.

Similarly some scientific codes have licenses that require us to ensure that the license holder complies with their obligations. If you are unable to access the codes that you require check licensed codes some of these are controlled by your PI, some by us. If you believe you should have access yp aa code, email hpc-support@bath.ac.uk.

You can also email for support compiling software for your research. However it important for you to know how your codes are compiled, you are the domain expert who knows how they should behave so have far better working knowledge of codes that we can. This is particularly the case for software stacks such as conda envirnoments. Information about managing these is in the wiki, and we are also developing a set of resources to explore these in more detail.

When loading modules it is important to ensure that you are clear about which module you are using. If we wanted to use gcc/9.2.0, how can we ensure that we use this version rather than the default that gcc/4.9.3 that is loaded we when login? We can swap or switch modules:

module switch gcc/4.9.3 gcc/9.2.0

Also if you are installing multiple libraries, e.g. the intel compiler, mpi and maths libraries make sure they are the same version, or that they match e.g. are all intel flavours or all gcc flavours of libraries.

Finally if you want to clean you environment of all modules to start from scratch you can use:

module purge

Access software using module <verb>

The majority of software on Balena is managed using module. Use this in combination with a 'verb' for different functionality:

What modules do I currently have loaded:

$ module list

What modules are available:

$ module avail

Load a module:

$ module load <software>/<flavour>/<version>

Note the (default) versions that are loaded if you don't completely specify the module name.

You can remove modules using module rm or swap e.g. between different versions using module switch. You can remove all currently loaded modules using:

module purge

this is really useful for making sure you have a clean module environment e.g. when you in job scripts. But note that this will also prevent you running jobs as you need slurm to be able to run correctly. So if you do use this in your job scripts ensure you have:

module purge
module load slurm
module load my_favourite_research_apps_and_libraries

Key Points:

  • Software on Balena is managed with module
  • Software is collected in different groups e.g.: libraries, tools, applications
  • You may need a license to run certain applications
  • We can help but it is good for you to understand how to install and build applications yourself