Class MetalRingKernelStubGenerator
- Namespace
- DotCompute.Backends.Metal.Compilation
- Assembly
- DotCompute.Backends.Metal.dll
Generates Metal Shading Language (MSL) kernel stubs from runtime-discovered Ring Kernel metadata.
public sealed class MetalRingKernelStubGenerator
- Inheritance
-
MetalRingKernelStubGenerator
- Inherited Members
Remarks
This generator creates Metal Shading Language source code (.metal files) from Ring Kernel definitions discovered at runtime via reflection. The generated code includes: - MSL kernel function declarations with proper type mapping - Message queue parameter setup using Metal buffers - Ring buffer management code for persistent kernels - Thread group and SIMD group synchronization
The generated stubs integrate with the Ring Kernel message processing pipeline, supporting MemoryPack serialization and Apple Silicon unified memory.
Constructors
MetalRingKernelStubGenerator(ILogger<MetalRingKernelStubGenerator>)
Initializes a new instance of the MetalRingKernelStubGenerator class.
public MetalRingKernelStubGenerator(ILogger<MetalRingKernelStubGenerator> logger)
Parameters
loggerILogger<MetalRingKernelStubGenerator>Logger for diagnostic output.
Methods
GenerateBatchKernelStubs(IEnumerable<DiscoveredMetalRingKernel>, string)
Generates MSL stubs for multiple Ring Kernels in a single compilation unit.
public static string GenerateBatchKernelStubs(IEnumerable<DiscoveredMetalRingKernel> kernels, string compilationUnitName = "RingKernels")
Parameters
kernelsIEnumerable<DiscoveredMetalRingKernel>compilationUnitNamestring
Returns
GenerateKernelStub(DiscoveredMetalRingKernel)
Generates a complete MSL source file (.metal) for a Ring Kernel.
public string GenerateKernelStub(DiscoveredMetalRingKernel kernel)
Parameters
kernelDiscoveredMetalRingKernelThe discovered Ring Kernel metadata.
Returns
- string
The generated Metal Shading Language source code.
ValidateKernelForMetal(DiscoveredMetalRingKernel)
Validates that a kernel can be compiled to MSL.
public static bool ValidateKernelForMetal(DiscoveredMetalRingKernel kernel)
Parameters
kernelDiscoveredMetalRingKernel