Commit 03de0722 authored by lmeinen's avatar lmeinen
Browse files

Rewrote README

parent fc85c0fd
# DPHPC_Project
# Performance and productivity evaluation of Kokkos
To compile Kokkos and run programs on euler:
1. Clone https://github.com/kokkos/kokkos.git to Home/Kokkos (if cloned to a different location, change the location in Makefile)
1. Change gcc version to one that recognizes -std=c++14 flag and load OpenMPI:
```
module load new gcc/6.3.0
module load open_mpi
```
1. Navigate to desired kernel and run Makefile.
1. To run the executable on multiple processors and display result in terminal:
```
bsub -I ./2mm_kokkos.host -n number_of_procs
The report 'Performance and productivity evaluation of Kokkos' was written as part of a final project of the lecture 'Design of Parallel and High-Performance Computing' at ETH Zurich. The reported results were produced with the implementations included in this repository.
## Project structure
The `deriche` and `lu` directories contain the actual code implementations. The Python scripts with which the shown figures were generated can be found in the `statistics` directory. `measurements` and `figures` contain the actual measurements and their corresponding generated figures, respectively. Finally, the `euler.sh` script can be used for convenience to build and run the implementations on ETH's Euler cluster. However, note that one needs to be an ETH member in order to use the cluster and be inside the ETH network, e.g. via VPN.
## Building and running
All codes were compiled using GCC version 6.3.0 using the -O3 optimization flag. We used Open MPI 3.0.0 and Kokkos 3.3.1. The CUDA version used was 11.2.
In order to build and run the experiments, clone the correct Kokkos version:
```bash
git clone https://github.com/kokkos/kokkos.git
git -C ./kokkos/ checkout 4d23839
```
To run the executable on multiple processors and capture result in a file:
Ensure the other used libraries mentioned above are set to the correct version, too. Then, `cd` to the desired implementation directory, that is, either `lu` or `deriche`. Set the correct config parameters in `compile_run_config.json` resp. `compile_run_config_gpu.json` (see the other predefined configs for examples on how to set the parameters correctly).
We can then build and run the non-GPU experiments by executing:
```bash
python3 compile_run.py clean .
python3 compile_run.py build . $KOKKOS_DIR
python3 compile_run.py run .
```
bsub -I ./2mm_kokkos.host 2> outputfile -n number_of_procs
Note that `$KOKKOS_DIR` is set to the relative path to the cloned Kokkos repository.
Similarly, the GPU-related experiments can be built and run by executing:
```bash
python3 compile_run_gpu.py clean .
python3 compile_run_gpu.py build . $KOKKOS_DIR
python3 compile_run_gpu.py run .
```
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment