haasad / PyPardiso

Python interface to the Intel MKL Pardiso library to solve large sparse linear systems of equations
BSD 3-Clause "New" or "Revised" License
135 stars 20 forks source link

Installing pypardiso on arm architecture #44

Closed matnoel closed 2 years ago

matnoel commented 2 years ago

Hello,

I’m experiencing some difficulties to install pypardiso on MacOS with arm architecture (M1 processor).

I have already installed intel MKL but i still get this issue.

pip3 install pypardiso Collecting pypardiso Using cached pypardiso-0.4.1-py3-none-any.whl (10 kB) Requirement already satisfied: numpy in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from pypardiso) (1.22.4) Requirement already satisfied: scipy in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from pypardiso) (1.9.0) Using cached pypardiso-0.4.0-py3-none-any.whl (10 kB) Using cached pypardiso-0.3.3-py3-none-any.whl (10 kB) Requirement already satisfied: psutil in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from pypardiso) (5.9.1) Using cached pypardiso-0.3.2-py3-none-any.whl (10 kB) Using cached pypardiso-0.3.1-py3-none-any.whl (10 kB) ERROR: Cannot install pypardiso==0.3.1, pypardiso==0.3.2, pypardiso==0.3.3, pypardiso==0.4.0 and pypardiso==0.4.1 because these package versions have conflicting dependencies.

The conflict is caused by: pypardiso 0.4.1 depends on mkl pypardiso 0.4.0 depends on mkl pypardiso 0.3.3 depends on mkl-service pypardiso 0.3.2 depends on mkl-service pypardiso 0.3.1 depends on mkl

To fix this you could try to:

  1. loosen the range of package versions you've specified
  2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

I tried to add intel mkl to the path without any success :

export PATH="/opt/intel/oneapi/mkl/2022.1.0/bin/mkl_link_tool:${PATH}" export PATH="/opt/intel/oneapi/mkl/2022.1.0/lib:${PATH}"

Have you any ideas to solve this issue ?

Thanks in advance,

Matthieu

haasad commented 2 years ago

Hi Matthieu,

as far as I know mkl is not available at all for the M1 processors. MKL is the Intel Math Kernel Library, which is optimized for intel architecture and I don't think intel will make this available or port it to arm/M1.

I have already installed intel MKL but i still get this issue.

How did you install MKL? If you found a way to install it on M1 i would be very interested to know how to do that. The mkl package itself is not available on PyPI as you can check here: https://pypi.org/project/mkl/#files. However if you managed to manually install it you could try to install pypardiso without dependencies like so:

pip install numpy scipy
pip install --no-dependencies pypardiso

Please let me know if that works.

Otherwise if you're mostly interested in a way to speed up the calculation, I suggest to give https://github.com/scikit-umfpack/scikit-umfpack a try (instead of pypardiso). I don't have access to a M1 machine myself, but I have been told that scikit-umfpack works well (see e.g. this thread: https://github.com/LCA-ActivityBrowser/activity-browser/issues/705).

Cheers, Adrian

matnoel commented 2 years ago

Hi Adrian,

I tried your suggestion but it doesn't work for me. It seems like that I can't install mkl with an arm architecture.

Sorry for the delay in my reply, Matthieu