-
-
Notifications
You must be signed in to change notification settings - Fork 280
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
CentOS 8 #1432
Comments
CentOS 8 EOL is December 31 of this year. I don't think implementing support for it is well-motivated. Vendors will have to move on from it anyways. |
Right so maybe we need to use an alternative. Rocky Linux has come up before. Also here's a longer post on alternatives: https://haydenjames.io/what-centos-alternative-distro-should-you-choose/ |
However it's worth noting we are using upstream Docker images for these architectures & CUDA versions. So the OS is already fixed Edit: Raised upstream issue ( https://gitlab.com/nvidia/container-images/cuda/-/issues/123 ) about this |
@chenghlee What is anaconda moving to? Mirroring that is likely a good idea. |
A suggestion brought up on the NVIDIA CUDA image repo upstream would be to look at RedHat's Universal Base images, which are also being supplied. Have not looked at these closely yet, but that might be something else to consider |
Anaconda's current plan is to stay on CentOS/RHEL 7 (glibc 2.17) as much as possible for the packages on repo.anaconda.com (defaults); if we need a newer glibc for some reason, we'll likely look at Debian 9 or 10. |
Debian 9 is not supported by CUDA: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#system-requirements The only OS supported by CUDA across x86_64, PPC64, and ARM SBSA is RHEL 8 (since CentOS 8 isn't really a thing anymore). |
Debian 9 is also EOL in about a year and 10 uses the same base glibc version as CentOS 8, so I'd advice to go for 10 when really needed. |
Hey, I would like to raise again this issue. Do we know which OS should we use? Should we use |
When we had discussed supporting other architectures that needed CentOS 8 for deployment previously, we came to the conclusion that we may be able to actually build things on CentOS 7. We just wouldn't be able to load any libraries (via a Python There are a few reasons we were thinking of this (admittedly somewhat hacky solution). First is CentOS 8's EOL is really quite soon (December 2021; yes this year). Also the new CentOS release system, CentOS Stream, really doesn't work well for our use case (of building with a really old GLIBC that is supported by the vast majority of systems out there). So we may find ourselves abandoning CentOS for some other solution in the future. What that future solution will be is somewhat unclear, but there are a few options being considered (Debian, Rocky Linux, UBI, etc.) Second adding a new OS (like CentOS 8) involves doing a fair bit of work. Namely building docker images, rebuilding the compiler toolchain, building CDTs, etc.. So for something that won't be around for more than a few months, it really isn't worth undertaking that work at least not in conda-forge as a whole. There are probably more reasons that I'm forgetting, but those are already fairly significant considerations. Anyways so to tie a bow on this we might want to try just using CentOS 7 in the case where we need it and see how that goes. That said, it still isn't quite that simple, but maybe we can discuss the other points offline |
I am under the impression that we can just install a CUDA runfile distribution in a vanilla cos7 image. I think this would work for x86-64, but I am less certain about aarch64 or ppc64le. |
The current Docker images are covered under the NVIDIA licensing agreement. Am not sure that would be true of some custom made image. This is something we would need to figure out |
Building the packages on a CentOS 7 should work, but the issue I'm facing right now is that some packages (i.e.
|
Yeah I think not running the tests or running parts of the tests that don't require library loading would be preferable. One other thing we might consider is checking for GLIBC version or try loading the libraries (and not error if that fails). This can be useful as we can still opt to run these tests on systems with a new enough GLIBC For example CuPy has checks similar to this where it won't run some tests if a GPU is missing. This allows us to still run the tests on systems that have a GPU. We can also use the |
The massively reduced support for CentOS 8 is really a pity for this next step. Assuming AlmaLinux and/or RockyLinux can uphold their promises of 1:1 compatibility with the pre-stream CentOS, I still think it would be interesting to try them out? So far, both only support x86 & aarch64, haven't found anything about ppc yet. RockyLinux just released 8.4rc, AlmaLinux was a bit faster there (though aarch64 support doesn't show up on the main page yet). |
Rocky Linux & Alma Linux 8.4 have been released a few days ago (both for x86 & aarch64). No update about PPC support, but I've asked on their respective discourse servers. Regarding compatibility, here are relevant quote from their websites (emphasis mine):
Alma Linux:
Since both promise 1:1 compat so prominently, could this not be an option? |
Update: Rocky Linux is planning a PPC release soon. |
Reviving the thread. PEP-600 has opened a way to build binaries targeting newer versions of GLIBC. It's high time conda ecosystem evolved beyond GBLIC 2.17 to accommodate Python packages built with newer toolchain whose runtime libraries require GLIBC > 2.17. Settling the question of what's the next version is hard, but must it be the single version everyone must agree to? Is it possible for conda to have multiple sysroot versions for the same platform? |
We can have multiple sysroots at once, so that helps a lot. Right now we support 2.12 and 2.17. I suspect the next one to add is one of 2.27 or 2.28. We have a related question of adopting a new distribution from which to build CDTs and supply our default linux environment. |
A lot of similar discussions happened for manylinux_2_28 (successor to manylinux2014 == manylinux_2_17), which have some relevant information1, particularly the realisation that AlmaLinux / RockyLinux / rhubi are all effectively a full-fledged replacement to CentOS2. Even though we technically could have several, I think it would be easiest to just choose one of those RHEL-ABI-compatible distros, which would also continue in the spirit of why CentOS was a good choice previously. Footnotes
|
We could look at AlmaLinux 8, which has |
Yeah alma 8 is a good choice. |
I just saw that as of LLVM 17, libcxx only supports glibc >=2.24. LLVM 17 will be released in a couple months. The good thing is that (compared to e.g. #1844), libcxx-on-linux isn't part of our default compiler stack. GCC & libstd++ claim to only require the 20+ year old glibc 2.3, though I'm doubtful if anyone still tests gcc with something that old. OTOH, libstdc++ docs also say:
In fact, since Microsoft finally started supporting C11/C17 a few years ago (thus unblocking cross-platform projects from having to stay on C89), several projects are now moving to require C11 (including CPython), which needs a newer glibc, c.f. e.g. conda-forge/linux-sysroot-feedstock#44. While I don't want to rehash the discussion in #1436, the EOL of CentOS 7 is now about a year away, from which point on the bitrot of support for old glibc (resp. the move towards requiring C11+) will likely accelerate even more. We definitely need newer sysroots soon. |
Last I checked alma 8 was a good choice for us. There is a list of todo items for whatever we choose
I am sure missing stuff but that's a start. |
This also aligns with manylinux 2_28 which is AlmaLinux 8 based. This gives us glibc 2.28 which does have a few possible incompatibilities:
|
Yup, I linked the discussion to the pypa/manylinux issue where this was decided a bit further up.
In the context of the discussion from #1436, this is not about raising the lower bound to 2.28, but about enabling to build packages that (for whatever reason) require glibc >2.17. IOW, the upstream maintainers have already lifted their floor past our current ceiling and so we need to have a way to build such packages. But dropping CentOS 6, much less 7, is a whole 'nother ballpark1. Footnotes
|
Thanks for adding this to the agenda, Axel! 🙏 |
A few use cases for CentOS 8 have come up recently. Namely CUDA support for ARM and PPC64LE. Potentially more use cases will show up in the future. Am opening this issue so that we can discuss how best to handle this need
cc @jaimergp @kkraus14 @isuruf @beckermr @conda-forge/core
The text was updated successfully, but these errors were encountered: