OPUS-MT-train/Makefile.slurm
2020-01-10 16:45:42 +02:00

100 lines
2.9 KiB
Makefile

# -*-makefile-*-
# enable e-mail notification by setting EMAIL
WHOAMI = $(shell whoami)
ifeq ("$(WHOAMI)","tiedeman")
EMAIL = jorg.tiedemann@helsinki.fi
endif
##---------------------------------------------
## submit jobs
##---------------------------------------------
## submit job to gpu queue
%.submit:
mkdir -p ${WORKDIR}
echo '#!/bin/bash -l' > $@
echo '#SBATCH -J "${DATASET}-${@:.submit=}"' >>$@
echo '#SBATCH -o ${DATASET}-${@:.submit=}.out.%j' >> $@
echo '#SBATCH -e ${DATASET}-${@:.submit=}.err.%j' >> $@
echo '#SBATCH --mem=${HPC_MEM}' >> $@
# echo '#SBATCH --exclude=r18g05' >> $@
ifdef EMAIL
echo '#SBATCH --mail-type=END' >> $@
echo '#SBATCH --mail-user=${EMAIL}' >> $@
endif
echo '#SBATCH -n 1' >> $@
echo '#SBATCH -N 1' >> $@
echo '#SBATCH -p gpu' >> $@
ifeq (${shell hostname --domain},bullx)
echo '#SBATCH --account=${CSCPROJECT}' >> $@
echo '#SBATCH --gres=gpu:${GPU}:${NR_GPUS},nvme:${HPC_DISK}' >> $@
else
echo '#SBATCH --gres=gpu:${GPU}:${NR_GPUS}' >> $@
endif
echo '#SBATCH -t ${HPC_TIME}:00' >> $@
echo 'module use -a /proj/nlpl/modules' >> $@
for m in ${GPU_MODULES}; do \
echo "module load $$m" >> $@; \
done
echo 'module list' >> $@
echo 'cd $${SLURM_SUBMIT_DIR:-.}' >> $@
echo 'pwd' >> $@
echo 'echo "Starting at `date`"' >> $@
echo 'srun ${MAKE} ${MAKEARGS} ${@:.submit=}' >> $@
echo 'echo "Finishing at `date`"' >> $@
sbatch $@
mkdir -p ${WORKDIR}
mv $@ ${WORKDIR}/$@
# echo 'srun ${MAKE} NR=${NR} MODELTYPE=${MODELTYPE} DATASET=${DATASET} SRC=${SRC} TRG=${TRG} PRE_SRC=${PRE_SRC} PRE_TRG=${PRE_TRG} ${MAKEARGS} ${@:.submit=}' >> $@
## submit job to cpu queue
%.submitcpu:
mkdir -p ${WORKDIR}
echo '#!/bin/bash -l' > $@
echo '#SBATCH -J "${@:.submitcpu=}"' >>$@
echo '#SBATCH -o ${@:.submitcpu=}.out.%j' >> $@
echo '#SBATCH -e ${@:.submitcpu=}.err.%j' >> $@
echo '#SBATCH --mem=${HPC_MEM}' >> $@
ifdef EMAIL
echo '#SBATCH --mail-type=END' >> $@
echo '#SBATCH --mail-user=${EMAIL}' >> $@
endif
ifeq (${shell hostname --domain},bullx)
echo '#SBATCH --account=${CSCPROJECT}' >> $@
echo '#SBATCH --gres=nvme:${HPC_DISK}' >> $@
# echo '#SBATCH --exclude=r05c49' >> $@
# echo '#SBATCH --exclude=r07c51' >> $@
# echo '#SBATCH --exclude=r06c50' >> $@
endif
echo '#SBATCH -n ${HPC_CORES}' >> $@
echo '#SBATCH -N ${HPC_NODES}' >> $@
echo '#SBATCH -p ${HPC_QUEUE}' >> $@
echo '#SBATCH -t ${HPC_TIME}:00' >> $@
echo '${HPC_EXTRA}' >> $@
echo 'module use -a /proj/nlpl/modules' >> $@
for m in ${CPU_MODULES}; do \
echo "module load $$m" >> $@; \
done
echo 'module list' >> $@
echo 'cd $${SLURM_SUBMIT_DIR:-.}' >> $@
echo 'pwd' >> $@
echo 'echo "Starting at `date`"' >> $@
echo '${MAKE} -j ${HPC_CORES} ${MAKEARGS} ${@:.submitcpu=}' >> $@
echo 'echo "Finishing at `date`"' >> $@
sbatch $@
mkdir -p ${WORKDIR}
mv $@ ${WORKDIR}/$@
# echo '${MAKE} -j ${HPC_CORES} DATASET=${DATASET} SRC=${SRC} TRG=${TRG} PRE_SRC=${PRE_SRC} PRE_TRG=${PRE_TRG} ${MAKEARGS} ${@:.submitcpu=}' >> $@