A C++ library for efficient vector and matrix operations with multi-backend support, enabling users to create custom computational tasks.
- Vector operators
- Sub-graph inside graph
- CUDA + CPU backends support
- Graph visualization
- Matrix operators
- OpenGL/OpenCL/Vulkan backends
- Examples crafting complex tasks
- Visualize all sub-graph inside master graph
- Documentation and user guide
- C++17 or later
- CMake version 3.5 or later
- Ninja
- A compatible C++ compiler (e.g., GCC, Clang, MSVC)
# Clone the repository
git clone https://github.com/kiennt63/opr.git
# Navigate to the project directory
cd opr
# Build the project
./scripts/build.sh- Example code available in
examplesdirectory - Binaries can be found in
build/debug/bin
# Run cuda example
./scripts/run_example.sh- We use graphviz to visualize the computation graph
- Graphviz need to be installed
sudo apt-get install graphviz
- Generate a dot file:
graph->gen_dot("output/graph.dot");
- Generate graph visualization image from the dot file
dot -Tpng output/graph.dot -o output/graph.png
If you have any questions, suggestions, or issues, feel free to reach out:
- Kien T. Nguyen
- Email: kiennt603@gmail.com
- LinkedIn: Kien T. Nguyen
- GitHub: kiennt63
We appreciate your feedback and contributions to the project!

