If you use CmdStan on non-x86, non-arm64 Linux, speak up here!

Starting with Stan 2.28 in 2021, we’ve been producing CmdStan tarballs for the following “non-standard” platforms:

  • linux-armel
  • linux-armhf
  • linux-ppc64el
  • linux-mips64el
  • linux-s390x

The only difference is that these have a copy of stanc3 built for their platform in the ./bin/ directory.

Here’s how often they’ve been downloaded, summing over all releases since until today (2021-10-5 to 2024-12-16).

Platform Total download counts
linux-armel 410
linux-armhf 196
linux-mips64el 168
linux-ppc64el 952
linux-s390x 667
linux-arm64 10,218
Google Colab 6,554
All other platforms 1,433,348

Supporting the build for these platforms is not free (it is one of the things that is preventing the stanc3 compiler from being unicode-aware, for example), and it really seems like many of them are essentially unused.

My proposal is that Stan stop building these ourselves. Cmdstan releases would only have tarballs for the final three rows of the above table. Users on these other platforms would need to emulate the compiler or build it from source. I’d like to hear from any of those users who are currently using it first, though

1 Like

It’s not too bad to create that tarball, assuming it is all documented. Even better would be a bash or python script that they can use on their system to build the tarball.

What % of our compute budget goes to supporting these platforms today? The support for unicode is a good example of what we’d get by removing these builds. Is there anything else that we get by removing these? For example, additional compute budget to do X, different enhancements (such as unicode support), etc. I’m sure @SGB can weigh in here too.

I’m for this proposal, I just want to understand any additional benefits to the project.

To be clear, creating the cmdstan tarball is a trivial step, once the stanc CI has built executables for those platforms.

That CI is sort of a ticking timebomb, unfortunately. It mostly works, but if it doesn’t (or if we need to add a dependency to the compiler), it quickly can swallow a week of my development time. Sometimes I can sort it out, and sometimes I can’t, like in the case of the Unicode libraries

2 Likes