Add README.md (#38)
* Add README.md * Improve README description of TrigDx library * Apply suggestion from @mickveldhuis Co-authored-by: Mick Veldhuis <mickveldhuis@hotmail.nl> * Apply suggestion from @mickveldhuis Co-authored-by: Mick Veldhuis <mickveldhuis@hotmail.nl> * Apply suggestion from @mickveldhuis Co-authored-by: Mick Veldhuis <mickveldhuis@hotmail.nl> --------- Co-authored-by: Mick Veldhuis <mickveldhuis@hotmail.nl>
This commit is contained in:
committed by
GitHub
parent
f85e67e669
commit
5f00c5d304
54
README.md
Normal file
54
README.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# TrigDx
|
||||||
|
|
||||||
|
High‑performance C++ library offering multiple implementations of transcendental trigonometric functions (e.g., sin, cos, tan and their variants), designed for numerical, signal‑processing, and real‑time systems where trading a small loss of accuracy for significantly higher throughput on modern CPUs (scalar and SIMD) and NVIDIA GPUs is acceptable.
|
||||||
|
|
||||||
|
## Why TrigDx?
|
||||||
|
Many applications use the standard library implementations, which prioritise correctness but are not always optimal for throughput on vectorized or GPU hardware. TrigDx gives you multiple implementations so you can:
|
||||||
|
|
||||||
|
- Replace `std::sin` / `std::cos` calls with faster approximations when a small, bounded reduction in accuracy is acceptable.
|
||||||
|
- Use SIMD/vectorized implementations and compact lookup tables for high throughput lookups.
|
||||||
|
- Run massively parallel kernels that take advantage of a GPU's _Special Function Units_ (SFUs).
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- A C++ compiler with at least C++17 support (GCC, Clang)
|
||||||
|
- CMake 3.15+
|
||||||
|
- Optional: NVIDIA CUDA Toolkit 11+ to build GPU kernels
|
||||||
|
- Optional: GoogleTest (for unit tests) and GoogleBenchmark (for microbenchmarks)
|
||||||
|
|
||||||
|
## Building
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/astron-rd/TrigDx.git
|
||||||
|
cd TrigDx
|
||||||
|
mkdir build && cd build
|
||||||
|
|
||||||
|
# CPU-only:
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release -DTRIGDX_USE_XSIMD=ON ..
|
||||||
|
cmake --build . -j
|
||||||
|
|
||||||
|
# Enable CUDA (if available):
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release -DTRIGDX_USE_GPU=ON ..
|
||||||
|
cmake --build . -j
|
||||||
|
|
||||||
|
# Run tests:
|
||||||
|
ctest --output-on-failure -j
|
||||||
|
```
|
||||||
|
|
||||||
|
Common CMake options:
|
||||||
|
- `TRIGDX_USE_GPU=ON/OFF` — build GPU support.
|
||||||
|
- `TRIGDX_BUILD_TESTS=ON/OFF` — build tests.
|
||||||
|
- `TRIGDX_BUILD_BENCHMARKS=ON/OFF` — build benchmarks.
|
||||||
|
- `TRIGDX_BUILD_PYTHON` — build Python interface.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
- Fork → create a feature branch → open a PR.
|
||||||
|
- Include unit tests for correctness‑sensitive changes and benchmark results for performance changes.
|
||||||
|
- Follow project style (clang‑format) and run tests locally before submitting.
|
||||||
|
|
||||||
|
## Reporting issues
|
||||||
|
When opening an issue for incorrect results or performance regressions, please include:
|
||||||
|
- Platform and CPU/GPU model.
|
||||||
|
- Compiler and version with exact compile flags.
|
||||||
|
- Small reproducer (input data and the TrigDx implementation used).
|
||||||
|
|
||||||
|
## License
|
||||||
|
See the LICENSE file in the repository for licensing details.
|
||||||
Reference in New Issue
Block a user