ccglib
The Complex Common GEMM Library (ccglib) provides mixed-precision matrix-matrix multiplication kernels for complex data.
Workload-Informed Selection for Device-agnostic Matrix-matrix multiplication
The WISDOM project focuses on improving the performance portability of GPU software by making architecture- and workload-specific tuning more automatic and reusable.
ccglib is a portable library for low-precision, complex-valued matrix multiplication on GPUs, supporting both NVIDIA and AMD devices. It was originally developed at the Netherlands eScience Center (NLeSC) and ASTRON as part of the RECRUIT project (2021–2025). However, while ccglib performs well across several architectures, it currently hardcodes a single set of tuning parameters. Applying it to different matrix sizes or GPU architectures requires editing the source code, limiting its practical use in real-world workflows.
We address this by integrating Kernel Launcher, a C++ library that compiles GPU kernels at runtime and selects tuning parameters matched to the target architecture and problem dimensions. Kernel Launcher was developed for MicroHH during ESiWACE2 at NLeSC.
Kernel Launcher relies on wisdom files, which store optimal parameters for multiple architectures and predefined problem sizes. At runtime, it scans these files and selects the configuration that best fits the current workload. The result is a library that delivers tuned performance across architectures and problem sizes without requiring source-code modifications or recompilation.
By integrating Kernel Launcher into ccglib, the WISDOM project enables automatic tuning across diverse GPU architectures and problem sizes. In doing so, it:
Reducing Energy Consumption in Radio-astronomical and Ultrasound Imaging Tools
For future exascale climate and weather predictions
The Complex Common GEMM Library (ccglib) provides mixed-precision matrix-matrix multiplication kernels for complex data.
The cudawrappers library is a C++ wrapper for the Nvidia C libraries such as the CUDA driver, NVRTC, and cuFFT.
Dynamically compile GPU kernels and launch them easily and safely using C++ magic. Tight integration with Kernel Tuner results in blazing fast CUDA code that is maintainable and performance portable.
Kernel Tuner greatly simplifies the development of highly-optimized and auto-tuned CUDA, OpenCL, and C code, supporting many advanced use-cases and optimization strategies that speed up the auto-tuning process.