ringkernel-codegen
Template-based GPU kernel code generation for RingKernel.
Overview
This crate generates GPU kernel source code from templates for multiple backend targets: CUDA PTX, Metal MSL, and WebGPU WGSL. It provides a simple template substitution system for embedding user kernel code.
For DSL-to-GPU transpilation, see ringkernel-cuda-codegen and ringkernel-wgpu-codegen.
Usage
use ;
let generator = new;
// Generate for a specific target
let cuda_source = generator.generate_kernel_source?;
// Or generate for all targets at once
let config = KernelConfig ;
let files = generator.generate_all_targets?;
for file in files
Targets
| Target | Extension | Description |
|---|---|---|
Target::Cuda |
.ptx |
NVIDIA CUDA (PTX assembly) |
Target::Metal |
.metal |
Apple Metal (MSL) |
Target::Wgsl |
.wgsl |
WebGPU (WGSL) |
Template Variables
Custom variables can be set for template substitution:
let mut generator = new;
generator.set_variable;
generator.set_variable;
Variables are substituted using {{VARIABLE_NAME}} syntax in templates.
Intrinsic Mappings
The crate provides cross-platform intrinsic mappings:
use standard_intrinsics;
let intrinsics = standard_intrinsics;
for intrinsic in intrinsics
Standard mappings include:
sync_threads- Thread synchronization barrierthread_fence/thread_fence_block- Memory fencesatomic_add/atomic_cas- Atomic operations
Testing
License
Apache-2.0