msys2 / MINGW-packages

Package scripts for MinGW-w64 targets to build under MSYS2.
https://packages.msys2.org
BSD 3-Clause "New" or "Revised" License
2.27k stars 1.22k forks source link

Add intel-oneapi-mkl #19618

Closed 3rav closed 7 months ago

3rav commented 9 months ago

Package name

intel-oneapi-mkl

Brief description of package

Please add like in archlinux: https://archlinux.org/packages/extra/x86_64/intel-oneapi-mkl/

PKGBUILD file: https://gitlab.archlinux.org/archlinux/packaging/packages/intel-oneapi-mkl/-/blob/main/PKGBUILD?ref_type=heads

or like in python: https://pypi.org/project/mkl/2024.0.0/#files

URL for package's homepage

https://software.intel.com/content/www/us/en/develop/tools/oneapi.html

Provide a basic test case to validate the package's functionality.

No response

MINGW environments where you need the package

Are you willing to submit a PR?

Probably not too advanced

Biswa96 commented 9 months ago

The ArchLinux page shows "Installed Size: 3.2 GB". Is it possible to compile in CI's time limit?

MehdiChinoune commented 9 months ago

They repackaged a proprietary software. Something we couldn't do because Intel MKL on Windows is compatible with MSVC not mingw/gcc.

3rav commented 9 months ago

In my case, I need several .dll libraries and header files to compile the CalculiX program and to prepare a package for mingw, the .dll libraries include the PARDISO solver.

It would be nice if these ready-made libraries were available in the msys2.ming repo

Path to .dll library: mkl/2023.0.0/redist/intel64

Like in python: https://pypi.org/project/mkl/2024.0.0/#files and for includes https://pypi.org/project/mkl-include/#files

image

MehdiChinoune commented 9 months ago

It's not compatible with MinGW-w64 and It's open-source so we could build it.

3rav commented 9 months ago

I don't understand something, these .dll libraries work locally on my computer (msys2/mingw or other version of CalculiX in: https://cfturbo.com/software/cfturbo-fea or https://www.mecway.com/) and the package is available in the archlinux and python repo

Update: Is there any way to install these python packages in msys2/mingw?

ImperatorS79 commented 9 months ago

I don't understand something, these .dll libraries work locally on my computer (msys2/mingw) and the package is available in the archlinux and python repo

I tried to use Intel MKL using mingw's gcc one or two years ago and I had multiple problems with the following symbols missing:

__GSHandlerCheck()
__security_check_cookie(unsigned *p)
unsigned *__security_cookie

While defining those functions/variables somewhere in a .c made my project compiles, the pardiso solver crashed... So I wonder how you managed to compile CalculiX.

3rav commented 9 months ago

I don't understand something, these .dll libraries work locally on my computer (msys2/mingw) and the package is available in the archlinux and python repo

I tried to use Intel MKL using mingw's gcc one or two years ago and I had multiple problems with the following symbols missing:

__GSHandlerCheck()
__security_check_cookie(unsigned *p)
unsigned *__security_cookie

While defining those functions/variables somewhere in a .c made my project compiles, the pardiso solver crashed... So I wonder how you managed to compile CalculiX.

Send me your Makefile in a private message and I will try to correct it if necessary

3rav commented 9 months ago

@MehdiChinoune

  1. Is there any way to install these python packages in msys2/mingw?
  2. May I just download such a package (python: https://pypi.org/project/mkl/2024.0.0/#files), unpack it and use its .dll libraries and .h in a new mingw package?
MehdiChinoune commented 9 months ago

In general we don't repackage proprietary software with few exceptions when an open-source project requires hardly that software. That was allowed with android-tools because mingw-w64 has no implementation for ATL/MFC.

3rav commented 9 months ago

CalculiX FEA program can use this solvers (this program does not have its own distribution for Windows):

Intel PARDISO (from oneAPI/oneMKL), it is modern, the most stable, and almost the fastest (https://calculix.discourse.group/t/pastix-vs-pardiso-performance/177/6 or https://mecway.com/forum/discussion/836/mecway-pc-benchmarks).

If it technically works, please grant an exception for the use of these .dll files?

License freeware under ISSL, from: https://en.wikipedia.org/wiki/Math_Kernel_Library ISSL: https://software.intel.com/sites/landingpage/pintool/intel-simplified-software-license.txt

"The library was available in a standalone form, free of charge under the terms of Intel Simplified Software License[3] which allow redistribution.[10]"

Speed: spooles vs PARDISO https://x.com/f_langf/status/1488905077402255363?s=20

ImperatorS79 commented 9 months ago

I don't understand something, these .dll libraries work locally on my computer (msys2/mingw) and the package is available in the archlinux and python repo

I tried to use Intel MKL using mingw's gcc one or two years ago and I had multiple problems with the following symbols missing:

__GSHandlerCheck()
__security_check_cookie(unsigned *p)
unsigned *__security_cookie

While defining those functions/variables somewhere in a .c made my project compiles, the pardiso solver crashed... So I wonder how you managed to compile CalculiX.

Send me your Makefile in a private message and I will try to correct it if necessary

I don't know how to send a private message via github. I am using the following .cmake to find and link the mkl: https://github.com/arrayfire/arrayfire/blob/master/CMakeModules/FindAF_MKL.cmake

3rav commented 9 months ago

In general we don't repackage proprietary software with few exceptions when an open-source project requires hardly that software. That was allowed with android-tools because mingw-w64 has no implementation for ATL/MFC.

I have an almost working package, unfortunately I have a rather strange error when I copy the .exe and .dll files from the pkg folder (for test run), when I run the program I get the error 0xc000007b related to the libiomp5md.dll library, however, when I copy this library from the src location, everything works fine.

Something seems to be damaged in this library after package(), any suggestions?

3rav commented 9 months ago

Intel PARDISO (from oneAPI/oneMKL), it is modern, the most stable, and almost the fastest (https://calculix.discourse.group/t/pastix-vs-pardiso-performance/177/6 or https://mecway.com/forum/discussion/836/mecway-pc-benchmarks).

Recipe: https://github.com/msys2/MINGW-packages/pull/19673#issue-2069046008

MehdiChinoune commented 7 months ago

As I said It's not possible because It's ABI incompatible proprietary software.