-
-
Notifications
You must be signed in to change notification settings - Fork 289
when to drop (or add) ppc support #2510
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
Comments
The bot adds ppc64le once and then moves on. IMHO, maintainers should feel free to drop support if they do not have the energy for it. People who need it can come and add it back if they like. |
I understand the sentiment. Whenever I looked at download numbers (e.g. 1, 2), PPC is at least a factor 10 behind the second-least-used platform, and less than 1-in-350 users overall. For example, using current libzlib downloads as a proxy:
The numbers are the same for openssl, qualitatively
OTOH, several 1000s of users isn't nothing either 🤷 Historically, we had a lot of problems with emulation in numpy/scipy/cvxpy, which at some point lead to dropped builds and/or skipped testing. In recent times, I've had less issues with PPC though. If a recipe builds on The fact that CUDA dropped support for PPC is relevant here as well, and we're missing certain key packages like pytorch too.
A couple of years ago when support was first added, there were (non-core) contributors who helped get the arches going on several feedstocks I maintained, but then disappeared. I felt responsible to keep thing running and wasted a lot of time on ppc support at the time. So it's easy as a maintainer to get "trapped" in that sense. I don't think it's realistic that conda-forge ever drops ppc support, but I'd be OK to empower maintainers to drop ppc support and reject it even if someone comes with a PR. Unless that person signs up for future maintenance, it will just mean ppc gets dropped at the next issue that comes up. |
What fraction of that is Conda Forge CI? According to the migration status, those both have 2.2K children, so it seems possible that building other |
It should be essentially 0. I don't know the specifics, but our downloads from our CI aren't (supposed to be) counted. The first ~10 downloads or so are due to various mirrors(?) or so (at least, I've never seen a main package with less than that), but after that it should only be cf-external users. |
Perhaps it should be, but I'm not sure it is. I just triggered a rebuild of slepc and all the petsc downloads incremented by one. It seems unlikely to me that something else downloaded all the ppc builds the exact same number of times the CI builds did in the same 20 minutes I was watching, when they only had 7 downloads before. It does seem like every CI download is counted. |
Yes my guess is that CI downloads are counted. |
i find that PPC64le struggles alot with graphics stack. My understanding is that PPC64le is exclusively used in data centers, so I've been liberal with dropping it when it causes me problems for those packages... |
I don't have the exact mechanics, but roughly: the first download is when the package makes it through the CDN, and as I mentioned
By "10", I literally mean ten. IME, anything <=10-12 downloads is completely unused (again, I don't know which factors exactly conspire for that to be the case).
Hm. I had thought that this was taken into account (and had convinced myself on this based on some anecdotal evidence). We'd be generating 100'000s of downloads daily, so that would make a very substantial chunk of our download numbers. |
Not at all scientific, and I'm not sure it's informative, but in the time since you posted numbers for openssl 3.5.0 (6 days), the download numbers have increased by:
with this number of non-cancelled builds per target platform on azure in a similar time frame:
As I understand it, during ci setup openssl gets downloaded for the build platform. Assuming all linux builds are cross-compiled (not the case, but probably close), that would only account for ~10k of 630k linux-64 downloads, and 7k of 33k osx-64 downloads. I don't know how common openssl is as a host dependency. Notably, ppc is the only platform where the build count exceeds the total download count. No other platform comes anywhere close. This obviously doesn't take into account lots of information, so it might be useless:
But I think another point in favor of CI installs being counted is that osx-64 is downloaded almost as much as osx-arm64, when ~all macs sold in the last 6 years have been arm, and the arm mac miniforge installer is about 10 times as popular as osx-64, while all mac CI builds for conda-forge still all run on osx-64. I suspect conda-forge CI accounts for a pretty large fraction of counted osx-64 downloads. |
Oops, I missed that there were 2 urls per platform. ARM mac downloads are only 50% higher than Intel. |
This is consistent with numbers I'm seeing across the board in recent months1.
I've been puzzled by the longevity of the osx-64 numbers, but OTOH, the latest macOS 15 still supports hardware from ~2018 onwards, and these old(er) devices are still around in big numbers2.
Regardless of the exact mechanics (i.e. whether it's downloads from the ci-setup, or build/host/run), I think that's a pretty solid argument that CI downloads are not being counted. :) Footnotes |
I know one user of ppc64le, @jeongseok-meta. Perhaps you want to share your "user story" so we can better understand one example of the need for ppc64le packages in the real world. |
i also have a friend that used to work at IBM that used ppc64le, but honestly, |
FWIW CUDA dropped ppc64le support entirely by CUDA 12.5. In my (personal) opinion the maintenance overhead of ppc packages on conda-forge is too high and we should drop it too sooner than later. |
I'm not sure I follow there. Due to cross compiling, only builds which have openssl in host or run dependencies (or the rare emulated builds) would increment the download count for arm/ppc. If most but not all packages depend on openssl, then slightly lower but similar order is exactly what I'd expect to see if all or at least most CI downloads were counted. So to me, these numbers indicate that CI downloads are counted and also account for a likely very large fraction of ppc installs. Since I seem to be able to reliably at-will increment download counts by triggering CI and watching anaconda.org numbers go up by the exact number of builds, I think we can confidently say that CI downloads are counted, at least up to some point. |
Yes for sure CI downloads are counted. Anaconda would have to track and form reject lists for the IP addresses of all of the microsoft-hosted azure, travis, and other CI provier workers to exclude them which seems a priori impossible or would require so much effort as to be not worth the cost. |
Thanks for pinging. I don't currently have a use case for ppc64le. I've just attempted to support it by ensuring its availability in the conda-forge ecosystem, and as such, I also have the same question regarding this issue. ;) |
ppc64le is used in supercomputers like Summit, Lassen by maintainers like @matthiasdiener. If a package is having specific problems with ppc64le, that's okay to drop. |
would it be acceptable to "split" the migrator for PPC64le away from the aarch migrator? |
Sure, that requires some coding on the bot to do that. |
I really tried to find where the bot reads the aarch migration file but couldn’t find it. Can you point me to it? |
Your question:
The
linux-ppc64le
target platform seems to regularly require the most effort of all platforms to keep working, while also being the least used by at least 1-2 orders of magnitude. I've been frustrated by this, and have started to remove support from my feedstocks if/when ppc failures are blocking otherwise working builds on platforms where I know people actually use these packages. Since I'm not actually sure the number of users of my ppc packages exceeds zero, it starts to feel pretty bad to spend all this volunteer effort on users who may not even exist.Is there any guidance for maintainers on how to decide if/when to support a platform for a given package, or drop it if it used to work but is now causing problems? And maybe how to best go about (temporarily) stopping builds on a platform? I know removing the
ppc
line from conda-forge.yml works, as doesskip: target_platform == 'linux-ppc64le'
, but I'm not sure what is best for bots and such, or if there's any information that should go elsewhere when dropping support, whether it's temporary, indefinitely, or permanently.The text was updated successfully, but these errors were encountered: