What is opus and when to use it
mainopus is a lightweight, templated C++ DSL designed to sit above hand-written HIP kernels but below highly optimized template libraries like ck/cutlass. It provides essential abstractions without the overhead of a heavy framework.
Use opus if you need:
- AMDGPU data type declaration and conversion.
- Automated vectorized buffer load/store dispatch.
- Support for various matrix core instructions (MFMA) with minimal code changes.
- A collection of utility device functions.
- Simple layout abstractions for index calculations.
Do NOT use opus if you need:
- Pre-optimized kernels (e.g., GEMM, attention, reduction) for direct use.
- Reusable device-side pipelines for GEMM/attention/reduction.
- A comprehensive layout system for arbitrary tensor transformations.
(For these, use
ckoraiterkernels instead.)