Installation instructions for HPC machines -------------------------------------------------------------- ### Illinois campus cluster #### Setting up your conda installation Make sure your `.bashrc` is not loading another conda environment and that `PYTHONPATH` is not set. If it is, clear those things, log out, and log back in. ``` module load anaconda/3 conda create --name fast-mpi4py python=3.8 module load openmpi/3.1.1-gcc-7.2.0 export MPICC=$(which mpicc) . /usr/local/anaconda/5.2.0/python3/etc/profile.d/conda.sh conda activate fast-mpi4py pip install -v --no-binary mpi4py mpi4py pip install -v --no-binary numpy numpy pip install pyscf module load git pip install git+git://github.com/WagnerGroup/pyqmc --upgrade pip install snakemake ``` #### Submission script ``` #!/bin/bash #SBATCH --time=24:00:00 # Job run time (hh:mm:ss) #SBATCH --nodes=1 # Number of nodes #SBATCH --ntasks-per-node=40 # Number of task (cores/ppn) per node #SBATCH --job-name=a120 #SBATCH --partition=wagner #SBATCH --output=myjob.o%j # Name of batch job output file module load anaconda/3 module load openmpi/3.1.1-gcc-7.2.0 . /usr/local/anaconda/5.2.0/python3/etc/profile.d/conda.sh conda activate fast-mpi4py srun python test.py ``` #### snakemake setup I would suggest starting with the setup here: https://github.com/WagnerGroup/Energy-Entropy ``` module load anaconda/3 module load openmpi/3.1.1-gcc-7.2.0 . /usr/local/anaconda/5.2.0/python3/etc/profile.d/conda.sh conda activate fast-mpi4py pip install cookiecutter cookiecutter https://github.com/Snakemake-Profiles/slurm.git ``` The profile will be installed in `~/.config/snakemake/slurm`. I have changed my version of `slurm-submit.py` to include the partition: ``` RESOURCE_MAPPING = { "time": ("time", "runtime", "walltime"), "mem": ("mem", "mem_mb", "ram", "memory"), "mem-per-cpu": ("mem-per-cpu", "mem_per_cpu", "mem_per_thread"), "nodes": ("nodes", "nnodes"), "partition": ("partition",) } ``` Then your snakemake can look like the following, if you'd like to run on `qmc_threads` cores on one node and the secondary partition. Note the resources section in the rule. ``` rule VMC_MF: input: hf="{dir1}/{dir2}/mf.chk", wffile="{dir1}/{dir2}/vmc_mf_{tol}_{orbs}_{nconfig}.chk" output: "{dir1}/{dir2}/eval_mf_{tol}_{orbs}.chk" threads: qmc_threads resources: walltime="4:00:00", partition="secondary" run: with concurrent.futures.ProcessPoolExecutor(max_workers=qmc_threads) as client: functions.evaluate_vmc(input.hf, None, input.wffile, output[0], slater_kws=None, nblocks=1000, client=client, npartitions=qmc_threads) ``` TODO: change this to work with MPI. You can run by doing something like the following: ``` module load anaconda/3 module load openmpi/3.1.1-gcc-7.2.0 . /usr/local/anaconda/5.2.0/python3/etc/profile.d/conda.sh conda activate fast-mpi4py hostname >> run.out nohup nice snakemake --jobs=10 --profile=slurm [filenames] > vmc.out & ``` You can run this on a login node and it will execute your jobs. ### Summit Some information is available here: https://www.olcf.ornl.gov/wp-content/uploads/2019/02/STW_Feb_20190211_summit_workshop_python.pdf Set up your environment: ``` module load python/3.7.0-anaconda3-5.3.0 conda create -n pyqmc3.8 python=3.8 conda init . .bashrc conda install numpy pandas h5py module load gcc/4.8.5 CC=gcc MPICC=mpicc pip install --no-binary mpi4py install mpi4py ``` Install pyscf and pyqmc. ``` module load gcc/4.8.5 module load cmake module load openblas/0.3.9-omp git clone https://github.com/pyscf/pyscf cd build cmake .. make cd [pyscf root directory] pip install . pip install pyqmc ```