Fastor
librapid
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Fastor
-
Standard way of doing maths with arrays?
I'm going to throw in a recommendation for Fastor. It is generally faster than other libraries, is very lightweight, and has a pretty modern syntax.
- LibRapid -- High Performance Arrays for C++
-
From Julia to C++ Struggle
There are C++ libraries that deal with linear algebra and tensors that are able to produce fully vectorized code without requiring you to mess around with SIMD intrinsics. See, for instance, fastor, blaze, eigen and the huge Trillinos set of packages. C++ is very widely used when it comes to scientific HPC applications. All you need to do is google search or better yet, join r/cpp and r/cpp_questions and start asking away for the things you need. The C++ community is very welcoming and full of experts that will be able to help you.
-
Use of BLAS vs direct SIMD for linear algebra library operations?
Picking what size you are targeting is really important, though. Could the matrices you are working with realistically be bigger than say 32x32? BLAS is good for big matrices. It's not as great for small matrices. Eigen or Fastor will do better for these smaller problems. And for various common operations on sizes 2, 3, and 4, hand coded graphics-oriented libraries might outperform those.
-
Scientific computing in Cpp
Tensorflow, Machine learning: https://www.tensorflow.org/ Fastor, A tensor library: https://github.com/romeric/Fastor GNU Scientific Library(GSL): https://www.gnu.org/software/gsl/ Boost. FEniCS, A finite element library: https://fenicsproject.org/ Intel MKL, a BLAS+LAPACK+other goodies library: https://software.intel.com/content/www/us/en/develop/tools/math-kernel-library.html SuiteSparse, A sparse linear algebra library: http://faculty.cse.tamu.edu/davis/suitesparse.html Sundials, Nonlinear solvers: https://computing.llnl.gov/projects/sundials
librapid
-
Huge LibRapid Update -- New Features, Performance Improvements and Bug Fixes
In addition to all of these changes, I used LibRapid and Surge to write a simple Flappy Bird genetic AI as a proof of concept. The code runs well on all platforms and can simulate over 20,000 birds without too much trouble. If you want to check it out, here's the GitHub page: https://github.com/Pencilcaseman/FlappyBirdAI
-
LibRapid's Most Requested Feature -- OpenCL Support
LibRapid: https://github.com/LibRapid/librapid Documentation: https://librapid.readthedocs.io/en/latest/
-
My high-performance multidimensional array library
tl;dr
I'm developing an incredibly fast library for arrays and mathematics, and I've implemented a few new features and made some improvements. I'd love for you to check it out!
Links:
GitHub: https://github.com/LibRapid/librapid/
Documentation: https://librapid.readthedocs.io/en/latest/
Discord: https://discord.com/invite/cGxTFTgCAC
Hey everyone!
I am the lead developer of LibRapid (https://github.com/LibRapid/librapid/), a high-performance C++ library for array manipulation and mathematics. I've been working hard to bring you some significant updates and improvements to the library, and I'm excited to share them with you! These changes will make it even easier for you to use LibRapid in your projects and enable you to do even more with it.
Here's a rundown of the most notable changes:
CUDA improvements: We've fixed several bugs and made performance enhancements for the CUDA implementation.
Expanded support for BLAS libraries: LibRapid now has greater support for BLAS libraries, including Intel's MKL.
Test suite and documentation updates: We've updated our test suite and overhauled the documentation for clarity and ease of use.
Matrix Transposition: The library now supports matrix transposition with highly optimised, architecture-specific SIMD implementations and generic implementations for non-trivial types.
New math utility functions: We've added various new utility functions for complex numbers, multi-precision arithmetic, and more.
Matrix transposition and SIMD: LibRapid now supports matrix transposition and SIMD matrix transpose for SSE and AVX2, improving performance and memory alignment.
Random number generation: We've started implementing a new random number generation library.
Fast Fourier Transforms: LibRapid now supports fast Fourier transforms on 1D arrays, with more features coming soon! (We're using FFTW, so you can be sure you are getting the best possible performance)
Array BLAS operations: We're implementing BLAS functions that operate on our high-level array type, allowing you to access the high-performace, specialised routines without the tedious interface. (Many operations already use BLAS functions internally)
You can find more detailed information about the library and example code and usage guides in the documentation (https://librapid.readthedocs.io/en/latest/).
We're always looking for feedback and contributions, so if you're interested in using LibRapid or helping out, please feel free to create a pull request or contact us via our Discord Server (https://discord.com/invite/cGxTFTgCAC). I'm putting in a lot of effort to enhance LibRapid and would greatly appreciate any sponsorships to support my work. If you or your organisation is interested in sponsoring LibRapid, please feel free to reach out to me to discuss your ideas.
We hope you enjoy the latest updates to LibRapid, and look forward to seeing what you build with it!
-
LibRapid Update: Exciting New Features, Optimizations, and Improvements!
I am the lead developer of LibRapid, a high-performance C++ library for array manipulation and mathematics. I've been working hard to bring you some significant updates and improvements to the library, and I'm excited to share them with you! These changes will make it even easier for you to use LibRapid in your projects and enable you to do even more with it.
-
LibRapid for C++ -- February Update
LibRapid is a high-performance C++ library focusing primarily on linear algebra operations, though also supporting a wide range of classes, functions and utilities such as vectors, complex numbers and more.
- Make std::vector 5x Faster with LibRapid
-
Writing Faster, Shorter Code with LibRapid
LibRapid GitHub Repository
- Star History
- LibRapid -- High Performance Arrays for C++
-
what personal project of yours are you most proud of ?
Probably LibRapid, which is my high-performance array library for C++. Nothing huge but I'm quite proud of the features it currently implements (given time restrictions and rewrites) and it is, in many cases, faster than things like Eigen and XTensor :)
What are some alternatives?
xtensor - C++ tensors with broadcasting and lazy computing
hypergrep - Recursively search directories for a regex pattern
DirectXMath - DirectXMath is an all inline SIMD C++ linear algebra library for use in games and graphics apps
borealis - Hardware accelerated, controller and TV oriented UI library for PC and Nintendo Switch (libnx)
dynarray - A header-only library, VLA for C++ (≥C++14). Extended version of std::experimental::dynarray
tensorstore - Library for reading and writing large multi-dimensional arrays.
ITensors.jl - A Julia library for efficient tensor computations and tensor network calculations
BenchmarksCPP - A Suite of C++ Benchmarks for LibRapid
sundials - Official development repository for SUNDIALS - a SUite of Nonlinear and DIfferential/ALgebraic equation Solvers. Pull requests are welcome for bug fixes and minor changes.
pocketfft - FFT implementation based on FFTPack, but with several improvements, cloned from
ArrayFire - ArrayFire: a general purpose GPU library.
mandelbrot - A Mandelbrot Explorer implementation. I use this program to generate all of my avatars.