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
Upgrade minimum support GCC from 4.7.2 with C++11 to something higher (4.8.4 or 4.9.3)? #1363
Comments
@rppawlo requested the disable of Panzer and Phalanx in the GCC 4.7.2 build: I will go ahead and take care of that. @jwillenbring, can you please archive the info you have on what version we can upgrade the minimum too? Ideally this would be GCC 4.9.3 but if we need to support GCC 4.8.4 then so be it. Let's just do this analysis quickly and make this upgrade happen. NOTE: @rrdrake said that Sierra is now clear of GCC 4.7.2 so that will not hold us back. |
Roger P. requested this (see #1363).
So far, the only example of the need for less than GCC 4.9.3 is GCC 4.8.4 on Mira (see email below from Paul Lin). Paul Lin mentioned that there is a machine he still runs on that uses GCC 4.7.2 but that he keeps a set of patches for dealing with issues. Not too long ago Paul Lin mentioned machines such as Mira at the facilities that have compilers older than 4.9. This is a machine that xSDK cares about. I looked and we use 4.8.4 for that build. https://xsdk.info/release-0-2-0-alpha/ I am wondering then if we can drop 4.7.2, as it seems problematic, use 4.9.3 for continuous builds, but keep 4.8.4 for the minimum? Jim |
At the request of Mike H. I moved this "In Progress" in the SART board. |
I am investigating possibilities for supporting @pwxy requirements as well as xSDK requirements. |
@jwillenbring can you sync with @dmvigi on requirements as part of the broader SEMS requirements effort? Thank you. |
I am trying to get better performance from the drekar/trilinos clang 3.9 binary on sequoia. This really the only viable alternative. It is not practical to support gnu 4.7.2 the next 1.5 years. |
ops forgot to mention in the previous post that due to the negative impact on developers to maintain 4.7.2 compatibility, it is best to just move to 4.9.3. |
@pwxy - I don't think we have final agreement from the IC teams yet to move do we? |
@nmhamster you are correct, I don't know about the other IC teams or xSDK. I'm just speaking for myself. I'm no longer a holdout. |
Who do you do you mean by "IC"? I know that Sierra is free of GCC 4.7.2 and now GCC 4.9.3 is the minimum required GCC version for C++11 support. I will send out an email to the SART email list and ask if there is anyone else who needs C++11 for anything less than GCC 4.9.3. If we don't get strong pushback in a couple of weeks or so, then it is time to upgrade and disable all the type-2 templated packages from GCC 4.7.2 testing (starting with Kokkos on down) or change all of the GCC 4.7.2 automated builds posting to CDash to GCC 4.9.3. We also need to quickly make a decision on dropping support for C++98 all together for the 'develop' and 'master' branches in #1390. This is related but technically these two issues can be decided independently. |
Actually develop Trilinos won't build for gnu 4.7.2 anymore (builds fine for 4.9.3). I do not plan to ask anyone to fix this so that it will build for 4.7.2. |
Significant progress has been made by @pwxy to remove 4.7.2 needs. Questions still exist for 4.8 builds. One important one is that 4.8 is the default for RHEL 7, and default configurations on RHEL are currently important to Xyce. If SEMS deploys compilers more widely, this importance will decrease. Hope to discuss timeline for that later today. |
GCC 4.8.4 + CUDA 7.5 works fine for me with Tpetra. I don't see any of the lambda capture bugs that I see in GCC 4.7.2 (that I can work around by explicitly listing all variables that I want to capture). |
I ran the full standard CI build with the SEMS GCC 4.8.4 stack:
on RHEL 6 and it passed. (Results below). Given that it looks like there are still some platforms and customers that require GCC 4.8.4 and it is reported above that GCC 4.8.4 should have all of the C++11 language features, I think we should make GCC 4.8.4 the minimum required GCC version for Trilinos C++11 support and change the standard CI build from GCC 4.9.3 to GCC 4.8.4 in order to help maintain that. Any objections?
|
Looks like Trilinos needs to suppport GCC 4.8.4 with C++11 for some time to come. Therefore, the standard CI build is being changed to help ensure that Trilinos with C++11 works with GCC 4.8.4.
The branch that makes this change is: We just need to merge (or rebase) that branch to 'develop' and push and update the GitHub wiki pages that mention GCC 4.9.3. Should we pull the trigger? |
As I mentioned in previous comments, if I am the final user that prevents switching the minimum gcc version from 4.7.2 to 4.9.3, then please make 4.9.3 the default. No point having developers expend effort to maintain backward compatibilty with gnu 4.7.2. bgclang++11 (clang 3.9) on sequoia compiles develop Trilinos without issue. By forcing lots of inlining (and long compile times and a accepting a large binary), for the two Drekar test cases I have been working with, the clang-built binary is competitive with the gnu 4.7.2-built binary, which the exception of the solve being 60-75% slower when using ifpack2 triangular solves (native RILUK and Gauss-Seidel). For situations where there is sufficient memory (e.g. strong-scaling runs), @ambrad showed me how to switch from ifpack2 native RILUK to HTS. For bgclang++11 (clang 3.9), HTS solve is twice as fast as ifpack2 native RILUK, but with a penalty of larger memory requirement (50% increase). When Trilino makes 4.9.3 the minimum gcc version, then I will use bgclang++11. However, it seems that there are other users than require gcc 4.8.4 and cannot go to 4.9.3. |
@pwxy My experience is that GCC 4.7.2 is broken in ways that make using Kokkos harder, while GCC 4.8.4 doesn't have these issues. |
I agree; unless others need 4.7.2, we should ditch it. |
I spoke with @pwxy this morning. I need to clear with @maherou yet, but it appears we can move to 4.8.4 as the minimum supported compiler version. There are several reasons to stick with 4.8.4 for the time being.
This is not to say we should support 4.8.4 until end of life for RHEL 7, but rather that it seems to be a good version to support for now. |
Looks like Trilinos needs to suppport GCC 4.8.4 with C++11 for some time to come (see trilinos#1363, trilinos#1390). Therefore, the standard CI build is being changed to help ensure that Trilinos with C++11 works with GCC 4.8.4. This should also eliminate the warnings coming from OpenMPI 1.6.5 headers reported in trilinos#1341.
I am in the process of pushing a commit to change from GCC 4.9.3 to 4.8.4 for the standard CI build (see #1453). Also, I am archiving Jim's email below. From: Trilinos-developers [mailto:trilinos-developers-bounces@trilinos.org] On Behalf Of Willenbring, James M All, On behalf of Trilinos Project Lead Mike Heroux, I want to inform you of some modifications to the minimum supported GCC compiler version for most of Trilinos. Effective immediately, the minimum supported GCC compiler version for most of Trilinos is 4.8.4. This applies to future development on the develop and master branches. The exceptions to this minimum version include the packages used in this build: https://testing.sandia.gov/cdash/index.php?project=Trilinos&parentid=2967870 Namely, Teuchos For these packages, the minimum supported compiler version remains GCC 4.4.7. Thanks Jim |
In support of upgrading the minimum compiler version, the @trilinos/framework is setting up 2 new continuous builds to cover the most important GCC compiler versions: 4.8.4 (minimum) and 4.9.3 (target for some customers). That activity will be tracked here: #1457. In addition, we are adding a 4.8.4 clean build (see #1445). I believe that as described, this ticket can now be closed. Other related activities are covered by other tickets. If that is not accurate, feel free to reopen. |
Looks like Trilinos needs to suppport GCC 4.8.4 with C++11 for some time to come (see #1363, #1390). Therefore, the standard CI build is being changed to help ensure that Trilinos with C++11 works with GCC 4.8.4. This should also eliminate the warnings coming from OpenMPI 1.6.5 headers reported in #1341.
Next Action Status:
Looks like some customers need GCC 4.8.4 with C++11 Trilinos currently. Next: Decide to make the downgrade the CI server from GCC 4.9.3 back to GCC 4.8.4 (which currently passes the full CI test suite) ...
CC: @trilinos/framework
Description:
Maintaining support for GCC 4.7.2 puts a lot of constraints on the C++11 code that you can write and is holding back Trilinos development (see #1002). This story is to remove testing and support for GCC 4.7.2 and upgrade to GCC 4.8.x or newer (GCC 4.9.3 would be better given that is what Sierra uses).
The text was updated successfully, but these errors were encountered: