pub fn transpile_global_kernel(func: &ItemFn) -> Result<String>Expand description
Transpile a Rust function to a CUDA __global__ kernel.
This generates an externally-callable kernel without stencil-specific patterns.
Use DSL functions like thread_idx_x(), block_idx_x() to access CUDA indices.
§Example
ⓘ
use ringkernel_cuda_codegen::transpile_global_kernel;
use syn::parse_quote;
let func: syn::ItemFn = parse_quote! {
fn exchange_halos(buffer: &mut [f32], copies: &[u32], num_copies: i32) {
let idx = block_idx_x() * block_dim_x() + thread_idx_x();
if idx >= num_copies { return; }
let src = copies[idx * 2] as usize;
let dst = copies[idx * 2 + 1] as usize;
buffer[dst] = buffer[src];
}
};
let cuda = transpile_global_kernel(&func)?;
// Generates: extern "C" __global__ void exchange_halos(...) { ... }