Skip to content

User Interface

Proteus offers four ways to define JIT work. All four eventually feed the same runtime specialization, caching, and execution pipeline, but they differ in how JIT code is described and in their build-time requirements.

Interface Best for Specialization support Runtime template instantiation Compiler requirement
Code Annotations Incremental adoption in existing host, CUDA, or HIP code Values, arrays, objects, and launch configuration No Application must be compiled with Clang
C++ Frontend API Source-string JIT, runtime template instantiation, and compiler control Values, arrays, objects, and launch configuration Yes Application can be compiled with any compatible compiler
MLIR Frontend API Source-string MLIR JIT and direct access to MLIR lowering Encoded directly in the provided MLIR source No Application can be compiled with any compatible compiler
DSL API Programmatic IR construction and advanced runtime code generation Values, arrays, and launch configuration No Application can be compiled with any compatible compiler

For more detail on each path:

For runtime knobs that affect specialization, caching, and compilation, see the runtime configuration guide.