Expand description
Kernel dispatch table - Zero-cost runtime dispatch system
Este módulo implementa un sistema de dispatch que:
- Se inicializa UNA VEZ al startup
- Valida qué backends están disponibles (incluyendo WebGPU)
- Crea function pointers para cada operación
- El hot-path solo hace
dispatch_table.matmul(a, b)sin branches
Arquitectura:
Startup:
- Detectar capabilities (SIMD, GPU, BLAS, WebGPU)
- Validar cada backend (GPU probe, BLAS test call)
- Elegir mejor implementación por operación
- Guardar function pointers en DispatchTable
Runtime:
- get_dispatch_table() → &'static DispatchTable
- table.add(a, b) → llama directamente al kernel elegido
- ZERO overhead (direct call, no match/if)Re-exports§
pub use get_dispatch_table as table;
Structs§
- Backend
Validation - Resultados de validación de backends
- Dispatch
Table - Dispatch table con function pointers seleccionados al startup. Todos los campos son public para acceso directo sin getter overhead.
- Runtime
Capabilities - Runtime-detected capabilities (features realmente disponibles en el sistema)
Functions§
- dispatch_
elementwise_ generic - Dispatch genérico para operaciones elementwise que mantiene el tipo nativo
- get_
backend_ override - Obtener el backend override actual
- get_
dispatch_ table - Obtiene el dispatch table (inicializa si es necesario)
- init_
dispatch_ table - Inicializa el dispatch table (llamar al startup)
- kernel_
elementwise_ simd - Kernel elementwise usando SIMD
- kernel_
matmul_ blas_ direct - Kernel matmul usando BLAS directo (sin decisiones internas)
- kernel_
matmul_ metal - Kernel matmul usando Metal (macOS only)
- kernel_
matmul_ scalar - Kernel matmul usando scalar (siempre disponible)
- kernel_
matmul_ simd - Kernel matmul usando SIMD
- kernel_
matmul_ webgpu - Kernel matmul usando WebGPU
- kernel_
reduction_ simd - Kernel reduction usando SIMD
- select_
kernels - Estrategia de selección basada en validation + benchmarks opcionales
- set_
backend_ override - Forzar un backend específico (para benchmarking)
Valores válidos: “scalar”, “simd”, “blas”, “webgpu”, “metal”
Usar
Nonepara restaurar comportamiento adaptativo - validate_
backends - Valida que cada backend realmente funciona (no solo que está compilado)
Type Aliases§
- DotFn
- Signature para dot product (retorna scalar)
- Elementwise
Fn - Signature para kernels elementwise (add, mul, etc)
- Matmul
Fn - Signature para matmul
- Reduction
Fn - Signature para kernels de reducción (sum, mean, max, min, etc)