Generating OpenCL/CUDA source code from C++ expressions in VexCL
summary
Library generates OpenCL/CUDA kernels JIT from C++ expression templates and generates OpenCL/CUDA kernels JIT that replace temporaries with fused computations, uses Boost.Proto to build and traverse expression trees, and caches compiled kernels in local statics to avoid repeated compile overhead. Built device-agnostic backends (OpenCL and CUDA), supports random generators and symbolic recording, runs ensemble ODE solves, and reports roughly 1.5× speed vs some vendor kernels for large problems and up to ~10×–20× when full fusion removes global-memory temporaries.
AI-written summary · about
chapters (12)
- 0:00VexCL and GPU frameworks
- 3:14What is VexCL
- 8:56Generating OpenCL/CUDA kernels
- 10:00Expression templates for CPU
- 17:46Extending to GPU code
- 26:41Boost.Proto for expressions
- 34:26Defining terminals in VexCL
- 37:38Lazy functions and variables
- 41:19Performance gains with kernels
- 47:48OpenCL CPU vs GPU performance
- 50:23Why OpenCL and CUDA
- 57:56Q&A
related talks
01h 01mTake Advantage of All the MIPS - SYCL & C++
36mCUDA Kernels with C++
01h 32mHeterogeneous Programming in C++ today
56m“Towards Heterogeneous Programming in C++"
37mC++ for multi-accelerator, multi-vendor systems
01h 09mC++20 on Xilinx FPGA with SYCL for Vitis
01h 00mGPU Accelerated Computing & Optimizations on Cross-Vendor Graphics Cards with Vulkan & Kompute
01h 07mHeterogeneous Modern C++ with SYCL
