Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This guide describes how to use custom codes with IMAS Docker image.

Steps

...

Requirements

  • Install Docker on your local computer

...

  • : follow the official documentation

  • Or uDocker on an HPC machine:

    Code Block
    mkdir -p $HOME/.local/opt
    wget https://github.com/indigo-dc/udocker/releases/download/devel3_1.2.4/udocker-1.2.4.tar.gz
    tar xf udocker-1.2.4.tar.gz -C $HOME/.local/opt
    export PATH=$PATH:$HOME/.local/opt/udocker
    
    # to make the change permanent on current machine
    echo 'export PATH=$PATH:$HOME/.local/opt/udocker' >> ~/.bashrc


Steps

  1. Get the IMAS Docker image:

    Code Block
    docker login rhus-71.man.poznan.pl
    docker pull rhus-71.man.poznan.pl/imas/ual

    Or for uDocker on HPC:

    Code Block
    udocker login --registry=https://rhus-71.man.poznan.pl
    udocker pull rhus-71.man.poznan.pl/imas/ual
    scp login.eufus.eu:~g2tomz/public/imas-fc2k-latest.tar.xz ./
    # or alternatively
    scp hpc-login02.iter.org:~zokt/public/imas-fc2k-latest.tar.xz ./
    
    

    Load the image:

    Code Block
    xzcat imas-fc2k-latest.tar.xz | docker load


  2. Start an interactive session within the IMAS environment:

    Code Block
    docker run -it --rm rhus-71.man.poznan.pl/imas/ual

    Or for uDocker on HPC:

    Code Block
    udocker imas/fc2kcreate --name=imas rhus-71.man.poznan.pl/imas/ual
    udocker run imas

    Note: The session is ready to use from the start -- all necessary environment variables are set

  3. Get your custom code in the container:

    Code Block
    git clone https://github.com/tzok/imas-hello-world.git

    Note: This repository has IMAS Hello World! examples for IMAS in C++, Fortran, Java and Python. All codes create summary IDS in shot=1 and run=1 with a specific value in comment field. There is also a Python script read.py which reads that from the pulsefile and prints that out

  4. Try all variants of Hello World! examples:

    Code Block
    cd ~/imas-hello-world/cpp
    make
    ./hello
    ../python/read.py
    # Hello World from C++
    
    cd ~/imas-hello-world../fortran
    make
    ./hello
    ../python/read.py
    # Hello World from Fortran
    
    cd ~/imas-hello-world/../java
    make
    make run
    ../python/read.py
    # Hello World from Java
    
    cd ~/imas-hello-world../python
    ./hello.py
    ./read.py
    # Hello World from Python