kokkos
stdBLAS
Our great sponsors
kokkos | stdBLAS | |
---|---|---|
4 | 4 | |
1,723 | 103 | |
3.0% | - | |
9.8 | 3.3 | |
about 16 hours ago | 23 days ago | |
C++ | C++ | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
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.
kokkos
-
Requesting suggestions for languages, libraries, and architectures for parallel (and sometimes non parallel) numerical and scientific computations
I’m a novice user of Kokkos. Write code once for openmp, CUDA, and other parallel execution backends. It was designed with scientific computing applications in mind. Some numerics tools are implemented in “Kokkos kernels”, most of the BLAS operations are included iirc.
-
My first non-trivial project in C++ and MPI/OpenMP
I would suggest using a C++ abstraction around thread parallelism. This will make your code easier to read and more concise, and will also make it easier to switch between different thread-parallel programming models. Kokkos is a lovely example of such an abstraction, but there are others. Modern C++ even has thread-parallel standard algorithms. Bryce Adelstein Lelbach's CppCon 2021 talk describes these.
-
Is there an OOP-wrapper library for cublas?
It’s a work in progress, but Kokkos and the associated Kokkos Kernels are probably the closest thing to what you’re asking for.
-
pykokkos-base available in PyPi (numpy and cupy array interoperability)
Kokkos implements a programming model in C++ for writing performance portable applications targeting all major HPC platforms. It provides abstractions for both parallel execution of code and data management with a variety of backends including, but not limited to: CUDA, HIP, OpenMP, HPX, and Pthreads, with backends for OpenMPTarget and SYCL currently under development.
stdBLAS
-
Which is the best way to work with matrices and linear algebra using c++?
You can have a look at https://github.com/kokkos/stdBLAS (it's an implementation of the proposed linear algebra extensions for future C++).
-
C++23: Near The Finish Line
It has the same BSD license as Kokkos: https://github.com/kokkos/stdBLAS/blob/main/LICENSE
-
Linear Algebra Library Reccomendations?
The BLAS and LAPACK have C interfaces, and they generally don't allocate memory unless you ask them. (Some BLAS implementations allocate internal storage for rearranging matrix data.) There are a few C++ BLAS wrappers; here is one of them.
-
Is there an OOP-wrapper library for cublas?
The second one is stdBLAS by kokkos. It doesn't even use cuBLAS but it's a reference implementation of P1673. This paper describe what could be a blas API in the std. I would recommend trying to do something equivalent on your side.
What are some alternatives?
RAJA - RAJA Performance Portability Layer (C++)
mdspan - Reference implementation of mdspan targeting C++23
pykokkos - Performance portable parallel programming in Python.
plf_hive - plf::hive is a fork of plf::colony to match the current C++ standards proposal.
LEWG - Project planning for the C++ Library Evolution Working Group
Taskflow - A General-purpose Parallel and Heterogeneous Task Programming System
plf_colony - An unordered C++ data container providing fast iteration/insertion/erasure while maintaining pointer/iterator validity to non-erased elements regardless of insertions/erasures. Provides higher-performance than std:: library containers for high-modification scenarios with unordered data.
kokkos-python - Python bindings for data interoperability with Kokkos (View, DynRankView)
papers - ISO/IEC JTC1 SC22 WG21 paper scheduling and management
parallel-kd-tree - Parallel k-d tree with C++17, MPI and OpenMP
stl-header-heft - Measures how parsing overweight the major STLs have become