- WDPM simulates how runoff water is distributed across the Canadian Prairies
- WDPM has been generalized to take advantage of multiple GPUs
- A speedup of 2.39 has been observed using 4 GPUs with a real dataset
- By using leading computing paradigms, WDPM can perform difficult simulations
/ - Contains files describing the program:
- README.md - this file
/Code - Contains program source code files:
- wdpm_mulGPU.c - WDPM base code. Can be executed from the command line.
- wdpm_mulgpu_balanced.c - WDPM with additional workload balancing optimizations.
- runoff.cl - OpenCL kernel that does the water smoothing
/Data - Experimental data in the paper:
- The file names describe the experiment: the experiment group, module (add, substract, or drain), devices (GPU or CPU, and the number of devices), and systems (the input files)
The WDPM requires OpenCL drivers in order to work properly. To download and install OpenCL for different platform, please check the following list:
The gcc compiler, version 11.4.0 or later, is recommended. Use the following command to compile the program:
gcc wdpm_mulGPU.c -o WDPM -lOpenCL
The add, subtract, and drain modules take the following input arguments:
Argument | Type | Notes |
---|---|---|
DEM file name | string | |
Water file name | string | Optional - use NULL to omit |
Output file name | string | |
Scratch file name | string | Optional - use NULL to omit |
Depth of water to add (mm) | real | |
Water runoff fraction | real | |
Elevation tolerance (mm) | real | |
Parallel control | integer | Specify 0 for serial CPU and 1 for OpenCL |
OpenCL options | integer | Specify 0 for OpenCL GPU and 1 for OpenCL CPU |
Zero depth threshold (mm) | real | |
Maximum number of iterations | integer | Optional - use 0 to omit |
Argument | Type | Notes |
---|---|---|
DEM file name | string | |
Water file name | string | |
Output file name | string | |
Scratch file name | string | Optional - use NULL to omit |
Depth of water to remove (mm) | real | |
Elevation tolerance (mm) | real | |
Parallel control | integer | Specify 0 for serial CPU and 1 for OpenCL |
OpenCL options | integer | Specify 0 for OpenCL GPU and 1 for OpenCL CPU |
Zero depth threshold (mm) | real | |
Maximum number of iterations | integer | Optional - use 0 to omit |
Argument | Type | Notes |
---|---|---|
DEM file name | string | |
Water file name | string | Optional - use NULL to omit |
Output file name | string | |
Scratch file name | string | Optional - use NULL to omit |
Elevation tolerance (mm) | real | |
Drain tolerance (mm) | real | |
Parallel control | integer | Specify 0 for serial CPU and 1 for OpenCL |
OpenCL options | integer | Specify 0 for OpenCL GPU and 1 for OpenCL CPU |
Zero depth threshold (mm) | real | |
Maximum number of iterations | integer | Optional - use 0 to omit |
./WDPM add basin5.asc NULL water.asc NULL 10.0 1.0 1.0 1 0 0.005 0