Yambo via Docker: Difference between revisions

From The Yambo Project
Jump to navigation Jump to search
No edit summary
No edit summary
 
(10 intermediate revisions by one other user not shown)
Line 2: Line 2:
An alternative to get the Yambo code is to install the Yambo container in your machine and this can be done in few steps:
An alternative to get the Yambo code is to install the Yambo container in your machine and this can be done in few steps:


* Install the docker platform (Linux or Mac). Follow the instruction in the docker [https://docs.docker.com/engine/install/ website].
* Install the docker platform (Linux or Mac). Follow the instruction in the docker [https://docs.docker.com/engine/install/ website].


It is possible to run Docker by a normal user without the sudo privileges. In order to do that you have to add your username to the group "docker" (suggested on Linux!).  
It is possible to run Docker by a normal user without the sudo privileges. In order to do that, you have to add your username to the group "docker" (suggested on Linux!).  


For Linux users:
For Linux users:
Line 20: Line 20:
If you you prefer to use sudo please remember to add the "sudo" command before all the commands below.
If you you prefer to use sudo please remember to add the "sudo" command before all the commands below.


* Pull the Yambo container:
* Download the script file "[https://raw.githubusercontent.com/nicspalla/yambo-containers/main/drun drun]" that will help you to hide the many options needed by the container:


  docker pull maxcentre/yambo:5.1.0_gcc9
wget https://raw.githubusercontent.com/nicspalla/yambo-containers/main/drun


* You are done. To run Yambo into the container:
then give the file execute privileges:
 
chmod +x drun


docker run -ti --user $(id -u):$(id -g) \
Move (or copy) this file in the directory where you want to use Yambo and use it as prefix of your Yambo calculation.
    --mount type=bind,source="$(pwd)",target=/tmpdir \
    -e OMP_NUM_THREADS=4  \
    maxcentre/yambo:5.1.0_gcc9 \
    yambo -F yambo.in -J yambo.out


Otherwise (suggested!), copy and paste the code below in a file, i.e called drun.sh:
* First you have to initialize the environment needed by the container:


  #!/bin/bash
  ./drun -i
threads=1
environment="--env-file env.txt"
container="maxcentre/yambo:5.1.0_gcc9"
command_prefix=""
### MAIN ###
while [[ $1 == -* ]]; do
  case $1 in
    -t | --threads ) threads=$2
                      shift 2
                      ;;
    -c | --container) container=$2
                      shift 2
                      ;;
    -np | --nprocess ) command_prefix="mpirun --use-hwthread-cpus -np $2"
                        shift 2
                        ;;
    --env-file ) environment="--env-file $2"
                  shift 2
                  ;;
    -i | --init ) docker pull ${container}
                  docker run -ti --user $(id -u):$(id -g) \
                    --mount type=bind,source="$(pwd)",target=/scratch \
                    ${container} cat /opt/spack/env.txt > env.txt
                    exit 0
                    ;;
    * ) echo "Error: \"$1\" unrecognized argument."
        exit 1
  esac
done
docker run -ti --user $(id -u):$(id -g) \
  --mount type=bind,source="$(pwd)",target=/scratch \
  -e OMP_NUM_THREADS=${threads} ${environment} \
  ${container} ${command_prefix} $@


then give the file execute privileges:
this command will pull the container (needs ~1.8GB in your filesystem) if not already done and will create a file named env.txt needed by the container to run Yambo.


chmod +x drun.sh
* Now you can run yambo like in this example:


Move (or copy) this file in the directory where you want to use Yambo and use it as prefix of your Yambo calculation.
./drun yambo -F yambo.in -J yambo.out


First you have to initialize the environment needed by the container:
These are the options of the script drun:


  ./drun.sh -i
  -i                # container initialization
-np N              # Number of MPI tasks for a parallel run (default 0, i.e. serial run)
-t N              # Number of threads per process/task (default 1)
--env-file FILE    # set the path of an environment file (default ./env.txt)
-c IMAGE:TAG      # set the name and tag of the container image (default maxcentre/yambo:5.1.0_gcc9)


this command will pull the container if not already done and will create a file named env.txt needed by the container to run Yambo.
If the yambo container is working correctly this command


Now you can run yambo like in this example:
./drun yambo -h


./drun.sh yambo -F yambo.in -J yambo.out
should provide in output the help for yambo usage.


If the yambo container is working correctly you should obtain:
* To delete the container images downloaded, you can use this command:


  ./drun.sh yambo
  docker image rm <image_name>
yambo: cannot access CORE database (SAVE/*db1 and/or SAVE/*wf)


./drun.sh yambo -h
To remove all the stopped containers, use this command:


should provide in output the help for yambo usage.
docker system prune

Latest revision as of 09:36, 23 February 2024

An alternative to get the Yambo code is to install the Yambo container in your machine and this can be done in few steps:

  • Install the docker platform (Linux or Mac). Follow the instruction in the docker website.

It is possible to run Docker by a normal user without the sudo privileges. In order to do that, you have to add your username to the group "docker" (suggested on Linux!).

For Linux users:

 sudo groupadd docker
 sudo usermod -aG docker $USER

For Mac users:

 sudo dscl . create /Groups/docker
 sudo dseditgroup -o edit -a $USER -t user docker

Log out and log back in so that your group membership is re-evaluated.

If you you prefer to use sudo please remember to add the "sudo" command before all the commands below.

  • Download the script file "drun" that will help you to hide the many options needed by the container:
wget https://raw.githubusercontent.com/nicspalla/yambo-containers/main/drun

then give the file execute privileges:

chmod +x drun

Move (or copy) this file in the directory where you want to use Yambo and use it as prefix of your Yambo calculation.

  • First you have to initialize the environment needed by the container:
./drun -i

this command will pull the container (needs ~1.8GB in your filesystem) if not already done and will create a file named env.txt needed by the container to run Yambo.

  • Now you can run yambo like in this example:
./drun yambo -F yambo.in -J yambo.out

These are the options of the script drun:

-i                 # container initialization
-np N              # Number of MPI tasks for a parallel run (default 0, i.e. serial run)
-t N               # Number of threads per process/task (default 1)
--env-file FILE    # set the path of an environment file (default ./env.txt)
-c IMAGE:TAG       # set the name and tag of the container image (default maxcentre/yambo:5.1.0_gcc9)

If the yambo container is working correctly this command

./drun yambo -h

should provide in output the help for yambo usage.

  • To delete the container images downloaded, you can use this command:
docker image rm <image_name>

To remove all the stopped containers, use this command:

docker system prune