Versions Compared

Key

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

To run Alphafold on Ibex, the following guide is recommended. To start with, you need to pull a container image from KAUST RCCL registry:

Code Block
module load singularity
export TMPDIR=$HOME/tmpdir
mkdir -p $TMPDIR

singularity pull docker://krccl/alphafold:2.3.2

Batch job

Code Block
breakoutModewide
#!/bin/bash
#SBATCH -N 1
#SBATCH -J AlphaFold.version2.3.1
#SBATCH --time=10:0:0
#SBATCH --mem=100G
#SBATCH --gpus=1
#SBATCH --gpus-per-node=1
#SBATCH --cpus-per-task=40
#SBATCH --constraint=v100


module load singularity

export IMAGE=./alphafold_2.3.2.sif
export ALPHAFOLD_DATA_DIR=/ibex/reference/KSL/alphafold/2.3.1

export OUTDIR=${PWD}/output
mkdir -p $OUTDIR

# Start NVDASHBOARD for monitoring GPU usage. Please comment this section if not needed.
# get tunneling info 
export XDG_RUNTIME_DIR=/tmp node=$(hostname -s) 
user=$(whoami) 
submit_host=${SLURM_SUBMIT_HOST} 
nv_port=$(python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()')

singularity run $IMAGE nvdashboard ${nv_port} &
sleep 5 

# print tunneling instructions
echo -e "
To connect to the nvdashboard session, you need to run following  command in a new terminal 

ssh -L ${nv_port}:${node}.ibex.kaust.edu.sa:${nv_port} ${user}@glogin.ibex.kaust.edu.sa


# Launch Alphafold

srun -c $SLURM_CPUS_PER_TASK singularity run --env \
  TF_FORCE_UNIFIED_MEMORY=1,XLA_PYTHON_CLIENT_MEM_FRACTION=5.0,OPENMM_CPU_THREADS=${SLURM_CPUS_PER_TASK} \
  -B .:/etc -B $ALPHAFOLD_DATA_DIR:/data \
  --pwd /app/alphafold \
  --nv $IMAGE  \
  /app/run_alphafold.sh \
  --use_gpu_relax=True \
  --max_template_date=2020-05-14 \
  --fasta_paths=${PWD}/WT_WT.fa  \
  --data_dir=/data \
  --uniref90_database_path=/data/uniref90/uniref90.fasta \
  --uniref30_database_path=/data/uniref30/UniRef30_2021_03 \
  --output_dir=${OUTDIR} \
  --mgnify_database_path=/data/mgnify/mgy_clusters_2022_05.fa \
  --template_mmcif_dir=/data/pdb_mmcif/mmcif_files \
  --obsolete_pdbs_path=/data/pdb_mmcif/obsolete.dat \
  --bfd_database_path=/data/bfd/bfd_metaclust_clu_complete_id30_c90_final_seq.sorted_opt \
  --model_preset=multimer \
  --pdb_seqres_database_path=/data/pdb_seqres/pdb_seqres.txt \
  --uniprot_database_path=/data/uniprot

Interactive Jupyter Session

Code Block
breakoutModewide
#!/bin/bash
#SBATCH -N 1
#SBATCH -J AlphaFold.version2.3.1
#SBATCH --time=0:30:0
#SBATCH --mem=100G
#SBATCH --gpus=1
#SBATCH --gpus-per-node=1
#SBATCH --cpus-per-task=8
#SBATCH --constraint=v100



nvidia-smi --query-gpu=timestamp,utilization.gpu,utilization.memory,memory.used --format=csv -l 10 >> monitor.log &


module load singularity

export IMAGE=./alphafold_2.3.2.sif

export ALPHAFOLD_DATA_DIR=/ibex/reference/KSL/alphafold/2.3.1



# setup ssh tunneling
# get tunneling info 
export XDG_RUNTIME_DIR=/tmp node=$(hostname -s) 
user=$(whoami) 
submit_host=${SLURM_SUBMIT_HOST} 
port=$(python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()')
nv_port=$(python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()')


echo ${node} pinned to port ${port} on ${submit_host} 

singularity run $IMAGE nvdashboard ${nv_port} &

sleep 5 

# print tunneling instructions
echo -e "
${node} pinned to port ${port} on ${submit_host}
To connect to the compute node ${node} on IBEX running your jupyter notebook server, you need to run following two commands in a terminal 1.
Command to create ssh tunnel from you workstation/laptop to glogin:

ssh -L ${port}:${node}.ibex.kaust.edu.sa:${port} -L ${nv_port}:${node}.ibex.kaust.edu.sa:${nv_port} ${user}@glogin.ibex.kaust.edu.sa

Copy the link provided below by jupyter-server and replace the NODENAME with localhost before pasting it in your browser on your workstation/laptop.
" >&2

srun -c $SLURM_CPUS_PER_TASK singularity run --env \
  TF_FORCE_UNIFIED_MEMORY=1,XLA_PYTHON_CLIENT_MEM_FRACTION=5.0,OPENMM_CPU_THREADS=${SLURM_CPUS_PER_TASK} \
  PYTHONPATH=/app/alphafold \
  -B .:/etc -B $ALPHAFOLD_DATA_DIR:/data \
  --nv $IMAGE  \
  jupyter lab --no-browser --port=${port} --port-retries=0  --ip=0.0.0.0

For connecting to the Jupyter session, there are two steps:

  1. Copy paste the ssh -L ... line for the output file slurm-######.out and paste it in a new terminal window

  2. Copy paste the http://127.0.0.1:..... line from the slurm-#####.out file, including the token part, and paste it in your local web browser.