New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ENH: Add support for windows on arm targets #19513
Conversation
IIRC, we are still waiting for azure to add support for Windows on arm so that we can test it. It has been in the pipeline for several months. . . |
Patch LGTM. Probably need to wire up an ARM64/Windows host to really know. @nsait-linaro do you have a suitable system locally and does it pass all tests? |
Yes, Please see test results below
The failing test case seems to be due to a c runtime issue. The precision for In the meantime we might need to workaround the issue in the test. Either we can skip the test or make one small change to the testcase as shown below.
Any recommendation on how to progress ? |
In Linaro, we have a couple of windows on arm machines and might be able to set up a CI flow. I think this patch doesn't have to be blocked due to CI as it is not introducing any regression and works locally. Do you know who would be the right person to talk to regarding setting up CI for WoA targets? |
You can either conditionally skip the test or set the tolerance conditional on Win/ARM64. The latter is probably more useful. |
…dows C RT for arm64
Tests are all passing and can be merged if there are no concerns. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Other than adding a comment for the new MSVC-specific macro, LGTM. Does mingw64 support ARM compilation?
Co-authored-by: Matti Picus <matti.picus@gmail.com>
I don't think mingw64 has support for arm targets yet. I am not sure though. |
LGTM and hopefully could be backported to 1.21.x so that Windows ARM users could have NumPy. |
Does OpenBLAS support ARM64 on windows? In order to truly support this we should have some kind of BLAS backend |
I was wondering if there are any Fortran compilers for Windows ARM64. This would be a big blocker for SciPy I think. |
flag-new has support for windows arm64. I have used build from https://github.com/kaadam/flang/releases/tag/v0.1 and worked |
Unfortunately, OpenBLAS doesn't support arm64/windows yet. This could be a blocker for scipy and related packages. |
I second support for early merge. NumPy + Lapack Lite is a lot better Python without NumPy. It also starts letting downstream projects accept patches that would be necessary for Win/ARM64, e.g., pandas, if needed. |
This needs a |
Updated branch with release notes |
Thanks @nsait-linaro . |
* add support for windows on arm targets * Philox: Use _umulh intrinsic for ARM64 target * CPU Detection: Refactor to avoid separate pre-processor definition for WoA * adapt test_dragon4 to avoid using pow (**) to workaround issue in windows C RT for arm64 * Update numpy/core/include/numpy/npy_cpu.h Co-authored-by: Matti Picus <matti.picus@gmail.com> * add release note for numpy windows/arm64 support * Update 19513.new_feature.rst Co-authored-by: Matti Picus <matti.picus@gmail.com> Co-authored-by: Charles Harris <charlesr.harris@gmail.com>
I've managed to build OpenBLAS (BLAS+LAPACK) for win-arm64 and configured NumPy to use it with site.cfg. Tests all are passing. But I wanted to confirm if numpy is really using the LAPACK routines. Does anyone know what would be the best way to do a quick sanity test to check this specifically? @charris , @mattip , @bashtage - could you help ? |
If you built it like our CI does, you should have a dll in |
You could turn on open blas debug information to see that it is loaded |
If tools like process explorer are available for ARM, you could also check that the dll is loaded. |
No description provided.