Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Shihab-Shahriar authored Nov 7, 2023
1 parent 64a28d4 commit b79edfc
Showing 1 changed file with 18 additions and 3 deletions.
21 changes: 18 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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`.

Expand Down Expand Up @@ -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.
Expand All @@ -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.

0 comments on commit b79edfc

Please sign in to comment.