The 'nova' Library
CUDA optimized code for solving MDPs, POMDPs, and Dec-POMDPs.
A tutorial will be added soon.
If you use this library, then please cite our AAAI 2015 Fall Symposium paper:
Wray, Kyle H. and Zilberstein, Shlomo. “A Parallel Point-Based POMDP Algorithm Leveraging GPUs.” AAAI Fall Symposium on Sequential Decision Making for Intelligent Agents (SDMIA), Arlington, Virginia, USA, November 2015.
First, install gcc and the CUDA toolkit which contains nvcc. To build the library, navigate to the root and run:
make clean -i ; make
The nova library contains a few kinds of tests. Unit tests for C/C++/CUDA, also computing code coverage, ensure the core code works properly. Implementation tests consist of grid world and traditional research baseline domains.
Note that executing unit or implementation tests may require
optirun or other similar programs, since it uses the GPU.
These test only the C/C++/CUDA code (currently). Building and executing the test suite can be done all at once via:
Optionally, it can be done in stages. First, build the test library (which has code coverage flags for gcc):
Next, build the unit test suites:
Finally, run the test suites:
These test both the C/C++/CUDA code as well as the Python code. Examples include:
python3 tests/grid_world/grid_world.py python3 tests/tiger/tiger.py
Benchmarks to compare algorithm performance can be found in the
tests/benchmarks directory. Examples include:
python3 tests/benchmarks/algorithms/algorithms.py python3 tests/benchmarks/parallel/parallel.py
The performance of each algorithm, in terms of run time, initial state value, and average reward (e.g., ADR) in trials is reported in the resultant
results folders inside the benchmark's directory.