diff --git a/cryosparc_install.sh b/cryosparc_install.sh index 302541d..274fd9c 100755 --- a/cryosparc_install.sh +++ b/cryosparc_install.sh @@ -1,148 +1,157 @@ #!/bin/bash set -euo pipefail # Script made from the page # https://docs.ycrc.yale.edu/clusters-at-yale/guides/cryosparc/ license_id= install_path="$HOME"/cryosparc cryosparc_passwd=Password123 # set up some more paths db_path=${install_path}/database worker_path=${install_path}/cryosparc2_worker # Usage usage () { echo "Usage:" echo " -l license_id : License ID" echo " -p install path : prefix for installation [${install_path}] " echo " -v : be verbose" echo " -h : print this notice" echo "" } VERBOSE=false # Parse options while getopts ":l:p:vh" opt; do case $opt in l) license_id="${OPTARG}" ;; p) install_path="${OPTARG}" ;; v) VERBOSE=true ;; h) usage OPTIND=1 exit 0 ;; \?) echo "Invalid option: -$OPTARG" >&2 usage OPTIND=1 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 usage OPTIND=1 exit 1 ;; esac done # Reset OPTIND to allow the next invocation to work OPTIND=1 message() { if $VERBOSE then echo "${1}" fi } if [ "x${license_id}" == "x" ]; then echo "[Error] No license id was provided" >&2 usage exit 2 fi message "[Info] Preparing the install path and dowloading cryosparc_master and cryosparc_worker" # go get the installers mkdir -p $install_path cd $install_path # Download master curl -sL -C - -\# https://get.cryosparc.com/download/master-latest/$license_id -o cryosparc2_master.tar.gz # Download worker curl -sL -C - -\# https://get.cryosparc.com/download/worker-latest/$license_id -o cryosparc2_worker.tar.gz message "[Info] Expanding tarballs" tar -xf cryosparc2_master.tar.gz tar -xf cryosparc2_worker.tar.gz -module load gcc cuda python +module load gcc cuda/11.0.2 python message "[Info] Installing master" cd ${install_path}/cryosparc_master ./install.sh --license $license_id --hostname $(hostname) --dbpath $db_path --yes set +u source ~/.bashrc set -u message "[Info] Installing worker" cd ${install_path}/cryosparc_worker ./install.sh --license $license_id --cudapath $CUDA_HOME --yes set +u source ~/.bashrc set -u message "[Info] Creating worker configs" cryosparc_master_path=${install_path}/cryosparc_master if [ $(grep -c "export PATH" ${cryosparc_master_path}/config.sh) -eq 0 ]; then echo "export PATH=${cryosparc_master_path}/bin:\$PATH" >> ${cryosparc_master_path}/config.sh fi if [ $(grep -q "export CRYOSPARC_HOSTNAME_CHECK" ${cryosparc_master_path}/config.sh) -eq 0 ]; then echo "export CRYOSPARC_HOSTNAME_CHECK=${master_host}" >> ${cryosparc_master_path}/config.sh fi +cryosparc_worker_path=${install_path}/cryosparc_worker +if [ $(grep -c "export PATH" ${cryosparc_worker_path}/config.sh) -eq 0 ]; then + echo "export PATH=${cryosparc_worker_path}/bin:\$PATH" >> ${cryosparc_worker_path}/config.sh +fi + mkdir -p ${install_path}/site_configs && cd ${install_path}/site_configs + cat << EOF > cluster_info.json { - "name" : "farnam", - "worker_bin_path" : "${install_path}/cryosparc2_worker/bin/cryosparcw", + "name" : "${hostname}", + "worker_bin_path" : "${install_path}/cryosparc_worker/bin/cryosparcw", "cache_path" : "/tmp/{{ cryosparc_username }}/cryosparc_cache", "send_cmd_tpl" : "{{ command }}", "qsub_cmd_tpl" : "sbatch {{ script_path_abs }}", "qstat_cmd_tpl" : "squeue -j {{ cluster_job_id }}", "qdel_cmd_tpl" : "scancel {{ cluster_job_id }}", "qinfo_cmd_tpl" : "sinfo" } EOF cat << EOF > cluster_script.sh #!/bin/bash -l #SBATCH --job-name cryosparc_{{ project_uid }}_{{ job_uid }} -#SBATCH -c {{ num_cpu }} +#SBATCH -n {{ num_cpu }} #SBATCH --gres:gpu={{ num_gpu }} -#SBATCH --mem={{ (ram_gb*1024)|int }} +#SBATCH --mem={{ ram_gb|int }}GB +#SBATCH --time=48:0:0 #SBATCH -o {{ job_dir_abs }} #SBATCH -e {{ job_dir_abs }} -module load gcc cuda python +module load gcc cuda/11.0.2 python ln -sf \${TMPDIR} /tmp/${USER}/cryosparc2_cache {{ run_cmd }} EOF + +${install_path}/cryosparc_master/bin/cryosparcm cluster connect