FLAMEGPU/FLAMEGPU2

ARM pyflamegpu binary wheels (Cross-compilation)

Opened this issue · 1 comments

Grace-Hopper and Jetson systems have an ARM host, rather than x86-64.

Github actions does not provide ARM runners, so cross compilation would be the best option for generating binary wheels for ARM with our current CI setup.

We know that current (v2.0.0-rc.1) FLAME GPU 2 can be built nativley and executed on ARM (both jetson and grace-hoppper), but have not previously attempted cross-compilation.

CMake does support corss compialtion via Tollchain files, but we would likely also have to change use of find_library/find_file/find_path. We may also need to make CMake changes based on CMAKE_HOST_SYSTEM env vars etc.

Only supporting Linux->linux cross compilation would make life much simpler.

https://cmake.org/cmake/help/book/mastering-cmake/chapter/Cross%20Compiling%20With%20CMake.html

CMAKE_CROSSCOMPILING will almost certainly be relevant.

This will have some overlap with changes required for #1131 (conda-forge uses cross compilation by default, but we overrode relevant settings somewhere to make our find_package etc behave propperly in a non-cross compilation case.

Arm64 Github Actions runners are now in a public beta available for teams/enterprise customers for now, with wider roll out by the end of the year.

They are "larger runners" though so cost £ (but 37% cheaper than x64 runners),

https://github.blog/changelog/2024-06-03-actions-arm-based-linux-and-windows-runners-are-now-in-public-beta/
https://github.blog/2024-06-03-arm64-on-github-actions-powering-faster-more-efficient-build-systems/