1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
import ctypes
import ctypes.util
import os
import pathlib
import sys
from mlir_finch.ir import Context
from mlir_finch.passmanager import PassManager
DEBUG = bool(int(os.environ.get("DEBUG", "0")))
CWD = pathlib.Path(".")
finch_lib_path = f"{sys.prefix}/lib/python3.{sys.version_info.minor}/site-packages/lib"
ld_library_path = os.environ.get("LD_LIBRARY_PATH")
ld_library_path = f"{finch_lib_path}:{ld_library_path}" if ld_library_path is None else finch_lib_path
os.environ["LD_LIBRARY_PATH"] = ld_library_path
MLIR_C_RUNNER_UTILS = ctypes.util.find_library("mlir_c_runner_utils")
if os.name == "posix" and MLIR_C_RUNNER_UTILS is not None:
MLIR_C_RUNNER_UTILS = f"{finch_lib_path}/{MLIR_C_RUNNER_UTILS}"
SHARED_LIBS = []
if MLIR_C_RUNNER_UTILS is not None:
SHARED_LIBS.append(MLIR_C_RUNNER_UTILS)
libc = ctypes.CDLL(ctypes.util.find_library("c")) if os.name != "nt" else ctypes.cdll.msvcrt
libc.free.argtypes = [ctypes.c_void_p]
libc.free.restype = None
SHARED_LIBS = []
if DEBUG:
SHARED_LIBS.append(MLIR_C_RUNNER_UTILS)
OPT_LEVEL = 0 if DEBUG else 2
# TODO: remove global state
ctx = Context()
pm = PassManager.parse(
"""
builtin.module(
sparse-assembler{direct-out=true},
sparsifier{create-sparse-deallocs=1 enable-runtime-library=false}
)
""",
context=ctx,
)
|