Quickstart

TBSBIEM is written in Fortran Language. The current version of code is tested in Debian based Ubuntu operating system. Hence, we stick our documentation how to use the code in Debian based Linux operating systems like Ubuntu. Code requires following prerequisites to compile and execute it smoothly.

Prerequisites

The following dependencies are required for TBSBIEM:

  • OpenMP

  • NVIDIA HPCSDK module

  • CUDA toolkit

OpenMP Installation

For any information on OpenMP installation and usage, one can look into following website: https://www.openmp.org

However, for the sake of completeness of documentation, we provide simple steps for installation of OpenMP in Debian based Linux operating systems.

To install OpenMP, follow this step-by-step guide. OpenMP is provided through the GCC compiler, and its runtime library (libomp).

Before installing any software, update the package list to ensure all software is current:

sudo apt update
sudo apt upgrade

Install GCC, which includes basic OpenMP support. For the latest OpenMP features, also install the libomp-dev package:

sudo apt install gcc g++ gfortran
sudo apt install libomp-dev

Check if OpenMP is supported in your GCC compiler by running:

echo | cpp -fopenmp -dM | grep -i open

To control the number of threads that OpenMP will use at runtime, use the following command:

export OMP_NUM_THREADS=4

The -fopenmp flag enables OpenMP parallelization.

NVIDIA HPCSDK and CUDA Toolkit Installation

The TBSBIEM code is tested using the nvfortran compiler and GPU acceleration is acheived using OpenACC directives. To enable nvcc compiler support, install the NVIDIA HPCSDK and CUDA toolkit provides the environment for building GPU-accelerated applications.

The following webpage has installation and usage instructions for NVIDIA HPCSDK: https://docs.nvidia.com/hpc-sdk/hpc-sdk-install-guide/index.html

The following webpage has installation instructions for CUDA toolkit: https://www.cherryservers.com/blog/install-cuda-ubuntu

We have documented simple steps to the install the NVIDIA HPCSDK and CUDA toolkit in Debian based Linux operating systems.

NVIDIA HPCSDK

Install or update NVIDIA dirvers first. One can use following webpage for the reference: https://www.server-world.info/en/note?os=Ubuntu_24.04&p=nvidia&f=1

Download the latest tar file installer from the NVIDIA HPCSDK website suitable for Linux x86_64 or ARM architectures from the following webpage: https://developer.nvidia.com/hpc-sdk-downloads

Open a terminal and extract the downloaded package:

tar xpfz <tarfile>.tar.gz

Navigate into the extracted directory and start the installation:

cd <tarfile>
sudo ./install

Choose installation location (default is /opt/nvidia/hpc_sdk) and type of installation (single system or network):

export NVHPC_SILENT=true
export NVHPC_INSTALL_DIR=/opt/nvidia/hpc_sdk
export NVHPC_INSTALL_TYPE=single
sudo ./install

After installation, set up environment variables in your shell configuration file (e.g., ~/.bashrc):

export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/<version>/compilers/bin:$PATH
export MANPATH=/opt/nvidia/hpc_sdk/Linux_x86_64/<version>/compilers/man:$MANPATH

Replace <version> with the installed version directory

CUDA toolkit

Here are the steps to install the CUDA toolkit.

Update the system and install essential packages:

sudo apt update
sudo apt install build-essential dkms

Download an appropriate OS and local or network version of CUDA Toolkit installer from following website. https://developer.nvidia.com/cuda-downloads.

One can use the apt method. For Ubuntu 22.04, as follows:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt-get update
sudo apt-get -y install cuda

Add CUDA to your environment variables in .bashrc:

export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

Reload environment and test:

source ~/.bashrc
nvcc -V

This should display the installed CUDA version.

Code Repository

To download the code, one can clone from the git repository using the command:

git clone https://github.com/ranjkunn/TBSBIEM.git

Code Structure

Once the repository is downloaded, get into the directory TBSBIEM, you will find the following directories:

./data
./Input_files
./src
./src_Kernels
./Documentation
./TPV3_Kernels
./TPV5_Kernels
./TPV6_Kernels
./TPV7_Kernels
`Test_Problem.in`

‘./data’ stores the output data of the solution.

‘./Input_files’ will have all the input files created.

‘./src’ will have the main source files of the code.

‘./src_Kernels’ will contain source files only for generating the Kernels.

‘./TPV3_Kernels’ will have kernels pre-computed for the input file given in ‘./Input_files/TPV3.in’

‘./TPV5_Kernels’ will have kernels pre-computed for the input file given in ‘./Input_files/TPV5.in’

‘./TPV6_Kernels’ will have kernels pre-computed for the input file given in ‘./Input_files/TPV6.in’

‘./TPV7_Kernels’ will have kernels pre-computed for the input file given in ‘./Input_files/TPV7.in’

‘Test_Problem.in’ will have a target problem to be solved during the execution of the code.

Building the docs

Before building the documentation locally, you need to have Python, Sphinx, and the sphinx_rtd_theme package installed on your system. Follow the commands given below to satisfy the prerequisites:

python -m pip install --upgrade pip
pip install sphinx sphinx_rtd_theme

To build the documentation locally, follow the commands below from the TBSBIEM folder:

cd Documentation
make html

The documentation will be built in the _build/html directory.

Code Compilation and Testing

You can compile TBSBIEM with the following commands:

cd TBSBIEM
cd src
make TEST=1
cd ..
./TBSBIEM-v1.1.0-TEST

Upon running the test, the USGS/SCEC benchmark TPV3 problem will be solved. The output data is stored in the directory ‘./data’. One can use the procedure given in the section ‘Post-Processing’, to plot the results.