Difference between revisions of "GPUs EMBO 2018"

From Dynamo
Jump to navigation Jump to search
 
Line 3: Line 3:
  
 
= Creation of the project =
 
= Creation of the project =
* Create a tutorial project <br />
+
* Create a tutorial project <br />
  <tt>dtutorial t -p MYPROJECT -M 100 </tt>  <br />
+
  <tt>dtutorial t -p ptest -M 100 </tt>  <br />
This project contains 100 synthetic thermosomes.
+
This project <tt>ptest</tt>contains 100 synthetic thermosomes.
  
 
* Adapt the project to be ran on a GPU environment <br />
 
* Adapt the project to be ran on a GPU environment <br />
  <tt>dvput MYPROJECT destination matlab_gpu</tt>
+
  <tt>dvput ptest destination matlab_gpu</tt>
  
 
* Passes a group of GPU identifiers.  Assuming that we just want to use 2 GPUs: <br />
 
* Passes a group of GPU identifiers.  Assuming that we just want to use 2 GPUs: <br />
Line 17: Line 17:
 
  <tt>dvunfold ptest</tt>
 
  <tt>dvunfold ptest</tt>
  
It creates a script called <tt>ptest.sh</tt> that needs to be submitted to the a GPU.
+
It creates a script called <tt>ptest.m</tt> that needs to be submitted to the GPU.  
  
 
= Submission of the project =
 
= Submission of the project =
  
 
== Submission script model ==
 
== Submission script model ==
there is a sample script located in  
+
There is a sample submission script located in
 
  <tt> /g/embo2018/cryo06/Dynamo/test/submit.scrip </tt>
 
  <tt> /g/embo2018/cryo06/Dynamo/test/submit.scrip </tt>
  

Latest revision as of 11:18, 26 August 2018

We exemplify the process of sending projects to the GPU by the creation and running of a synthetic project.

Creation of the project

  • Create a tutorial project
dtutorial t -p ptest -M 100   

This project ptestcontains 100 synthetic thermosomes.

  • Adapt the project to be ran on a GPU environment
dvput ptest destination matlab_gpu
  • Passes a group of GPU identifiers. Assuming that we just want to use 2 GPUs:
dvput ptest gpu_identifier_set  0:1 

We assign temporarily the gpu identifiers 0 and 1. The queue will assign dynamically some other couple of free identifiers during runtime.

  • Unfolds the project:
dvunfold ptest

It creates a script called ptest.m that needs to be submitted to the GPU.

Submission of the project

Submission script model

There is a sample submission script located in

 /g/embo2018/cryo06/Dynamo/test/submit.scrip 

containing:

#!/bin/bash
#SBATCH -p gpu
#SBATCH -N 1 #stay on a single node. remove for CPU jobs
#SBATCH -J jobname    # change this
#SBATCH --ntasks=1;       
#SBATCH -o run.out          # STDOUT
#SBATCH -e run.err          # STDERR
#SBATCH --gres=gpu:2   # XXXX CHANGE THIS	
#SBATCH --mail-type=END,FAIL
#SBATCH --mem=12GB		
#SBATCH --time=0-03:00:00

module load dynamo
export LD_LIBRARY_PATH=$EBROOTGCC/lib64:$LD_LIBRARY_PATH
module load CUDA/9.1.85_387.26-GCC-6.4.0-2.28
echo $CUDA_VISIBLE_DEVICES

MYPROJECT="ptest" # PUT HERE THE NAME OF YOUR PROJECT     
                                                  
echo "dvput $MYPROJECT -gpu_identifier_set $CUDA_VISIBLE_DEVICES"  >  dcommands.sh
echo "dvunfold $MYPROJECT" >> dcommands.sh
dynamo dcommands.sh
chmod u=rxw ./$MYPROJECT.m
./$MYPROJECT.m

Adapt the script to the project

You can copy the script to your local folder (where you have created the project) and edit it to match the requirements of the project. Basically, you need to change the number of GPUs, the name of the project. Rename it to something you can identify later, like ptest.script

 cp /g/embo2018/cryo06/Dynamo/test/submit.script ptest.script

To edit the new script, use

emacs ptest.script

Operate the changes in the EMACS terminal. To leave, press Ctrl+x then Ctrl+c

Submit the script

srun ptest.script