mirror of
https://github.com/sgjzfzzf/triton-tvm-ffi.git
synced 2026-07-01 08:51:56 +08:00
+16
@@ -0,0 +1,16 @@
|
||||
# Python-generated files
|
||||
__pycache__/
|
||||
*.py[oc]
|
||||
build/
|
||||
dist/
|
||||
wheels/
|
||||
*.egg-info
|
||||
|
||||
# Virtual environments
|
||||
.venv
|
||||
|
||||
.cache
|
||||
.clangd
|
||||
.ruff_cache
|
||||
.python-version
|
||||
uv.lock
|
||||
@@ -0,0 +1,25 @@
|
||||
cmake_minimum_required(VERSION 3.18)
|
||||
|
||||
if(DEFINED SKBUILD_PROJECT_NAME)
|
||||
project(${SKBUILD_PROJECT_NAME})
|
||||
else()
|
||||
project(triton-tvm-ffi)
|
||||
endif()
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
else(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
endif()
|
||||
|
||||
find_package(Python COMPONENTS Interpreter REQUIRED)
|
||||
|
||||
execute_process(
|
||||
COMMAND "${Python_EXECUTABLE}" -m tvm_ffi.config --cmakedir
|
||||
OUTPUT_VARIABLE TVM_FFI_CMAKEDIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
list(APPEND CMAKE_PREFIX_PATH "${TVM_FFI_CMAKEDIR}")
|
||||
|
||||
find_package(tvm_ffi CONFIG REQUIRED)
|
||||
|
||||
add_subdirectory(${PROJECT_SOURCE_DIR}/src)
|
||||
@@ -0,0 +1,13 @@
|
||||
# Triton-TVM-FFI
|
||||
|
||||
## Instructions
|
||||
|
||||
### Debug Install
|
||||
```bash
|
||||
SKBUILD_BUILD_DIR="build" SKBUILD_CMAKE_BUILD_TYPE=Debug uv pip install --no-build-isolation -ve .
|
||||
```
|
||||
|
||||
### Format
|
||||
```bash
|
||||
find python -name "*.py" | xargs ruff format
|
||||
```
|
||||
@@ -0,0 +1,19 @@
|
||||
[project]
|
||||
name = "triton-tvm-ffi"
|
||||
version = "0.1.0"
|
||||
description = "Add your description here"
|
||||
readme = "README.md"
|
||||
dependencies = [
|
||||
"apache-tvm-ffi",
|
||||
]
|
||||
|
||||
[build-system]
|
||||
requires = ["apache-tvm-ffi", "scikit-build-core"]
|
||||
build-backend = "scikit_build_core.build"
|
||||
|
||||
[project.entry-points."triton.backends"]
|
||||
nvidia = "triton_tvm_ffi"
|
||||
|
||||
[tool.scikit-build]
|
||||
wheel.install-dir = "triton_tvm_ffi"
|
||||
wheel.packages = ["python/triton_tvm_ffi"]
|
||||
@@ -0,0 +1,3 @@
|
||||
from . import utils
|
||||
|
||||
__all__ = ["utils"]
|
||||
@@ -0,0 +1,7 @@
|
||||
from triton.backends.nvidia.compiler import CUDABackend
|
||||
|
||||
|
||||
class TVMFFIBackend(CUDABackend): ...
|
||||
|
||||
|
||||
del CUDABackend
|
||||
@@ -0,0 +1,20 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Type
|
||||
from triton.backends.nvidia.driver import CudaDriver
|
||||
|
||||
|
||||
class TVMFFIUtils(object):
|
||||
def __new__(cls: Type[TVMFFIUtils]) -> TVMFFIUtils:
|
||||
if not hasattr(cls, "instance"):
|
||||
cls.instance = super().__new__(cls)
|
||||
return cls.instance
|
||||
|
||||
def __init__(self, *args, **kwargs) -> None:
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
|
||||
class TVMFFIDriver(CudaDriver): ...
|
||||
|
||||
|
||||
del CudaDriver
|
||||
@@ -0,0 +1,11 @@
|
||||
# tvm-ffi-stubgen(begin): export/_ffi_api
|
||||
# fmt: off
|
||||
# isort: off
|
||||
from ._ffi_api import * # noqa: F403
|
||||
from ._ffi_api import __all__ as _ffi_api__all__
|
||||
if "__all__" not in globals():
|
||||
__all__ = []
|
||||
__all__.extend(_ffi_api__all__)
|
||||
# isort: on
|
||||
# fmt: on
|
||||
# tvm-ffi-stubgen(end)
|
||||
@@ -0,0 +1,26 @@
|
||||
# tvm-ffi-stubgen(begin): import-section
|
||||
# fmt: off
|
||||
# isort: off
|
||||
from __future__ import annotations
|
||||
from tvm_ffi import init_ffi_api as _FFI_INIT_FUNC
|
||||
from tvm_ffi.libinfo import load_lib_module as _FFI_LOAD_LIB
|
||||
from typing import TYPE_CHECKING
|
||||
# isort: on
|
||||
# fmt: on
|
||||
# tvm-ffi-stubgen(end)
|
||||
# tvm-ffi-stubgen(import-object): tvm_ffi.libinfo.load_lib_module;False;_FFI_LOAD_LIB
|
||||
LIB = _FFI_LOAD_LIB("triton_tvm_ffi", "utils")
|
||||
# tvm-ffi-stubgen(begin): global/triton_tvm_ffi.utils
|
||||
# fmt: off
|
||||
_FFI_INIT_FUNC("triton_tvm_ffi.utils", __name__)
|
||||
if TYPE_CHECKING:
|
||||
def hello() -> None: ...
|
||||
# fmt: on
|
||||
# tvm-ffi-stubgen(end)
|
||||
|
||||
__all__ = [
|
||||
# tvm-ffi-stubgen(begin): __all__
|
||||
"LIB",
|
||||
"hello",
|
||||
# tvm-ffi-stubgen(end)
|
||||
]
|
||||
@@ -0,0 +1,28 @@
|
||||
add_library(
|
||||
utils
|
||||
SHARED
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/utils.cc
|
||||
)
|
||||
|
||||
target_include_directories(
|
||||
utils
|
||||
PRIVATE ${PROJECT_SOURCE_DIR}/include
|
||||
)
|
||||
target_compile_options(
|
||||
utils
|
||||
PRIVATE
|
||||
$<$<CONFIG:Debug>:-O0 -g -DDEBUG>
|
||||
$<$<CONFIG:Release>:-O3 -DNDEBUG>
|
||||
)
|
||||
|
||||
tvm_ffi_configure_target(
|
||||
utils
|
||||
STUB_DIR "${CMAKE_SOURCE_DIR}/python"
|
||||
STUB_INIT ON
|
||||
)
|
||||
|
||||
install(
|
||||
TARGETS utils
|
||||
LIBRARY DESTINATION .
|
||||
)
|
||||
tvm_ffi_install(utils DESTINATION .)
|
||||
@@ -0,0 +1,8 @@
|
||||
#include <tvm/ffi/tvm_ffi.h>
|
||||
|
||||
void hello() { std::cout << "Hello, world!\n"; }
|
||||
|
||||
TVM_FFI_STATIC_INIT_BLOCK() {
|
||||
namespace refl = tvm::ffi::reflection;
|
||||
refl::GlobalDef().def("triton_tvm_ffi.utils.hello", hello);
|
||||
}
|
||||
Reference in New Issue
Block a user