SaaSHub helps you find the best software and product alternatives Learn more →
Top 23 C++ Gpgpu Projects
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
FluidX3D
The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs via OpenCL.
-
kompute
General purpose GPU compute framework built on Vulkan to support 1000s of cross vendor graphics cards (AMD, Qualcomm, NVIDIA & friends). Blazing fast, mobile-enabled, asynchronous and optimized for advanced GPU data processing usecases. Backed by the Linux Foundation.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
AdaptiveCpp
Implementation of SYCL and C++ standard parallelism for CPUs and GPUs from all vendors: The independent, community-driven compiler for C++-based heterogeneous programming models. Lets applications adapt themselves to all the hardware in the system - even at runtime!
-
cuda-api-wrappers
Thin C++-flavored header-only wrappers for core CUDA APIs: Runtime, Driver, NVRTC, NVTX.
-
ParallelReductionsBenchmark
Thrust, CUB, TBB, AVX2, CUDA, OpenCL, OpenMP, SyCL - all it takes to sum a lot of numbers fast!
-
gpu-kernel-runner
Runs a single CUDA/OpenCL kernel, taking its source from a file and arguments from the command-line
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Loads of people have stated why easy GPU interfaces are difficult to create, but we solve many difficult things all the time.
Ultimately I think CPUs are just satisfactory for the vast vast majority of workloads. Servers rarely come with any GPUs to speak of. The ecosystem around GPUs is unattractive. CPUs have SIMD instructions that can help. There are so many reasons not to use GPUs. By the time anyone seriously considers using GPUs they're, in my imagination, typically seriously starved for performance, and looking to control as much of the execution details as possible. GPU programmers don't want an automagic solution.
So I think the demand for easy GPU interfaces is just very weak, and therefore no effort has taken off. The amount of work needed to make it as easy to use as CPUs is massive, and the only reason anyone would even attempt to take this on is to lock you in to expensive hardware (see CUDA).
For a practical suggestion, have you taken a look at https://arrayfire.com/ ? It can run on both CUDA and OpenCL, and it has C++, Rust and Python bindings.
Project mention: Confused in terms of where to start with framework/technology etc. Need help picking between learning ShaderToy v/s OpenGL v/s WebGL | /r/GraphicsProgramming | 2023-06-20If you specifically want to learn shader programming then https://shadered.org/ is a lot more practical than Shadertoy.
Project mention: Intel CEO: 'The entire industry is motivated to eliminate the CUDA market' | news.ycombinator.com | 2023-12-14The two I know of are IREE and Kompute[1]. I'm not sure how much momentum the latter has, I don't see it referenced much. There's also a growing body of work that uses Vulkan indirectly through WebGPU. This is currently lagging in performance due to lack of subgroups and cooperative matrix mult, but I see that gap closing. There I think wonnx[2] has the most momentum, but I am aware of other efforts.
[1]: https://kompute.cc/
[2]: https://github.com/webonnx/wonnx
Project mention: An efficient C++17 GPU numerical computing library with Python-like syntax | /r/programming | 2023-10-05
Project mention: Intel Graphics Compute Runtime for OneAPI Level Zero and OpenCL | news.ycombinator.com | 2023-08-02
Project mention: What Every Developer Should Know About GPU Computing | news.ycombinator.com | 2023-10-21Sapphire Rapids is a CPU.
AMD's primary focus for a GPU software ecosystem these days seems to be implementing CUDA with s/cuda/hip, so AMD directly supports and encourages running GPU software written in CUDA on AMD GPUs.
The only implementation for sycl on AMD GPUs that I can find is a hobby project that apparently is not allowed to use either the 'hip' or 'sycl' names. https://github.com/AdaptiveCpp/AdaptiveCpp
1. This implements the clunky C-ish API; there's also the Modern-C++ API wrappers, with automatic error checking, RAII resource control etc.; see: https://github.com/eyalroz/cuda-api-wrappers (due disclosure: I'm the author)
2. Implementing the _runtime_ API is not the right choice; it's important to implement the _driver_ API, otherwise you can't isolate contexts, dynamically add newly-compiled JIT kernels via modules etc.
3. This is less than 3000 lines of code. Wrapping all of the core CUDA APIs (driver, runtime, NVTX, JIT compilation of CUDA-C++ and of PTX) took me > 14,000 LoC.
Project mention: Portable and vendor neutral parallel programming on heterogeneous platforms | news.ycombinator.com | 2024-04-11
Project mention: How Jensen Huang's Nvidia Is Powering the A.I. Revolution | news.ycombinator.com | 2023-11-29> but all the alternatives require significant redesign in languages and tools people are unfamiliar with and we can't afford that overhead
Where I work, we've made it a principle to stay OpenCL-compatible even while going with NVIDIA due to their better-performing GPUs. I even go as far as writing kernels that can be compiled as either CUDA C++ or OpenCL-C, with a bit of duct-tape adapter headers:
https://github.com/eyalroz/gpu-kernel-runner/blob/main/kerne...
https://github.com/eyalroz/gpu-kernel-runner/blob/main/kerne...
of course, if you're working with higher-level frameworks then it's more difficult, and you depend on whether or not they provided different backends. So, no thrust for AMD GPUs, for example, but pytorch and TensorFlow do let you use them.
C++ Gpgpu related posts
- An efficient C++17 GPU numerical computing library with Python-like syntax
- MatX: Efficient C++17 GPU numerical computing library with Python-like syntax
- Offloading standard C++ PSTL to Intel, NVIDIA and AMD GPUs with AdaptiveCpp
- Intel Graphics Compute Runtime for OneAPI Level Zero and OpenCL
- Alder Lake HDR tone mapping
- Can anyone with Arc750 or 770 try this FMA benchmark written with OpenCL? I want to compare gigaflops.
- rocm-opencl (rocm-opencl-runtime) rx 6600 xt support
-
A note from our sponsor - SaaSHub
www.saashub.com | 24 Apr 2024
Index
What are some of the best open-source Gpgpu projects in C++? This list will help you:
Project | Stars | |
---|---|---|
1 | ArrayFire | 4,395 |
2 | SHADERed | 4,177 |
3 | FluidX3D | 3,193 |
4 | Boost.Compute | 1,497 |
5 | kompute | 1,480 |
6 | MatX | 1,115 |
7 | stdgpu | 1,077 |
8 | compute-runtime | 1,063 |
9 | AdaptiveCpp | 1,037 |
10 | cuda-api-wrappers | 726 |
11 | amgcl | 701 |
12 | vulkan_minimal_compute | 699 |
13 | VexCL | 695 |
14 | occa | 379 |
15 | vuh | 340 |
16 | BabelStream | 309 |
17 | RayTracing | 297 |
18 | opencl-intercept-layer | 292 |
19 | gpuowl | 111 |
20 | OpenCL-Benchmark | 102 |
21 | UE4_GPGPU_flocking | 68 |
22 | ParallelReductionsBenchmark | 59 |
23 | gpu-kernel-runner | 18 |
Sponsored