Skip to content

LibRapid/librapid

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

C++ Version License Discord


Compile
Documentation Build
Documentation Online


What is LibRapid?

LibRapid is a high performance Array library, supporting a wide range of optimised calculations which can be performed on the CPU or GPU (via CUDA). All calculations are vectorised with SIMD instructions and are run on multiple threads (if necessary) to make them as fast as possible on any given machine.

There are also a wide range of helper functions and classes to aid the development of your own project.

LibRapid is highly templated, meaning it can conform to exactly your needs with minimal compile-times and even support for custom data types.

Documentation

Latest Documentation

LibRapid uses Doxygen and Doxygen Awesome CSS to automatically generate the documentation.

Current Development Stage

At the current point in time, LibRapid C++ is under rapid development by me (pencilcaseman).

I am currently doing my A-Levels and do not have time to work on the library as much as I would like, so if you or someone you know might be willing to support the development of the library, feel free to create a pull request or chat to us on Discord. Any help is greatly appreciated!

Future Plans

My goal for LibRapid is to make it faster and easier to use than existing libraries, such as Eigen and XTensor. I plan to develop an extensive testing and benchmarking suite alongside the code base, to ensure that everything is running as fast as possible.

My main goal for the future is to implement as many features as possible, while maintaining the high performance LibRapid requires.

External Dependencies

LibRapid has a few external dependencies to improve functionality and performance. Some of these are optional, and can be included with a CMake option. The following is a list of the external dependencies and their purpose (these are all submodules of the library. You don't need to do anything different):

  • Required
    • fmt - Advanced string formatting
    • scnlib - Advanced string parsing
    • thread-pool - Thread pool for parallel execution
    • Vc - SIMD library
    • cppfs - Cross-platform filesystem library (required for CUDA support)
  • Optional
    • OpenMP - Multi-threading library
    • CUDA - GPU computing library
    • mpfr - Arbitrary precision numbers (integer, real, rational)

Star History

Star History Chart

Support

Thanks to JetBrains for providing LibRapid with free licenses for their amazing tools!

JetBrains