Software 2: Difference between revisions

From NU HPC Wiki
Jump to navigation Jump to search
No edit summary
m (Admin moved page Software to Software 2 without leaving a redirect)
 
(114 intermediate revisions by the same user not shown)
Line 1: Line 1:
== New Software ==
This page gives an overview of the software available in NU HPC facilities and explains how to use it.    
New software can be installed system-wide at the request of users, provided it meets the following criteria:
* It is either freely available or NU has a site license for it.
* It is compatible with the existing OS environment on Shabyt.
* It can utilize resources available on Shabyt effectively.
For assistance regarding new software packages, please contact Shabyt system administrators at [mailto:hpcadmin@nu.edu.kz hpcadmin@nu.edu.kz].


== Software Priorities ==
== Software Installation ==
Software applications are installed in accordance with priorities.
Software installation on the Shabyt system follows specific criteria to ensure compatibility and effective utilization of resources. Users can request the installation of new software if it meets the following conditions:
* Software which can be installed via EasyBuild application falls under this category. List of supported EasyBuild softwares you can find here: [https://docs.easybuild.io/version-specific/supported-software/ EasyBuild]
* Applications that are crucial for User Groups but cannot be installed through EasyBuild fall under this priority.
* Individual user requests. Such requests will be processed only after other priorities have been fulfilled.


== Software List ==
* '''Availability and Licensing:''' The software must be freely available or covered by a site license held by NU.
{| class="wikitable"
* '''Compatibility:''' It should be compatible with the existing operating system environment on Shabyt to ensure seamless integration and functionality.
|+
* '''Resource Utilization:''' The software should be able to effectively utilize the resources available on Shabyt, optimizing performance and efficiency.
!Name
!Description
!Versions
|-
|[https://www.amd.com/en/developer/uprof.html#documentation AMD-uProf]
|AMD uProf is a performance analysis tool for applications running on Windows, Linux & FreeBSD operating systems. It allows developers to better understand the runtime performance of their application and to identify ways to improve its performance.
|AMD-uProf/3.5.671
|-
|[[#Anaconda|Anaconda3]]
|Anaconda: Python Data Science Platform for Python 3
|Anaconda3/2022.05
|-
|[https://www.amd.com/en/developer/aocc.html#documentation AOCC]
|AOCC is a high-performance x86 CPU compiler for C, C++, and Fortran programming languages
|AOCC/4.0.0
|-
|[https://github.com/archspec/archspec archspec]
|Archspec provides a standard set of human-understandable labels for various aspects of a system architecture like CPU, network fabrics, etc. and APIs to detect, query and compare them.
|archspec/0.1.3
|-
|[https://gnome.pages.gitlab.gnome.org/atk/ ATK]
|ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and control running applications.
|ATK/2.38.0
|-
|[https://www.gnu.org/software/automake/ Automake]
|Automake – make file builder part of autotools
|Automake/1.16.1
Automake/1.16.3
 
Automake/1.16.4


Automake/1.16.5 (D)
For guidance or support regarding the installation of new software packages, users should contact the Shabyt system administrators at hpcadmin@nu.edu.kz.
|-
|[https://www.gnu.org/software/bison/ Bison]
|Bison is a general-purpose parser generator that converts an annotated context-free grammar into a deterministic LR or generalized LR (GLR) parser employing <abbr>LALR</abbr>(1) parser tables.
|Bison/3.5.3
Bison/3.7.1


Bison/3.7.6
Additionally, software are installed in accordance with priorities.


Bison/3.8.2 (D)
* '''Priority 1:''' Software that can be installed using the EasyBuild application is given first priority. A list of supported EasyBuild software can be found [https://docs.easybuild.io/version-specific/supported-software/#arcashla here].
|-
* '''Priority 2:''' Applications which can't be installed through EasyBuild, but essential for multiple User Groups are prioritized next.
|[https://cairographics.org/ cairo]
* '''Priority 3:''' Application which can't be installed through EasyBuild, but essential for individual users.
|Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System (via both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file output.
|cairo/1.16.0
cairo/1.17.4
|-
|[https://www.cgal.org/ CGAL]
|CGAL is an open source software project that provides easy access to efficient and reliable geometric algorithms in the form of a C++ library.
|CGAL/4.14.3
|-
|[https://cmake.org/ CMake]
|CMake is the standard for building C++ code
|CMake/3.20.1
CMake/3.21.1


CMake/3.22.1
It's important to know that this isn't a complete list of all the software in Shabyt system.
== Environment Modules ==
In linux environment variables are values that can change and impact how programs behave on a computer system. They are name-value pairs that all processes can access within a particular user environment or shell session. These variables provide a flexible and convenient method for managing system-wide settings, configuring applications, and customizing system behavior.


CMake/3.23.1 (D)
Shabyt uses Environment modules (also know as LMOD) to dynamically set up environment variables for different software. Module commands set, change, or delete environment variables that are needed for a particular software. The ‘<code>module load</code>‘ command will set ''PATH'', ''LD_LIBRARY_PATH'' and other environment variables such that user may choose a desired version of applications or libraries more easily. More details can be found [https://lmod.readthedocs.io/en/latest/ here].
{| class="wikitable"
|+Environment module commands
!Command
!Description
|-
|-
|[https://developer.nvidia.com/cuda-toolkit CUDA]
|module avail
|CUDA (formerly Compute Unified Device Architecture) is a parallel computing platform and programming model created by NVIDIA and implemented by the graphics processing units (GPUs) that they produce. CUDA gives developers access to the virtual instruction set and memory of the parallel computational elements in CUDA GPUs.
|List of available software
|CUDA/11.4.1
CUDA/11.7.0 (D)
|-
|-
|[https://github.com/google/double-conversion double-conversion]
|module keyword [word]
|Efficient binary-decimal and decimal-binary conversion routines for IEEE doubles.
|Search for available modules matching the keyword
|double-conversion/3.2.0
|-
|-
|[https://www.doxygen.nl/ Doxygen]
|module spider [word]
|Doxygen is a widely-used documentation generator tool in software development. It automates the generation of documentation from source code comments, parsing information about classes, functions, and variables to produce output in formats like HTML and PDF.
|Show the details of any modules matching the keyword
|Doxygen/1.9.1
Doxygen/1.9.4 (D)
|-
|-
|Eigen
|module whatis [module]
|Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.
|Show the short description about module
|Eigen/3.3.9
Eigen/3.4.0 (D)
|-
|-
|[https://elpa.rzg.mpg.de ELPA]
|module load [package1] [package2]
|Eigenvalue SoLvers for Petaflop-Applications.
|Load the environment for the default version of the modulefile
|ELPA/2021.11.001
|-
|-
|[https://libexpat.github.io/ expat]
|module load [package]/[version]
|An XML parser library written in C.
|Load the environment for the specified version of module
|expat/2.2.9
|-
|-
|FFTW
|module unload [package1] [package2]
|<abbr>FFTW</abbr> is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST)
|Unload previously loaded packages
|FFTW/3.3.9
FFTW/3.3.10 (D)
|-
|-
|[https://ffmpeg.org/ FFmpeg]
|module swap [moduleA] [moduleB]
|FFmpeg is the multimedia framework, able to '''decode''', '''encode''', '''transcode''', '''mux''', '''demux''', '''stream''', '''filter''' and '''play''' audio stream and video.
|Unload modulefile A and load modulefile B
|FFmpeg/4.3.2
FFmpeg/4.4.2 (D)
|-
|-
|[https://xiph.org/flac/ FLAC]
|module list
|FLAC is an audio format similar to MP3, but lossless, meaning that audio is compressed in FLAC without any loss in quality.
|List any currently loaded module(s)
|FLAC/1.3.4
|-
|-
|[http://flex.sourceforge.net/ flex]
|module purge
|Flex (Fast Lexical Analyzer) is a tool for generating scanners. A scanner, sometimes called a tokenizer, is a program which recognizes lexical patterns in text.
|Unload all currently loaded modules
|flex/2.6.4
|}
|-
 
|[https://freetype.org/ freetype]
== Anaconda ==
|FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable, and portable while capable of producing high-quality output (glyph images).
'''Description:''' Anaconda, also known as "conda," is a tool for managing Python packages. It helps you create virtual environments for different Python and package versions. You can use Anaconda to install, remove, and update packages within your project environments. For instance you can create virtual environment for game development which requires Pygame with version of Python and you can create environment for machine learning which requires Pytorch with new version of Python.  
|freetype/2.11.0
 
freetype/2.12.1
'''Usage:''' module load Anaconda3/2022.05 
|-
 
|GCC
'''Working with Anaconda environments'''
|The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Ada, Go, and D, as well as libraries for these languages.
 
|GCC/9.3.0
Below is a list of main commands you should use in order to start working with Anaconda.
GCC/9.4.0
# To Check available environments, please type: <code>conda env list</code>
# View a list of packages in an environment
#* If the environment is not activated, please type: <code>conda list -n virtualenv</code>
#* If the environment is activated, then type: <code>conda list</code>
# Create Conda environment
#* Create an environment: <code>conda create -n virtualenv</code>
#* Create an environment with a specific Python version: <code>conda create -n virtualenv python=3.12</code>
#* Create an environment to target directory: <code>conda create -p /shared/home/{username}/.conda/envs/virtualenv</code>
# Activate an environment: <code>source activate virtualenv</code>
# Deactivate an environment:  <code>conda deactivate</code>
# Remove an environment
<code>conda remove -n virtualenv --all</code> or <code>conda env remove -n virtualenv</code>
 
'''Working with packages'''
 
Install packages into ''virtualenv'' environment
 
* If the environment is not activated, please type: <code>conda --name virtualenv install PACKAGENAME</code>
* If the environment is activated, please type: <code>conda install PACKAGENAME</code>
* If you want to install multiple packages at once: <code>conda install pkg1 pkg2 pkg3</code>
* If you need to install package with specific version: <code>conda install numpy=1.15.2</code>
 
'''External links''' 
 
[https://docs.conda.io/projects/conda/en/latest/ Documentation]
 
[https://docs.conda.io/projects/conda/en/latest/user-guide/getting-started.html User Guide]
 
[https://www.youtube.com/watch?v=23aQdrS58e0 Video]
 
[https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf Conda Cheat Sheet]
 
== CUDA ==
CUDA (Compute Unified Device Architecture) is a parallel computing platform and application programming interface model created by NVIDIA. It allows to use NVIDIA graphics processing units (GPUs) for general purpose processing.  
 
'''Usage:''' module load cuda/11.4.1
 
To check GPUs on GPU nodes: <code>nvidia-smi --list-gpus</code>
== GCC ==
The GNU Compiler Collection, commonly known as GCC, is a set of compilers and development tools available for Linux, Windows, various BSDs, and a wide assortment of other operating systems. It includes support primarily for C and C++ and includes Objective-C, Ada, Go, Fortran, and D. The Free Software Foundation (FSF) wrote GCC and released it as completely free (as in libre) software.
 
GCC is a toolchain that compiles code, links it with any library dependencies, converts that code to assembly, and then prepares executable files. It follows the standard UNIX design philosophy of using simple tools that perform individual tasks well. The GCC development suite utilizes these discrete tools to compile software.
 
When you run GCC on a source code file, it first uses a preprocessor to include header files and discard comments. Next, it tokenizes the code, expands macros, detects any compile-time issues, then prepares it for compilation. It is then sent to the compiler, which creates syntax trees of the program’s objects and control flow and uses those to generate assembly code. The assembler then converts this code into the binary executable format of the system. Finally, the linker includes references to any external libraries as needed. The finished product is then executable on the target system.
 
'''GCC examples'''


GCC/10.3.0
Compiling a program with GCC can be a straightforward matter


GCC/11.2.0
<code>gcc hello.c -o hello</code>


GCC/11.3.0
Running this command processes the hello.c file and generates a binary called “hello”.  


GCC/12.2.0 (D)
Additional parameters can be passed.
|-
|[https://gdal.org/ GDAL]
|GDAL is a translator library for raster and vector geospatial data formats that is released under an MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing.
|GDAL/3.5.0-foss-2022a
|-
|[https://libgeos.org/ GEOS]
|GEOS is a C/C++ library for computational geometry with a focus on algorithms used in geographic information systems (GIS) software.
|GEOS/3.10.3
|-
|GLPK
|The GLPK (GNU Linear Programming Kit) package is intended for solving large-scale linear programming (LP), mixed integer programming (MIP) problems.
|GLPK/5.0
|-
|[https://gmplib.org/ GMP]
|GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers.
|GMP/6.2.1
|-
|[https://gi.readthedocs.io/en/latest/ GObject-Introspection]
|GObject introspection is a middleware layer between C libraries (using GObject) and language bindings. The C library can be scanned at compile time and generate metadata files, in addition to the actual native C library.
|GObject-Introspection/1.68.0
GObject-Introspection/1.72.0 (D)
|-
|[https://www.gnu.org/software/gsl/ GSL]
|The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License.
|GSL/2.7
|-
|[https://www.gtk.org/ GTK2]
|The GTK+ 2 package contains libraries used for creating graphical user interfaces for applications.
|GTK2/2.24.33
|-
|[https://www.ghostscript.com/ Ghostscript]
|Ghostscript is a versatile processor for PostScript data with the ability to render PostScript to different targets.
|Ghostscript/9.56.1
|-
|giflib
|
|
|-
|[https://git-scm.com/ git]
|Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
|git/2.32.0
git/2.33.1
|-
|Glib
|
|
|-
|GLPK
|
|
|-
|[https://github.com/harfbuzz/harfbuzz HarfBuzz]
|An OpenType text shaping engine
|HarfBuzz/2.8.2
HarfBuzz/4.2.1 (D)
|-
|[https://computing.llnl.gov/projects/hypre-scalable-linear-solvers-multigrid-methods Hypre]
| Hypre is a library for solving large, sparse linear systems of equations on massively parallel computers.
|Hypre/2.21.0-foss-2021a
|-
|[https://icu.unicode.org/ ICU]
|ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms and between C/C++ and Java software.
|ICU/69.1
ICU/71.1 (D)
|-
|[https://imagemagick.org/index.php ImageMagick]
|ImageMagick® is a free, open-source software suite, used for editing and manipulating digital images.
|ImageMagick/7.1.0-37
|-
|[https://www.ece.uvic.ca/~frodo/jasper/ Jasper]
|The JasPer Project is an open-source initiative to provide a free software-based reference implementation of the codec specified in the JPEG-2000 Part-1 standard
|JasPer/2.0.33
|-
|[https://openjdk.org/ Java]
|Java Platform, Standard Edition (Java SE) lets you develop and deploy Java applications on desktops and servers.
|Java/11.0.16
|-
|[https://kahip.github.io/ KaHIP]
|The graph partitioning framework KaHIP -- Karlsruhe High Quality Partitioning.
|KaHIP/3.14
|-
|LAMMPS
|LAMMPS is a classical molecular dynamics code with a focus on materials modeling. It's an acronym for Large-scale Atomic/Molecular Massively Parallel Simulator.
|LAMMPS/23Jun2022
|-
|[https://llvm.org/ LLVM]
|The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
|LLVM/12.0.1
LLVM/14.0.3 (D)
|-
|LibTIFF
|LibTIFF – Tag Image File Format(TIFF) Library and Utilities
|LibTIFF/4.3.0
|-
|[https://www.littlecms.com/ LittleCMS]
|OPEN SOURCE small-footprint color management engine
|LittleCMS/2.13.1
|-
|[https://www.lua.org/ Lua]
|Lua is a powerful, fast, lightweight, embeddable scripting language. Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.
|Lua/5.4.4
|-
|[https://www.gnu.org/software/m4/m4.html M4]
|GNU M4 is an implementation of the traditional Unix macro processor. It is mostly SVR4 compatible although it has some extensions (for example, handling more than 9 positional parameters to macros). GNU M4 also has built-in functions for including files, running shell commands, doing arithmetic, etc.
|M4/1.4.18
M4/1.4.19 (D)
|}


== Anaconda ==
<code>gcc hello.c -O3 -o hello</code>
'''Description:''' "Anaconda" (shortly "conda"), a Python package management, permits the creation of "environments," which are sets of modifiable packages. It accomplishes this by placing them in your residence. This page will take you through conda loading, environment creation, and modification so you may install and utilize any Python packages you require.


'''Usage:''' Anaconda could be loaded by: module load Anaconda3/2022.05
In this example, the optimization parameter is set to 3, leading to more optimized code generation.


'''Creating the Conda Environment:''' Every user can create their own environments, and packages that are shared with the system-wide environments will not be reinstalled or copied to your file store; instead, they will be symlinked. This reduces the amount of space required in your /home directory to install numerous Python environments. To build a pristine environment with only Python 3.9 and numpy, execute: <code>conda create -n mynumpy1 python=3.9 numpy</code> To alter an existing environment, such as one of the anaconda installations, you can clone it: <code>conda create --clone mynumpy2 -n mynumpy3</code>
More complex compilations are managed by ''Makefiles'' and are invoked with the “make” command.


'''Package Installation Within a Conda Environment:''' After creating your own environment, you can install more packages or other versions of existing programs. There are two ways to accomplish this: conda and pip. If a package is accessible through conda, it is strongly advised that you use it to install packages. Using conda, you can search for packages: <code>conda search pandas</code> then download the package by following these steps: <code>conda install pandas</code> When attempting to install packages outside of your environment, you will receive a permission denied message. If this occurs, create or activate an environment you own. If a package is not available via conda, you can search for and install it using pip: <code>pip search colormath pip install colormath</code>
'''External link'''


'''Usage of conda Environments:''' Once the conda module has been loaded, the required conda environments must be loaded or created. See the conda manual for documentation on conda environments. You can load a conda environment with the following: <code>source activate mycondaenv</code> where mycondaenv is the environment's name; unload one with: <code>source deactivate</code> which returns you back to the base environment. You can list all the accessible environments by using: <code>conda env list</code> A set of anaconda environments is provided system-wide; these are installed with the anaconda version number in the environment name and are never updated. Therefore, they will provide a fixed base for alternative environments or for direct use.
[https://gcc.gnu.org/ Official Page ]


'''Using Conda in conjunction with the SLURM scheduler:''' Using the Anaconda batch mode To submit jobs to the Slurm job scheduler, you must run your primary application in batch mode from within your Conda environment. There are several stages to take: Create a script for application Create a Slurm script job to execute the application script sbatch is used to submit the job script to the task scheduler. Your application script should provide the necessary sequence of commands for your analysis. A Slurm job script is a Bash shell script of a particular type that the Slurm job scheduler recognizes as a job. Create a batch job submission script like the following and name it myscript.slurm: <code><clippy show="true"></code>
== Apptainer ==
Singularity is an open-source application for creating and running software containers, designed primarily for high-performance computing on shared Linux-based computing clusters like CARC systems.
Singularity containers provide a '''custom user space''' and enable portable, reproducible, stable, and secure software environments on Linux systems. A Singularity container bundles a primary application and all of its dependencies into a single image file, which can also include data, scripts, and other files if desired. In addition, Singularity containers have direct access to the Linux kernel on the host system (e.g., Discovery or Endeavour compute nodes), so there is no substantial performance penalty when using a container compared to using natively installed software on the host system.


# !/bin/bash
With Singularity, you can:
# SBATCH --partition=NVIDIA
# SBATCH --nodes=1
# SBATCH --ntasks=1
# SBATCH --cpu-per-task=8
# SBATCH --mem=16GB
# SBATCH --time=1:00:00


<code>module purge eval $(conda shell.bash hook) conda activate myenvironment python script.py</code> </clippy> The following describes each line: Command or Slurm option Description
* Install anything you want (based on any Linux operating system)
* Ease installation issues by using pre-built container images
* Ensure the same software stack is used among a research group
* Use the same software stack across Linux systems (e.g., any HPC center or cloud computing service)


# !/bin/bash
== Ansys ==
'''Description:''' The ANSYS suite of tools can be used to numerically simulate a wide range of structural and fluid dynamics issues encountered in several engineering, physics, medical, aerospace, and automotive sector applications.


Use BASH to execute the script
'''Usage:''' Loading the ANSYS module module load ansys/2022r1 Launching the workbench is accomplished by: runwb2 The workbench provides access to Fluent, CFX, ICEM, Mechanical APDL/model, and many other languages and models. The appropriate GUIs can be launched outside of the workbench using fluent, cfx5pre, icemcfd, and launcher.


# SBATCH
== GROMACS ==
'''Description:''' GROningen MAchine for Chemical Simulations (GROMACS) is a free, open-source, molecular dynamics package. GROMACS can simulate the Newtonian equations of motion for systems with hundreds to millions of particles. GROMACS is primarily designed for biochemical molecules like proteins, lipids and nucleic acids that have a lot of complicated bonded interactions, but since GROMACS is extremely fast at calculating the nonbonded interactions (that usually dominate simulations), many groups are also using it for research on non-biological systems, e.g. polymers.


Syntax that allows SLURM to read your requests (ignored by BASH) --partition=NVIDIA Submit job to the NVIDIA partition --nodes=1 Use only one compute node --ntasks=1 Run only one task --cpus-per-task=8 Reserve 8 CPUs for the user --mem=16GB Reserve 16GB of RAM --module purge Purge or clear environment modules --time=1:00:00 Reserve resources for an hour eval $(conda shell.bash hook) Initialize the shell to use Conda conda activate myenvironment Activate your Conda environment, i.e., myenvironment python script.py Use python to run script.py Be sure to alter the requested resources based on your needs, but keep in mind that requesting fewer resources will reduce the waiting time for your work. To fully exploit the resources, particularly the amount of cores, it may be necessary to modify your application script. You can build application scripts and job scripts on your local machine and then move them to the cluster, or you can develop them directly on the cluster using one of the various text editor modules (e.g., nano, micro, vim). Submit the job to the job scheduler using the Slurm's sbatch command: <code>sbatch myscript.slurm</code> To determine the status of your position, enter: <code>myqueue</code> If there is no job status listed, then the job has been finished. The job's findings will be logged and, by default, stored in a plain-text file of the following format: <code>slurm-<jobid>.outin</code> in the identical directory from which the job script was submitted. To access this file's contents, enter: <code>less slurm-<jobid>.out</code> then press q to close the viewer.
'''Usage:''' To load GROMACS software: module load GROMACS/2021.5-foss-2021b-CUDA-11.4.1 The GROMACS executable is either gmx or gmx mpi if an OpenMPI module is used. When you type gmx help commands, a list of gmx commands and their functions will be displayed.

Latest revision as of 04:37, 3 July 2024

This page gives an overview of the software available in NU HPC facilities and explains how to use it.

Software Installation

Software installation on the Shabyt system follows specific criteria to ensure compatibility and effective utilization of resources. Users can request the installation of new software if it meets the following conditions:

  • Availability and Licensing: The software must be freely available or covered by a site license held by NU.
  • Compatibility: It should be compatible with the existing operating system environment on Shabyt to ensure seamless integration and functionality.
  • Resource Utilization: The software should be able to effectively utilize the resources available on Shabyt, optimizing performance and efficiency.

For guidance or support regarding the installation of new software packages, users should contact the Shabyt system administrators at hpcadmin@nu.edu.kz.

Additionally, software are installed in accordance with priorities.

  • Priority 1: Software that can be installed using the EasyBuild application is given first priority. A list of supported EasyBuild software can be found here.
  • Priority 2: Applications which can't be installed through EasyBuild, but essential for multiple User Groups are prioritized next.
  • Priority 3: Application which can't be installed through EasyBuild, but essential for individual users.

It's important to know that this isn't a complete list of all the software in Shabyt system.

Environment Modules

In linux environment variables are values that can change and impact how programs behave on a computer system. They are name-value pairs that all processes can access within a particular user environment or shell session. These variables provide a flexible and convenient method for managing system-wide settings, configuring applications, and customizing system behavior.

Shabyt uses Environment modules (also know as LMOD) to dynamically set up environment variables for different software. Module commands set, change, or delete environment variables that are needed for a particular software. The ‘module load‘ command will set PATH, LD_LIBRARY_PATH and other environment variables such that user may choose a desired version of applications or libraries more easily. More details can be found here.

Environment module commands
Command Description
module avail List of available software
module keyword [word] Search for available modules matching the keyword
module spider [word] Show the details of any modules matching the keyword
module whatis [module] Show the short description about module
module load [package1] [package2] Load the environment for the default version of the modulefile
module load [package]/[version] Load the environment for the specified version of module
module unload [package1] [package2] Unload previously loaded packages
module swap [moduleA] [moduleB] Unload modulefile A and load modulefile B
module list List any currently loaded module(s)
module purge Unload all currently loaded modules

Anaconda

Description: Anaconda, also known as "conda," is a tool for managing Python packages. It helps you create virtual environments for different Python and package versions. You can use Anaconda to install, remove, and update packages within your project environments. For instance you can create virtual environment for game development which requires Pygame with version of Python and you can create environment for machine learning which requires Pytorch with new version of Python.

Usage: module load Anaconda3/2022.05

Working with Anaconda environments

Below is a list of main commands you should use in order to start working with Anaconda.

  1. To Check available environments, please type: conda env list
  2. View a list of packages in an environment
    • If the environment is not activated, please type: conda list -n virtualenv
    • If the environment is activated, then type: conda list
  3. Create Conda environment
    • Create an environment: conda create -n virtualenv
    • Create an environment with a specific Python version: conda create -n virtualenv python=3.12
    • Create an environment to target directory: conda create -p /shared/home/{username}/.conda/envs/virtualenv
  4. Activate an environment: source activate virtualenv
  5. Deactivate an environment: conda deactivate
  6. Remove an environment

conda remove -n virtualenv --all or conda env remove -n virtualenv

Working with packages

Install packages into virtualenv environment

  • If the environment is not activated, please type: conda --name virtualenv install PACKAGENAME
  • If the environment is activated, please type: conda install PACKAGENAME
  • If you want to install multiple packages at once: conda install pkg1 pkg2 pkg3
  • If you need to install package with specific version: conda install numpy=1.15.2

External links

Documentation

User Guide

Video

Conda Cheat Sheet

CUDA

CUDA (Compute Unified Device Architecture) is a parallel computing platform and application programming interface model created by NVIDIA. It allows to use NVIDIA graphics processing units (GPUs) for general purpose processing.

Usage: module load cuda/11.4.1

To check GPUs on GPU nodes: nvidia-smi --list-gpus

GCC

The GNU Compiler Collection, commonly known as GCC, is a set of compilers and development tools available for Linux, Windows, various BSDs, and a wide assortment of other operating systems. It includes support primarily for C and C++ and includes Objective-C, Ada, Go, Fortran, and D. The Free Software Foundation (FSF) wrote GCC and released it as completely free (as in libre) software.

GCC is a toolchain that compiles code, links it with any library dependencies, converts that code to assembly, and then prepares executable files. It follows the standard UNIX design philosophy of using simple tools that perform individual tasks well. The GCC development suite utilizes these discrete tools to compile software.

When you run GCC on a source code file, it first uses a preprocessor to include header files and discard comments. Next, it tokenizes the code, expands macros, detects any compile-time issues, then prepares it for compilation. It is then sent to the compiler, which creates syntax trees of the program’s objects and control flow and uses those to generate assembly code. The assembler then converts this code into the binary executable format of the system. Finally, the linker includes references to any external libraries as needed. The finished product is then executable on the target system.

GCC examples

Compiling a program with GCC can be a straightforward matter

gcc hello.c -o hello

Running this command processes the hello.c file and generates a binary called “hello”.

Additional parameters can be passed.

gcc hello.c -O3 -o hello

In this example, the optimization parameter is set to 3, leading to more optimized code generation.

More complex compilations are managed by Makefiles and are invoked with the “make” command.

External link

Official Page

Apptainer

Singularity is an open-source application for creating and running software containers, designed primarily for high-performance computing on shared Linux-based computing clusters like CARC systems. Singularity containers provide a custom user space and enable portable, reproducible, stable, and secure software environments on Linux systems. A Singularity container bundles a primary application and all of its dependencies into a single image file, which can also include data, scripts, and other files if desired. In addition, Singularity containers have direct access to the Linux kernel on the host system (e.g., Discovery or Endeavour compute nodes), so there is no substantial performance penalty when using a container compared to using natively installed software on the host system.

With Singularity, you can:

  • Install anything you want (based on any Linux operating system)
  • Ease installation issues by using pre-built container images
  • Ensure the same software stack is used among a research group
  • Use the same software stack across Linux systems (e.g., any HPC center or cloud computing service)

Ansys

Description: The ANSYS suite of tools can be used to numerically simulate a wide range of structural and fluid dynamics issues encountered in several engineering, physics, medical, aerospace, and automotive sector applications.

Usage: Loading the ANSYS module module load ansys/2022r1 Launching the workbench is accomplished by: runwb2 The workbench provides access to Fluent, CFX, ICEM, Mechanical APDL/model, and many other languages and models. The appropriate GUIs can be launched outside of the workbench using fluent, cfx5pre, icemcfd, and launcher.

GROMACS

Description: GROningen MAchine for Chemical Simulations (GROMACS) is a free, open-source, molecular dynamics package. GROMACS can simulate the Newtonian equations of motion for systems with hundreds to millions of particles. GROMACS is primarily designed for biochemical molecules like proteins, lipids and nucleic acids that have a lot of complicated bonded interactions, but since GROMACS is extremely fast at calculating the nonbonded interactions (that usually dominate simulations), many groups are also using it for research on non-biological systems, e.g. polymers.

Usage: To load GROMACS software: module load GROMACS/2021.5-foss-2021b-CUDA-11.4.1 The GROMACS executable is either gmx or gmx mpi if an OpenMPI module is used. When you type gmx help commands, a list of gmx commands and their functions will be displayed.