changh95's picture
tt-model push diffusion-planner-p150 (container)
4d9b003 verified
Raw History Blame Contribute Delete
1.66 kB
# SPDX-License-Identifier: Apache-2.0
"""Custom-op helpers. Kernel ``.cpp`` / ``.hpp`` files are package data under ``ops/kernels/`` (shipped through
``source.extra_code`` and ``[tool.setuptools.package-data]``), and are always referenced by absolute path, because
tt-metal resolves a relative kernel path against the CWD, ``TT_METAL_KERNEL_PATH`` and ``TT_METAL_HOME`` first
(TT_PLATFORM.md section 5.1). The C17-C23 op modules and the K1-K11 kernels of PLAN.md section 1.3 are added here
by the first port that needs them, with a numpy oracle test and the hang protocol of PLAN.md section 4.4.
Op modules (import them explicitly; this package imports none of them): ``conv`` (C17 conv builders), ``upsample``
(C18 up-sampling and interpolation), ``attention`` (C20 SDPA wrapper), ``gather`` (C19 row gathers), ``topk`` (C21
top-k selection), ``heatmap`` (C22 heatmap local max), ``deform`` (C23 grid_sample helpers), ``segment`` (K1
``segment_reduce``: the first ``generic_op`` kernel, ``kernels/segment_reduce_dm.cpp``).
"""
from __future__ import annotations
import os
__all__ = ["KERNEL_DIR", "kernel_path"]
KERNEL_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "kernels")
def kernel_path(name: str, base: str = KERNEL_DIR) -> str:
"""Absolute path of a kernel source shipped with the package (``kernel_path("segment_max_reader.cpp")``).
Raises ``FileNotFoundError`` early instead of tt-metal's "doesn't exist in any of the searched paths"."""
path = os.path.join(base, name)
if not os.path.isfile(path):
raise FileNotFoundError(f"kernel source {path} is missing (not shipped as package data?)")
return path