diff --git a/README.md b/README.md index 8ebb32f..be2a690 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ OpenRAND is a C++ library designed to foster reproducible scientific research by **Statistical Robustness**: Built-in tests ensure that random number streams generated by OpenRAND are statistically robust, with no discernible patterns. -**Performance**: It is as fast and often faster than native libraries like libstdc++ or Nvidia's Curand, with minimal memory overhead. +**Performance**: It is as fast and often faster than native libraries like libstdc++ or Nvidia's Curand, with minimal memory overhead. See the [paper](https://arxiv.org/abs/2310.19925) for details. ## Installation @@ -56,7 +56,7 @@ int main() { } ``` -The seed should correspond to a work-unit of the program. For example, it could be the unique global id of a particle in a monte carlo simulation, or the (1D) pixel index in a ray tracing renderer. The counter should be incremented every time a new random number is drawn for a particular seed. This is helpful, for example, when a particle undergoes multiple kernel launches in it's lifespan (with a new random stream required in each). +The seed should correspond to a work-unit of the program. For example, it could be the unique global id of a particle in a monte carlo simulation, or the (1D) pixel index in a ray tracing renderer. The counter should be incremented every time a new generator is needed for a particular seed. This is helpful, for example, when a particle undergoes multiple kernel launches in it's lifespan (with a new random stream required in each). Below is a simplified monte carlo paticle simulation example that runs for 10000 time steps. Conveniently, we can simply use the iteration number as the `counter` for all particles. For `seed`, we assume each particle below has a unique global id atribute called `pid`. @@ -89,7 +89,9 @@ int main(){ ## Documentation For a quick intorduction to OpenRAND: please refer to [this guide](https://msu-sparta.github.io/OpenRAND/md_quickstart.html). -For more detailed information, refer to the doxygen doc [here](https://msu-sparta.github.io/OpenRAND/), +For more detailed information, refer to the doxygen doc [here](https://msu-sparta.github.io/OpenRAND/) + +Please refer to the paper ([arvix](https://arxiv.org/abs/2310.19925)) for detailed performance figures, our design choices etc. ## Contributing We welcome all sorts of contributions from the community- code, bug reports, documentation improvements, and any general feedback is always appreciated. @@ -98,6 +100,19 @@ If you want to contribute code, please note that we follow [Github Workflow](htt If you'd like to make a major change or introduce a new feature, please open an issue first to discuss it with us. +## Citation +If you use OpenRAND for your research, we would appreciate it if you cite our paper. Below is the BibTeX entry for our publication: +```bibtex +@misc{khan2023openrand, + title={OpenRAND: A Performance Portable, Reproducible Random Number Generation Library for Parallel Computations}, + author={Shihab Shahriar Khan and Bryce Palmer and Christopher Edelmaierd and Hasan Metin Aktulga}, + year={2023}, + eprint={2310.19925}, + archivePrefix={arXiv}, + primaryClass={cs.DC} +} +``` + ## License This project is licensed under the MIT License - see the LICENSE file for details.