Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion backend/npu.py
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,9 @@ def linalg_to_bin_enable_npu_compile(linalg: str, metadata, opt):
callback_path = os.path.join(tmpdir, "libkernel.so")
multibuffer = metadata["multibuffer"]
_compile_option_list = []
if dump_ir:
_compile_option_list += [f"--mlir-print-ir-before-all"]
_compile_option_list += [f"--mlir-print-ir-after-all"]
_compile_option_list += [
f"--enable-auto-multi-buffer={multibuffer}",
]
Expand Down Expand Up @@ -681,6 +684,10 @@ def linalg_to_bin_enable_npu_compile(linalg: str, metadata, opt):
f"--disable-auto-inject-block-sync={disable_auto_inject_block_sync}"
]

unit_flag = metadata["unit_flag"]
if unit_flag is not None:
_compile_option_list += [f"--enable-hivm-unit-flag-sync={unit_flag}"]

disable_auto_cv_work_space_manage = metadata[
"disable_auto_cv_work_space_manage"
]
Expand All @@ -704,14 +711,16 @@ def linalg_to_bin_enable_npu_compile(linalg: str, metadata, opt):
print(f"DEBUG dump ir[bishengir-compile] command: {cmd_list}")
try:
ret = subprocess.run(cmd_list, capture_output=True, check=True, text=True)
if dump_ir:
dicp_utils._dump_stage_ir(ret.stderr, metadata["hash"], "bisheng.mlir")
except subprocess.CalledProcessError as e:
# Print compilation error details
print(f"bishengir-compile compilation failed with exit code {e.returncode}")
print(f"Stderr:\n{e.stderr}")
raise RuntimeError("bishengir-compile compilation failed") from e

if not Path(bin_path).is_file():
print(ret.stderr.decode("utf-8"))
print(ret.stderr)
if Path(callback_path).is_file():
lib = ctypes.CDLL(callback_path)
__get_metadata_attr_by_callback(
Expand Down Expand Up @@ -756,6 +765,7 @@ class NPUOptions:
multibuffer: bool = True
inject_barrier_all: bool = False
disable_auto_inject_block_sync: bool = False
unit_flag: bool = False
disable_auto_cv_work_space_manage: bool = False
enable_auto_bind_sub_block: bool = True

Expand Down