FLAMEGPU / FLAMEGPU2

FLAME GPU 2 is a GPU accelerated agent based modelling framework for CUDA C++ and Python
https://flamegpu.com
MIT License
99 stars 19 forks source link

ARM pyflamegpu binary wheels (Cross-compilation) #1174

Open ptheywood opened 5 months ago

ptheywood commented 5 months ago

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.

ptheywood commented 1 month ago

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/