e2f24b0876
- awg-tool 0.4.0 -> 0.5.0 - awgen 0.1 -> 0.2 - codeaf 0.7.1 -> 0.8.2 - ds4 -> ee7e840 (2026-10-21) - freebuff 0.2.19 -> 0.2.34 - graphify 0.9.77 -> 0.9.95 (add pyyaml dependency) - hipengine 0.6.1 -> 0.8.3 - kubernetes-mcp-server 0.0.67 -> 0.0.69 (build with go_1_27) - kyojin 1.3 -> 1.7.1 (drop obsolete setup.py/pyproject patches, ship gr_mix_hip from the package, add ninja runtime dependency) - marmel -> de3e99c (2026-10-23) - omniroute 3.8.50 -> 3.8.52 - open-code-review 1.12.12 -> 1.13.3 (build with go_1_27) - pilotdeck 2026.10.17 -> 2026.10.20 - radar 1.16.2 -> 1.18.0 - traycer 1.4.2 -> 1.5.1 Verified: nix build passes for every bumped package; kyojin.tests.jit compiles all five JIT kernels. 🤖 Generated with Codebuff Co-Authored-By: Codebuff <noreply@codebuff.com>
47 lines
2.0 KiB
Python
47 lines
2.0 KiB
Python
"""Compile Kyojin's JIT kernels; --gpu also loads them through torch's HIP runtime."""
|
|
import ctypes
|
|
import importlib
|
|
import os
|
|
from pathlib import Path
|
|
import sys
|
|
|
|
from exllamav3.util import hip_compiler
|
|
from exllamav3.util.hip_lib import load_hip_runtime
|
|
|
|
sdk = Path(os.environ["EXL3_ROCM_SDK"])
|
|
assert Path(hip_compiler.hipcc()) == sdk / "bin/hipcc"
|
|
assert Path(os.environ["HIP_DEVICE_LIB_PATH"]).is_dir()
|
|
assert (sdk / "amdgcn/bitcode").is_dir()
|
|
if os.environ.get("KYOJIN_REQUIRE_SDK") == "1":
|
|
assert hip_compiler.warning() is None, hip_compiler.warning()
|
|
print(hip_compiler.describe(), flush=True)
|
|
|
|
lib = None
|
|
if "--gpu" in sys.argv:
|
|
import torch
|
|
|
|
# Also exercise the runtime bitcode path: merely loading a HIP module
|
|
# does not catch incompatible device libraries in CLR/COMGR.
|
|
x = torch.ones((32, 32), device="cuda", dtype=torch.float32)
|
|
assert torch.equal(x @ x, torch.full_like(x, 32))
|
|
torch.cuda.synchronize()
|
|
lib = load_hip_runtime()
|
|
lib.hipModuleLoad.argtypes = [ctypes.POINTER(ctypes.c_void_p), ctypes.c_char_p]
|
|
lib.hipModuleUnload.argtypes = [ctypes.c_void_p]
|
|
|
|
for module, function, args in [
|
|
("exllamav3.modules.gr_fn.gr_mix_hip", "compile_hsaco", ()),
|
|
("exllamav3.modules.attention_fn.qsa_prefill_hip", "compile_hsaco", ()),
|
|
("exllamav3.modules.ple_fn.ple_hip", "compile_hsaco", ()),
|
|
("exllamav3.vendor.fla.hip.gdn_fused_h_hip", "_compile", ("", "gfx1151")),
|
|
("exllamav3.vendor.fla.hip.kda_fused_h_hip", "_compile", ("", "gfx1151")),
|
|
]:
|
|
path = Path(getattr(importlib.import_module(module), function)(*args))
|
|
# HIP accepts ELF, offload bundles, and compressed offload bundles (CCOB).
|
|
assert path.read_bytes().startswith((b"\x7fELF", b"__CLANG_OFFLOAD_BUNDLE__", b"CCOB")), path
|
|
if lib is not None:
|
|
handle = ctypes.c_void_p()
|
|
assert lib.hipModuleLoad(ctypes.byref(handle), os.fsencode(path)) == 0, path
|
|
assert lib.hipModuleUnload(handle) == 0, path
|
|
print(f"OK: {module}", flush=True)
|