---
# System prepended metadata

title: BioBB + GMXAPI setup for puhti.csc.fi

---

# BioBB + GMXAPI setup for puhti.csc.fi

## Notes 17.12.2021

* GMXAPI tutorial: full node per participant and *threadmpi* gromacs 2022 + gmxapi 0.3.x + mpi4py --> ok!

* BioBB: this workshop use notebook as the GUI to use BioBB
   * this is for demonstration
   * for production, mpi is needed
   * book a separate meeting later with Adam!
     * mpi, slurm conf, pycomps etc. 

## Prereqs

* Add python tutorial
        * function, decorator, `with` (context manager) ...
* Adam sends improved BioBB prereg formulation

## Testing

* accounts work
* hpc-container-wrapper https://github.com/CSCfi/hpc-container-wrapper
* also possible to run a custom module via OoD, but one should make a module for it
* create a singularity container with a docker recipe? ok!
    * for "normal" cases convesion should be automatic
    * Eric: contact Henrik to test 
* QMMM GMX-CP2k will likely require a separate gromacs build
    * building the stack takes loooong
    * 

## Questions

GPUs? yes for Artem's session; no for gmxapi and biobb

puhti: 40 cores per node

## Expected environment

### Option: Container generated from Conda recipe

### Option: Container generated from Docker image

From Henrik:

#### Converting the docker container:
```
export SINGULARITY_TMPDIR=$TMPDIR
export SINGULARITY_CACHEDIR=$TMPDIR
singularity pull  <container_name>.sif docker://<namespace>/<repository>
```
Large image are converted faster when using the local disk instead of the  parallel filesystem 

#### Creating the wrappers
```
export PATH="/appl/opt/csc-tools/hpc-container-wrapper-beta/bin:$PATH"
mkdir Wrappers
wrapcont -w <abs_path_in_container>  <container_name>.sif --prefix Wrappers/
```

The abs_path is some absolute path in the container for which you want to create wrappers e.g /home/tutorial/venv/bin
multiple paths are separated with a comma.

*eric notes: this assumes the venv in the docker image has jupyter notebook installed*

#### Custom module
create ~/privatemodules/course.lua and add
```
prepend_path ("PATH","/<path_to_wrappers>/bin")
```
#### Launching using puhti.csc.fi

- Using a browser go to puhti.csc.fi
- Login using the same username+password as ssh
- Go to the Jupyter app 
- In the settings select custom for the python drop down
- Add use.own course to the custom Python module field.
- Make sure the user's home directory is selected for Working Directory 

#### Accessing course material

The course material will likely be cloned from a common repository.
Alternatively, if the course material is packaged with the Singularity container, it could be extracted from the container to the user's home directory.
For example:

    cd ~
    singularity run ~/gmxapi-tutorial.sif \
     tar cvf - -C /home/tutorial/ gmxapi-introduction \
     |tar xvf -

Then, the user can navigate to the tutorial notebook after launching the Jupyter session.

## Links

* https://ssl.eventilla.com/event/mWeRZ
* https://github.com/CSCfi/csc-user-guide
* https://github.com/CSCfi/hpc-container-wrapper
