Megopolis Project Code and Documentation.
Megopolis is an open source framework for resampling algorithms on GPUs, which is an essential part to improve performance of Sequential Monte Carlo (SMC) or Particle Filtering algorithms. This repository is provided as part of the following papers :
Chesser J., Nguyen H. V., & Damith C. (2021). The Megopolis Resampler: Memory Coalesced Resampling on GPUs, which is accepted to Digital Signal Processing. See Paper.
Cite using:
@article{chesser2021,
title={Memory Coalesced Metropolis Resampling: The Megopolis Resampler},
author={Chesser, Joshua A. and Nguyen, Hoa Van and Ranasinghe, Damith C.},
journal={Digital Signal Processing},
year={2021}
}
The implementation of the GPU accelerated resampling algorithms can be found in src/resampling
.
This code is header only and exists in the namespace resampling
. The remaining code uses the resampling
algorithm implmentations for benchmarking.
The benchmarks rely on RapidJson for parsing the config
files. Place the rapidjson/include/rapidjson
header only libary into the include directory:
$ mkdir Megopolis/include
$ cp -R rapidjson/include/rapidjson Megopolis/include/rapidjson
Ensure you have the CUDA Toolkit installed. NOTE This build process has been tested with CUDA version 11.7.
Build the target directory and run the make file. NOTE For windows users, CUDA can be used on WSL2:
$ cd Megopolis
$ mkdir target
$ make
This will create two binaries target/resample_test
and target/filter_bench
. resample_test
will
run the resampling benchmarks while filter_bench
will run the filtering benchmarks. To run these
benchmarks, simply pass the desired config file as a parameter:
$ ./target/resample_test configs/resample_config.json
$ ./target/filter_bench configs/filter_config.json
This project is licensed under the MIT License - see the LICENSE.md file for details