1
Fork 0
mirror of https://github.com/Steffo99/unimore-hpc-assignments.git synced 2024-11-29 19:44:20 +00:00
hpc-2022-g3/OpenMP/README.md

85 lines
3.1 KiB
Markdown

# PolyBench/GPU-OpenMP 1.0
> Copyright (c) 2013 the University of Delaware.
> Contact: William Killian <killian@udel.edu>
> Copyright (c) 2011-2012 the Ohio State University.
> Contact: Louis-Noel Pouchet <pouchet@cse.ohio-state.edu>
## Available Benchmarks
### `datamining`
* `datamining/correlation`
* `datamining/covariance`
### `linear-algebra/kernels`
* `linear-algebra/kernels/2mm`
* `linear-algebra/kernels/3mm`
* `linear-algebra/kernels/atax`
* `linear-algebra/kernels/bicg`
* `linear-algebra/kernels/cholesky`
* `linear-algebra/kernels/doitgen`
* `linear-algebra/kernels/gemm`
* `linear-algebra/kernels/gemver`
* `linear-algebra/kernels/gesummv`
* `linear-algebra/kernels/mvt`
* `linear-algebra/kernels/symm`
* `linear-algebra/kernels/syr2k`
* `linear-algebra/kernels/syrk`
* `linear-algebra/kernels/trisolv`
* `linear-algebra/kernels/trmm`
### `linear-algebra/solvers`
* `linear-algebra/solvers/durbin`
* `linear-algebra/solvers/dynprog`
* `linear-algebra/solvers/gramschmidt`
* `linear-algebra/solvers/lu`
* `linear-algebra/solvers/ludcmp`
### `stencils`
* `stencils/adi`
* `stencils/convolution-2d`
* `stencils/convolution-3d`
* `stencils/fdtd-2d`
* `stencils/jacobi-1d-imper`
* `stencils/jacobi-2d-imper`
* `stencils/seidel-2d`
## Modifying Codes
Parameters such as the input sizes, data type, and threshold for GPU-CPU output comparison can be modified using constants
within the codes and .h files. After modifying, run `make clean` then `make` on relevant code for modifications to take effect in resulting executable.
### Parameter Configuration
#### Input Size
By default the `STANDARD_DATASET` as defined in the `.cuh/.h` file is used as the input size. The dataset choice can be adjusted from `STANDARD_DATASET` to other
options (`MINI_DATASET`, `SMALL_DATASET`, etc) in the `.cuh/.h` file, the dataset size can be adjusted by defining the input size manually in the `.cuh/.h` file, or
the input size can be changed by simply adjusting the `STANDARD_DATASET` so the program has different input dimensions.
#### `DATA_TYPE` (in `.cuh/.h` files):
By default, the `DATA_TYPE` used in these codes are `float` that can be changed to `double` by changing the `DATA_TYPE` typedef. Note that in OpenCL, the `DATA_TYPE` needs to be changed in both the .h and .cl files, as the .cl files contain the kernel code and is compiled separately at run-time.
#### Other available options
These are passed as macro definitions during compilation time
(e.g `-Dname_of_the_option`) or can be added with a `#define` to the code.
- `POLYBENCH_STACK_ARRAYS` (only applies to allocation on host):
use stack allocation instead of malloc [default: off]
- `POLYBENCH_DUMP_ARRAYS`: dump all live-out arrays on stderr [default: off]
- `POLYBENCH_CYCLE_ACCURATE_TIMER`: Use Time Stamp Counter to monitor
the execution time of the kernel [default: off]
- `MINI_DATASET`, `SMALL_DATASET`, `STANDARD_DATASET`, `LARGE_DATASET`,
`EXTRALARGE_DATASET`: set the dataset size to be used
[default: `STANDARD_DATASET`]
- `POLYBENCH_USE_C99_PROTO`: Use standard C99 prototype for the functions.
- `POLYBENCH_USE_SCALAR_LB`: Use scalar loop bounds instead of parametric ones.