storm icon indicating copy to clipboard operation
storm copied to clipboard

Compiling on Apple Silicon

Open tquatmann opened this issue 2 years ago • 11 comments

I propose to document the current state of compiling on apple silicon without emulation in this issue.

How to compile (April 2023)

Storm compiles natively on ARM-based apple silicon processors. However, a few points need to be considered:

  • Make sure you have the latest version of Storm (April 2023 or later)
  • Dependencies need to be installed using the arm version of homebrew. ~~Skip cln and ginac as they do not have an ARM version supported by homebrew~~
  • Make sure that you use an arm compiled cmake binary (check with where cmake and file path/to/cmake)
  • ~~Carl needs to be build without cln and ginac. This should be the default once this PR is merged~~ The latest versions of CLN and GiNaC support Apple Silicon.
  • If you previously had an x86 version installed, you need to re-build storm (and carl) from scratch. For this, remove the corresponding build folders and invoke the building steps.
  • Examine the cmake output. It might be that cmake found an x86 version of carl or another dependency. Homebrew dependencies should normally be found in /opt/homebrew, not in /usr/local/.
  • Contact us at [email protected] or on github in case of issues.

TODO list for official support:

  • [x] merge PR #273
  • [x] make installation of carl and storm without cln and ginac more straightforward (ideally, these dependencies are disabled automatically if compiling on M1 is detected).
  • [x] Assess if it helps to set CMAKE_OSX_ARCHITECTURES to arm64. Resolved: Appears to work without
  • [x] I had problems with setting -DSTORM_FORCE_SHIPPED_CARL=ON when compiling for arm: carl did not compile due to some eigen related issue.
  • [x] Some includes are taken from the x86 installation. For example, I ran into a known issue related to boost that should have already been fixed in my boost installation. The "solution" was to upgrade my x86 boost installation. Resolved: Can not be replicated anymore. Might have been an issue with an older or with an x86 cmake version
  • [x] clang option -march=native does not seem to work yet which is why -DSTORM_PORTABLE was required for me. ~Also, the jit engine doesn't work for that reason, which also lets the tests fail~ (see PR #292)
  • [x] Check if stormpy works
  • [x] The Homebrew formula(s) for Storm and Carl need to be updated as well
  • [ ] Adapt Website documentation
  • [ ] fix or work around issue #354

tquatmann avatar Aug 03 '22 05:08 tquatmann

Hi Tim,

great progress. Could you add an item regarding stormpy on the TODO list. At least it would be good if we have clarity on whether this will work when writing the documentation.

We first need to detect Apple silicon. One option is https://cmake.org/cmake/help/latest/envvar/CMAKE_APPLE_SILICON_PROCESSOR.html#envvar:CMAKE_APPLE_SILICON_PROCESSOR

but that requries CMAKE 3.19.

Thoughts?

sjunges avatar Aug 03 '22 06:08 sjunges

Since PRs #323 and #273 are finally merged now, natively building on Apple Silicon should kind of work now. This still needs some testing, though.

tquatmann avatar Mar 27 '23 15:03 tquatmann

Regarding CLN: https://www.ginac.de/pipermail/cln-list/2023-March/000803.html, there seems to be some progress

sjunges avatar Mar 27 '23 18:03 sjunges

I'm compiling on Apple Silicon just fine and I can no longer reproduce the issues I had before when using a shipped carl version. I guess that problem solved itself.

The test SparseMaPcaaMultiObjectiveModelCheckerTest.serverRationalNumbers fails due to an issue in Eigen v3.3.9. I worked around this in PR #349

tquatmann avatar Apr 13 '23 09:04 tquatmann

CLN support is still lagging behind; one could appearantly install this from git: https://www.ginac.de/pipermail/cln-list/2023-April/000815.html

sjunges avatar Apr 13 '23 09:04 sjunges

I have been using this with stormpy now for quite some while :-)

sjunges avatar Oct 05 '23 07:10 sjunges

The typical problem that people seem to run into is that libraries compiled for x86/Rosetta are included, which leads to strange errors down the line. I wonder if there is a simple way to spot this during configuration.

It would definitively help resolve https://github.com/moves-rwth/storm/issues/419

sjunges avatar Nov 12 '23 20:11 sjunges

Can we add https://github.com/moves-rwth/storm/issues/354 this to the checklist here?

sjunges avatar Nov 12 '23 20:11 sjunges

The latest version of CLN seems to support ARM now, see ChangeLog

volkm avatar Jan 30 '24 14:01 volkm

I just installed storm w/ CLN support. Seems to work so far :)

tquatmann avatar Feb 21 '24 11:02 tquatmann