sxs-collaboration / spectre

SpECTRE is a code for multi-scale, multi-physics problems in astrophysics and gravitational physics.
https://spectre-code.org
Other
162 stars 191 forks source link

Supercomputer support for compilers and python #442

Open nilsdeppe opened 6 years ago

nilsdeppe commented 6 years ago

Feature request:

All HPC systems we use currently support GCC 6.3 or newer, so I am requesting making that the requirement. Here is a list of systems and their compiler versions:

Cluster GCC Intel CMake Python
Anvil 11.2 3.20 3.9.5
Caltech HPC 9.2.0 19.0.5 3.18.0 3.8.5
Expanse 10.2 19.1.1 3.18 3.8.5
Frontera 9.1.0 19.0.4 3.20.3 3.8.2
Ocean 11.3.0 3.24.1 3.9.5
Wheeler 9.3.0 16.0.3 3.18.2 3.9.12

Component:

wthrowe commented 6 years ago

As someone who uses weird compiler setups, I have no objection to this.

Which entries in your table do we currently use? I assume not Comet at least.

nilsdeppe commented 6 years ago

We currently use Wheeler, Graham and Cedar are in Canada so Harald will want those, Stampede2 is of interest because it has KNL so we'll need that, BlueWaters is interesting for scaling but it will likely be retired over the course of a year or two. We have used Comet in the distant past, but since their compiler is so old we're stuck installing our own GCC anyway so it doesn't really matter there. The list is supposed to represent systems we actually care about supporting with minimal need to install our own compiler.

nilsvu commented 4 years ago

@sxs-collaboration/spectre-core-devs do you think we can drop GCC 6 support at this point? It would reduce the number of CI builds and the human effort of working around GCC 6 issues.

kidder commented 4 years ago

yes @nilsdeppe and I discussed this and we agree that dropping gcc6 is a good idea

kidder commented 4 years ago

we should also drop clang4 and add clang10

nilsvu commented 4 years ago

Is one of you going to put in a PR or should I?

nilsdeppe commented 4 years ago

I am not planning to, and from what Larry said yesterday when we talked about this, it sounded like he was hoping you would be so kind :)

nilsvu commented 3 years ago

@nilsdeppe @wthrowe @kidder any objections to requiring CMake 3.12? It would make finding Python a lot more robust because it introduces FindPython. Even better would be CMake 3.15 because it adds NumPy finding to FindPython. Thoughts?

nilsdeppe commented 3 years ago

The heuristic that @kidder and I came up with is that for system-supplied (i.e. not header-only or libs we have to compile anyway) that we would bump versions ~3 years after they were released. Having said that, it seems like CMake has been updated on all the systems we use (and I hope newer systems don't use a CMake 2 years old...) So I would be fine bumping

wthrowe commented 3 years ago

I'm fine with a bump if all the clusters we currently use support it.

nilsvu commented 3 years ago

Do you think we can bump to CMake 3.15 right away? It was released Jul 2019, which is not super long ago, but it looks like the systems we use support it, except for Ocean. @geoffrey4444 just so I understand the situation, is the CMake version on Ocean quite rigid or reasonably easy to upgrade?

nilsvu commented 3 years ago

@nilsdeppe Could you delete the systems we surely won't use from the table?

nilsdeppe commented 3 years ago

I think currently we need to be able to support them all. Comet and Bridges are aging, but they are still in use and so we shouldn't retire them just yet, even if it's unlikely we actually do end up using them. We do have computer time on these systems.

nilsvu commented 2 years ago

Comet is now retired as of 7/15/2021: https://www.sdsc.edu/support/user_guides/comet.html

nilsvu commented 2 years ago

I want to note down here that we can do https://github.com/sxs-collaboration/spectre/pull/2786 once we can require CMake v3.16+.

nilsvu commented 2 years ago

Wheeler uses Python 3.7.4 now (#3734):

-bash-4.2$ . spectre/support/Environments/wheeler_clang.sh 
-bash-4.2$ spectre_load_modules 
-bash-4.2$ python --version
Python 3.7.4

I edited the list above. I also added Py versions for Frontera and Stampede 2.

nilsvu commented 2 years ago

Bridges is now retired as of Feb 15, 2021. I can't login to Bridges 2.

nilsdeppe commented 2 years ago

Discussion from today's spectre meeting:

We will drop support for GCC versions older than 9.1.0 so we can backport std::is_constant_evaluated(), which allows using a different implementation of ERROR in constexpr and non-constexpr contexts. Alex Macedo found this to reduce compilation memory usage and time by a factor of 2. I'll update this comment once I've tested which Clang version we need to upgrade to.

Edit: From cppreference, we'll need to require clang 9 and newer. I don't think that'll be a problem.

knelli2 commented 1 year ago
Stampede2 will reach end-of-life and will no longer be available as of November 30, 2023.

From the Stampede 2 user guide. Will remove it from the list now since I don't know anybody that uses it.

knelli2 commented 1 year ago

All clusters now support python 3.8+, so I think we can drop support for python 3.7