cccl
OpenCL-Wrapper
cccl | OpenCL-Wrapper | |
---|---|---|
2 | 7 | |
815 | 262 | |
13.1% | - | |
9.8 | 5.7 | |
3 days ago | 10 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.
cccl
-
GDlog: A GPU-Accelerated Deductive Engine
https://github.com/topics/datalog?l=rust ... Cozo, Crepe
Crepe: https://github.com/ekzhang/crepe :
> Crepe is a library that allows you to write declarative logic programs in Rust, with a Datalog-like syntax. It provides a procedural macro that generates efficient, safe code and interoperates seamlessly with Rust programs.
Looks like there's not yet a Python grammar for the treeedb tree-sitter: https://github.com/langston-barrett/treeedb :
> Generate Soufflé Datalog types, relations, and facts that represent ASTs from a variety of programming languages.
Looks like roxi supports n3, which adds `=>` "implies" to the Turtle lightweight RDF representation: https://github.com/pbonte/roxi
FWIW rdflib/owl-rl: https://owl-rl.readthedocs.io/en/latest/owlrl.html :
> simple forward chaining rules are used to extend (recursively) the incoming graph with all triples that the rule sets permit (ie, the “deductive closure” of the graph is computed).
ForwardChainingStore and BackwardChainingStore implementations w/ rdflib in Python: https://github.com/RDFLib/FuXi/issues/15
Fast CUDA hashmaps
Gdlog is built on CuCollections.
GPU HashMap libs to benchmark: Warpcore, CuCollections,
https://github.com/NVIDIA/cuCollections
https://github.com/NVIDIA/cccl
https://github.com/sleeepyjack/warpcore
/? Rocm HashMap
DeMoriarty/DOKsparse:
-
Hello World on the GPU (2019)
C++20 would be news to me. Do you have a reference? The closest I can find is https://github.com/NVIDIA/cccl which seems to be atomic and bits of algorithm. E.g. can you point to unordered_map that works on the target?
I think some pieces of libc++ work but don't know of any testing or documentation effort to track what parts, nor of any explicit handling in the source tree.
OpenCL-Wrapper
-
What 8x AMD Instinct MI200 GPUs can do with a combined 512GB VRAM: Bell 222 Helicopter in FluidX3D CFD - 10 Billion Cells, 75k Time Steps, 71TB vizualized - 6.4 hours compute+rendering with OpenCL
In case you go with OpenCL, start here: https://github.com/ProjectPhysX/OpenCL-Wrapper
-
In the next 5 years, what do you think can push OpenCL adoption?
I've also open-sourced an OpenCL-Wrapper to eliminate all of the boilerplate code that otherwise comes with the OpenCL C++ bindings and lower the entry barrier. Especially for larger projects, the biolerplate code becomes really offputting, and I solved it entirely.
-
What's your main programming language?
Somewhat unusual these days, but I mainly use OpenCL C. It's seems cumbersome and hard to learn at first, but becomes much more easy to use with the right tools. Once you master it, it whipes the floor with CPU programming; it's not unusual to see 100x speedup on a GPU compared to multithreaded CPU code at the same energy consumption. It's just as fast as CUDA - as efficient as the microarchitecture allows - but compatible with literally all GPU/CPU hardware of the last decade. No need to waste time on code porting if the next supercomputer has GPUs from a different vendor, it just runs out-of-the-box. Ideal for scientific compute!
-
How do you allocate more than 4GB of memory for OpenCL in A770 16GB?
I added this to my OpenCL-Wrapper in this commit, so anything built on top of it, such as FluidX3D, works on Arc out-of-the-box. Additionally, I fixed Intel's wrong VRAM capacity reporting on Arc in this patch.
-
New project - Which framework/libraries to use ?
Try OpenCL. You only need to implement the code once (in a vectorized form) and it works cross-platform on all GPUs and all CPUs, even on FPGAs. Performance is exactly as good as CUDA. There is still no rivaling framework today, although SYCL is starting to become a viable alternative.
- Want to to learn OpenCL on C++ without the painful clutter that comes with the C++ bindings? My lightweight OpenCL-Wrapper makes it super simple. Automatically select the fastest GPU in 1 line. Create Host+Device Buffers and Kernels in 1 line. It even automatically tracks Device memory allocation.
-
Most user friendly way to write OpenCL kernels.
I have found that OpenCL-Wrapper from PhysX has a great solution to this : https://github.com/ProjectPhysX/OpenCL-Wrapper/
What are some alternatives?
stdgpu - stdgpu: Efficient STL-like Data Structures on the GPU
FluidX3D - The fastest and most memory efficient lattice Boltzmann CFD software, running on all GPUs via OpenCL.
cuCollections
OpenCL-examples - Simple OpenCL examples for exploiting GPU computing
DOKSparse - sparse DOK tensors on GPU, pytorch
intel-extension-for-tensorflow - Intel® Extension for TensorFlow*
Taskflow - A General-purpose Parallel and Heterogeneous Task Programming System
dolfinx - Next generation FEniCS problem solving environment
oneMKL - oneAPI Math Kernel Library (oneMKL) Interfaces
VectorVisor - VectorVisor is a vectorizing binary translator for GPUs, designed to make it easy to run many copies of a single-threaded WebAssembly program in parallel using GPUs
gdlog
chipStar - chipStar is a tool for compiling and running HIP/CUDA on SPIR-V via OpenCL or Level Zero APIs.