transpile_global_kernel

Function transpile_global_kernel 

Source
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(...) { ... }