-
-
Notifications
You must be signed in to change notification settings - Fork 5
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: update package version to 0.1.4 and enable microarch-enabled and arm builds for all platforms #14
Conversation
…conda-smithy 3.44.6, and conda-forge-pinning 2024.11.18.19.00.37
…nda-forge-pinning 2024.11.18.19.00.37
@conda-forge-admin, please rerender |
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
Hi! This is the friendly automated conda-forge-webservice. I tried to rerender for you but ran into some issues. Please check the output logs of the GitHub actions workflow below for more details. You can also ping conda-forge/core for further assistance or you can try rerendering locally. The following suggestions might help debug any issues:
This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11911901191. |
recipe/meta.yaml
Outdated
# Modern arm processors (e.g. X Elite) have cache sizes more similar to the | ||
# M1 from Apple, thus we set TARGET to ARMV8A_APPLE_M1 | ||
- BLASFEO_TARGET=ARMV8A_APPLE_M1 # [aarch64 or arm64] |
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.
I am bit dubious on this, at least for Linux. Is this compatible with embedded arm boards, for example Raspberry PI or Jetson? We frequently use conda packages there.
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.
That's actually a good point. As far as I can see in the blasfeo source code, the only difference is in the config of the L1 and L2 cache. Hence, it probably makes sense to use ARMV8A_ARM_CORTEX_A76 (Raspberry Pi) on Linux and ARMV8A_APPLE_M1 everywhere else. For Windows, the higher end chips (e.g. X Elite) are probably the more accurate targets.
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.
Thanks for looking into this. For what I understood, all the architectures anyhow have NEON and VPFv4 SIMD, so there is not risk of "illegal instructions" kind of error (that is the thing I fear the most). If it is mostly a matter of which architecture (i.e. cache size) the compilation is more optimized, I guess your suggestions make sense. If we ever need more targeted builts, in the future we could also consider making ultra-specific builds that depend on the exact __archspec
, but I guess it is easier to start simple.
-DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^ | ||
-DCMAKE_BUILD_TYPE=Release ^ | ||
-DBUILD_TESTING:BOOL=ON ^ | ||
-DBLASFEO_TESTING:BOOL=ON ^ | ||
-DBLASFEO_TESTING:BOOL=OFF ^ |
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.
Given that we disable this, did you tested that an executable on Windows can consume the produced libraries well?
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.
I disabled this because of the potential arm build, but I can add it back and see if the CI has trouble there.
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.
If the problem is arm, we can add an if when we will add win-arm64 support.
Related error:
|
It seems like microarch_level might not be supported on Windows... I'll have to dig a bit deeper, though. But would be nice to have micro arch support on Windows. |
Apparently some work was done in archspec and conda to support this (see conda-forge/conda-forge.github.io#1261 (comment)), but some work is still needed for full support, see conda-forge/microarch-level-feedstock#3 and https://github.com/conda-forge/microarch-level-feedstock/blob/main/recipe/meta.yaml#L45-L48 . Anyhow, as we do not need the
|
It seems like, one can also do it manually, similar to https://github.com/AnacondaRecipes/llama.cpp-feedstock/blob/main/recipe/meta.yaml. I have to play a bit around with it, but this looks like it should work. |
@conda-forge-admin, please rerender |
…nda-forge-pinning 2024.11.18.19.00.37
If the test are not passing on Windows no problem for me, as long as we tested it once manually offline. |
It also seems like something fishy is also going on with AVX512 on linux:
|
@conda-forge-admin, please rerender |
…nda-forge-pinning 2024.11.18.19.00.37
@conda-forge-admin, please rerender |
Hi! This is the friendly automated conda-forge-webservice. I tried to rerender for you, but it looks like there was nothing to do. This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11916329122. |
Yes, that sounds like a regression similar to #8 . If we can replicate the problem outside of conda, probably we can report the problem upstream. In the meanwhile perhaps we can just skip AVX512 builds for now? Done that, I guess we are good to go? |
I think so, except we should probably test everything locally first before. Is there a way to get the build binaries so they can be tested locally? |
You can just set |
@conda-forge-admin, please rerender |
…nda-forge-pinning 2024.11.18.19.00.37
@conda-forge-admin, please rerender |
Hi! This is the friendly automated conda-forge-webservice. I tried to rerender for you, but it looks like there was nothing to do. This message was generated by GitHub actions workflow run https://github.com/conda-forge/conda-forge-webservices/actions/runs/11917792051. |
MacOS ARM build is working, and I tested the windows package on my local vm. MSVC is able to compile and link blasfeo successfully! I also looked into AVX512 again, and it looks like there is just a lot that isn't implemented for this architecture yet. Hence, if you don't use the implemented library calls, you can run into issues. Thus, it's probably best to not build for this target. Especially, if people expect the same behavior independent of CPU architecture. From my side, this can be merged. |
Indeed, see also giaf/blasfeo#182 (comment) . |
Great, let's merge so we can enable multi-platform support also on fatrop. Thanks a lot for the help! |
Checklist
0
(if the version changed)conda-smithy
(Use the phrase@conda-forge-admin, please rerender
in a comment in this PR for automated rerendering)This is a competing PR to #11 updating blasfeo and enabling microarch x86_64 and arm build on all platforms. I also took the liberty to add myself as maintainer.
Let's see if everything builds as expected...
Fix #4 .
Fix #2 .