Implementation of Metropolis-MCMC using multi-GPUs approach on OpenACC as part of the MSc HPC with Data Science Dissertation in EPCC.
- OpenBLAS To download and install:
$ git clone https://github.com/xianyi/OpenBLAS.git
$ cd OpenBLAS
$ make USE_THREAD=0 USE_OPENMP=0
$ make install PREFIX=your_installation_directory
Copy the config file in root dir:
$ cp config/linux-pgi-default.mk ./config.mk
Remember to specify the paths in the files
Load PGI compilers:
$ module load pgi
For serial and threaded versions you will need to build mpi_s:
$ cd mpi_s
$ make clean
$ make libc
For MPI Runs you will need mpt:
$ module load mpt
For GPU Runs you will need cuda:
$ module load cuda
To compile the code:
$ cd src
$ make verbose
This will display the options and select one of the options.
To run serial or threaded executable:
$ cd src
$ ./mcmc.exe input.ref
This will run the executable with the contents of input.ref. You can change the threads from there.
To run mpi executable submit in a pbs:
$ cd src
$ mpiexec_mpt -ppn N -n M ./mcmc.exe input.ref
or for hybrid
$ cd src
$ mpiexec_mpt -ppn N -n M omplace -nt K ./mcmc.exe input.ref
Remember to load the necessary modules.
To run on GPUs compile one of the gpu options and submit on the gpu node