From b15dd11c5392c8e3dca5cd037f3a7728631cf30a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Sok=C3=B3=C5=82?= Date: Tue, 22 Oct 2024 15:43:09 +0000 Subject: [PATCH] Use wheel from GitHub release --- .github/workflows/ci.yml | 24 ++++++++++++------------ ci/environment.yml | 2 +- sparse/mlir_backend/__init__.py | 2 +- sparse/mlir_backend/_common.py | 2 +- sparse/mlir_backend/_constructors.py | 6 +++--- sparse/mlir_backend/_core.py | 14 ++++++++++++-- sparse/mlir_backend/_dtypes.py | 2 +- sparse/mlir_backend/_ops.py | 14 +++++++------- 8 files changed, 38 insertions(+), 28 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7497d2191..2d243440f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,20 +11,20 @@ jobs: strategy: matrix: os: ['ubuntu-latest'] - python: ['3.10', '3.11', '3.12'] + python: ['3.10'] # , '3.11', '3.12' pip_opts: [''] numba_boundscheck: [0] - include: - - os: macos-latest - python: '3.10' - - os: windows-latest - python: '3.10' - - os: ubuntu-latest - python: '3.10' - numba_boundscheck: 1 - - os: ubuntu-latest - python: '3.10' - pip_opts: 'numpy<2' + # include: + # - os: macos-latest + # python: '3.10' + # - os: windows-latest + # python: '3.10' + # - os: ubuntu-latest + # python: '3.10' + # numba_boundscheck: 1 + # - os: ubuntu-latest + # python: '3.10' + # pip_opts: 'numpy<2' fail-fast: false runs-on: ${{ matrix.os }} env: diff --git a/ci/environment.yml b/ci/environment.yml index cb49a1e54..2827fa375 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -12,7 +12,7 @@ dependencies: - pytest - pytest-cov - pytest-xdist - - mlir-python-bindings==19.* - pip: - finch-tensor >=0.1.31 - pytest-codspeed + - https://github.com/nullplay/Finch-mlir/releases/download/latest/mlir_finch-0.0.1-cp310-cp310-linux_x86_64.whl diff --git a/sparse/mlir_backend/__init__.py b/sparse/mlir_backend/__init__.py index 86b429652..757a36647 100644 --- a/sparse/mlir_backend/__init__.py +++ b/sparse/mlir_backend/__init__.py @@ -1,5 +1,5 @@ try: - import mlir # noqa: F401 + import mlir_finch # noqa: F401 except ModuleNotFoundError as e: raise ImportError( "MLIR Python bindings not installed. Run " diff --git a/sparse/mlir_backend/_common.py b/sparse/mlir_backend/_common.py index f78ac9918..a00d91ed8 100644 --- a/sparse/mlir_backend/_common.py +++ b/sparse/mlir_backend/_common.py @@ -4,7 +4,7 @@ import weakref from dataclasses import dataclass -from mlir import ir +from mlir_finch import ir class MlirType(abc.ABC): diff --git a/sparse/mlir_backend/_constructors.py b/sparse/mlir_backend/_constructors.py index e2afbda2a..cdf0a8d22 100644 --- a/sparse/mlir_backend/_constructors.py +++ b/sparse/mlir_backend/_constructors.py @@ -2,9 +2,9 @@ from collections.abc import Iterable from typing import Any -import mlir.runtime as rt -from mlir import ir -from mlir.dialects import sparse_tensor +import mlir_finch.runtime as rt +from mlir_finch import ir +from mlir_finch.dialects import sparse_tensor import numpy as np import scipy.sparse as sps diff --git a/sparse/mlir_backend/_core.py b/sparse/mlir_backend/_core.py index 16e6720b3..b73760d00 100644 --- a/sparse/mlir_backend/_core.py +++ b/sparse/mlir_backend/_core.py @@ -2,14 +2,24 @@ import ctypes.util import os import pathlib +import sys -from mlir.ir import Context -from mlir.passmanager import PassManager +from mlir_finch.ir import Context +from mlir_finch.passmanager import PassManager DEBUG = bool(int(os.environ.get("DEBUG", "0"))) CWD = pathlib.Path(".") +LD_ENV_PATH = f"{sys.prefix}/lib/python3.10/site-packages/lib" + +if "LD_LIBRARY_PATH" in os.environ: + os.environ["LD_LIBRARY_PATH"] = f"{LD_ENV_PATH}:{os.environ['LD_LIBRARY_PATH']}" +else: + os.environ["LD_LIBRARY_PATH"] = LD_ENV_PATH + MLIR_C_RUNNER_UTILS = ctypes.util.find_library("mlir_c_runner_utils") +if os.name == "posix": + MLIR_C_RUNNER_UTILS = f"{LD_ENV_PATH}/{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 diff --git a/sparse/mlir_backend/_dtypes.py b/sparse/mlir_backend/_dtypes.py index 2ab414016..487025b65 100644 --- a/sparse/mlir_backend/_dtypes.py +++ b/sparse/mlir_backend/_dtypes.py @@ -3,7 +3,7 @@ import sys import typing -from mlir import ir +from mlir_finch import ir import numpy as np diff --git a/sparse/mlir_backend/_ops.py b/sparse/mlir_backend/_ops.py index 6a999c944..cc1c7f808 100644 --- a/sparse/mlir_backend/_ops.py +++ b/sparse/mlir_backend/_ops.py @@ -1,9 +1,9 @@ import ctypes -import mlir.execution_engine -import mlir.passmanager -from mlir import ir -from mlir.dialects import arith, func, linalg, sparse_tensor, tensor +import mlir_finch.execution_engine +import mlir_finch.passmanager +from mlir_finch import ir +from mlir_finch.dialects import arith, func, linalg, sparse_tensor, tensor import numpy as np @@ -67,7 +67,7 @@ def add(a, b): if DEBUG: (CWD / "add_module_opt.mlir").write_text(str(module)) - return mlir.execution_engine.ExecutionEngine(module, opt_level=2, shared_libs=[MLIR_C_RUNNER_UTILS]) + return mlir_finch.execution_engine.ExecutionEngine(module, opt_level=2, shared_libs=[MLIR_C_RUNNER_UTILS]) @fn_cache @@ -92,7 +92,7 @@ def reshape(a, shape): if DEBUG: (CWD / "reshape_module_opt.mlir").write_text(str(module)) - return mlir.execution_engine.ExecutionEngine(module, opt_level=2, shared_libs=[MLIR_C_RUNNER_UTILS]) + return mlir_finch.execution_engine.ExecutionEngine(module, opt_level=2, shared_libs=[MLIR_C_RUNNER_UTILS]) @fn_cache @@ -120,7 +120,7 @@ def broadcast_to(in_tensor): if DEBUG: (CWD / "broadcast_to_module_opt.mlir").write_text(str(module)) - return mlir.execution_engine.ExecutionEngine(module, opt_level=2, shared_libs=[MLIR_C_RUNNER_UTILS]) + return mlir_finch.execution_engine.ExecutionEngine(module, opt_level=2, shared_libs=[MLIR_C_RUNNER_UTILS]) def add(x1: Tensor, x2: Tensor) -> Tensor: