A Common Lisp library for NVIDIA CUDA programming, providing a kernel description language and memory management.
Cl-cuda is a library to use NVIDIA CUDA in Common Lisp programs.
The kernel description language uses S-expressions to define functions, macros, and symbol macros, offering CUDA C lacks, as shown with `defkernel` enabling Lisp-idiomatic GPU code.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Kernels are lazily compiled to CUDA C, compiled to PTX via NVCC, and loaded automatically via the kernel manager, reducing manual intervention for users.
Memory blocks abstract host and device memory with functions like `sync-memory-block`, simplifying data transfers and reducing common bugs in GPU programming.
Provides direct interfaces to CFFI pointers and CUDA device pointers, allowing advanced users to bypass abstractions for custom memory handling when needed.
Enables work with multiple CUDA streams for overlapping copy and computation operations, enhancing throughput in parallel tasks, as detailed in the streams section.
Heavily relies on NVIDIA CUDA Toolkit and drivers; runtime errors occur if not installed, limiting portability and adding deployment complexity.
Some verified environments require manual tweaks like setting `*nvcc-options*` (e.g., for architecture flags), leading to setup hassles across different systems.
Parts of the kernel description language, such as types, are noted as 'not documented yet' in the README, hindering learning and debugging for new users.
Lazy compilation introduces delays on first kernel launches due to CUDA C and PTX compilation steps, which may impact interactive or real-time applications.