Skip to content
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

Change standard pre-push and post-push CI build from GCC 4.9.3 to 4.8.4 #1453

Closed
bartlettroscoe opened this issue Jun 23, 2017 · 6 comments
Closed
Assignees
Labels
Framework tasks Framework tasks (used internally by Framework team) stage: in review Primary work is completed and now is just waiting for human review and/or test feedback

Comments

@bartlettroscoe
Copy link
Member

Related Issues: #1341, #1363, #1390, #482

CC: @trilinos/framework

Description:

This story is to downgrade the standard CI build of Trilinos from GCC 4.9.3 to GCC 4.8.4. The reasons for doing this are numerous:

  1. There are still platforms where GCC 4.9.3 is not available but GCC 4.8.4 is present that need C++11 builds of Trilinos (see Upgrade minimum support GCC from 4.7.2 with C++11 to something higher (4.8.4 or 4.9.3)? #1363). (Therefore, we need to protect the GCC 4.8.4 build of Trilinos and the best way to do that is with the CI build.)
  2. GCC 4.8.4 is the native GCC compiler on the SNL COE RHEL 7. (Therefore, customers like Xyce should have no problem delivering to customers on standard SNL COE RHEL 7 systems that require broad deployment at SNL., see Create plan to drop Trilinos support for C++98 preventing the usage of C++11 #1390.)
  3. GCC 4.8.4 provides full support for C++11 language features and works with CUDA 7.5 (but not the full C++11 standard library, see Upgrade minimum support GCC from 4.7.2 with C++11 to something higher (4.8.4 or 4.9.3)? #1363 ). (Therefore, Kokkos and Tpetra developers should not be constrained on what C++11 language features they use any more than they would with GCC 4.9.3.)
  4. GCC 4.8.4 seems to be a good stand-in for GCC 4.9.3 (i.e. we don’t seem to see many failures on one that are not reported on the other). (Therefore, if the CI build passes with GCC 4.8.4 is will also likely pass with GCC 4.9.3 which is important for Sierra)
  5. GCC 4.8.4 does not generate warnings for OpenMPI 1.6.5 header files the way that GCC 4.9.3 does (see Eliminate warnings in CI build coming from mpi.h with GCC 4.9.3 and OpenMPI from 1.6.5 #1341). (Which will help us remove the rest of the warnings being generated by Trilinos so we can add -Werror for this build which will help in upgrading Trilinos to Sierra and other customers which require clean -Werror builds.)
  6. The SEMS env provides a full GCC 4.8.4 stack on SNL COE RHEL 6 as well. (Therefore, developers can continue to test and push to Trilinos ‘develop’ on both RHEL 6 or RHEL 7 machines.)
@bartlettroscoe bartlettroscoe added the Framework tasks Framework tasks (used internally by Framework team) label Jun 23, 2017
@bartlettroscoe bartlettroscoe self-assigned this Jun 23, 2017
@bartlettroscoe
Copy link
Member Author

I send out the following email announcing this.


From: Bartlett, Roscoe A
Sent: Friday, June 23, 2017 10:10 AM
To: Trilinos Developers List trilinos-developers@trilinos.org
Cc: trilinos-framework@software.sandia.gov
Subject: Switching standard pre-push and post-push CI build from GCC 4.9.3 to 4.8.4

Hello Trilinos Developers,

It looks like we will be switching the standard pre-push and post-push CI builds from GCC 4.9.3 to 4.8.4 for the following reasons:

  1. There are still platforms where GCC 4.9.3 is not available but GCC 4.8.4 is present that need C++11 builds of Trilinos (see Upgrade minimum support GCC from 4.7.2 with C++11 to something higher (4.8.4 or 4.9.3)? #1363). (Therefore, we need to protect the GCC 4.8.4 build of Trilinos and the best way to do that is with the CI build.)
  2. GCC 4.8.4 is the native GCC compiler on the SNL COE RHEL 7. (Therefore, customers like Xyce should have no problem delivering to customers on standard SNL COE RHEL 7 systems that require broad deployment at SNL., see Create plan to drop Trilinos support for C++98 preventing the usage of C++11 #1390.)
  3. GCC 4.8.4 provides full support for C++11 language features and works with CUDA 7.5 (but not the full C++11 standard library, see Upgrade minimum support GCC from 4.7.2 with C++11 to something higher (4.8.4 or 4.9.3)? #1363 ). (Therefore, Kokkos and Tpetra developers should not be constrained on what C++11 language features they use any more than they would with GCC 4.9.3.)
  4. GCC 4.8.4 seems to be a good stand-in for GCC 4.9.3 (i.e. we don’t seem to see many failures on one that are not reported on the other). (Therefore, if the CI build passes with GCC 4.8.4 is will also likely pass with GCC 4.9.3 which is important for Sierra)
  5. GCC 4.8.4 does not generate warnings for OpenMPI 1.6.5 header files the way that GCC 4.9.3 does (see Eliminate warnings in CI build coming from mpi.h with GCC 4.9.3 and OpenMPI from 1.6.5 #1341). (Which will help us remove the rest of the warnings being generated by Trilinos so we can add -Werror for this build which will help in upgrading Trilinos to Sierra and other customers which require clean -Werror builds.)
  6. The SEMS env provides a full GCC 4.8.4 stack on SNL COE RHEL 6 as well. (Therefore, developers can continue to test and push to Trilinos ‘develop’ on both RHEL 6 or RHEL 7 machines.)

If you have comments or concerns about switching the CI build from GCC 4.9.3 to GCC 4.8.4, please add comments to:

(or one of the related issues if that is more appropriate).

Unless there is a strong objection (which will require more debate and research), I will make this change on Monday morning (assuming the CI build for Trilinos with GCC 4.8.4 still works by then, which is should, given #4 above).

Thanks,

-Ross

@bartlettroscoe bartlettroscoe added this to Ready in SART Issues Jun 23, 2017
@bartlettroscoe
Copy link
Member Author

Okay, given the comments from @jwillenbring this morning in #1363 (comment) and #1390 (comment) and since no one has expressed a concern about this, I will go ahead and pull the trigger on this. I will use the checkin-test-sems.sh script to test and push with GCC 4.8.4 enabling all packages.

@bartlettroscoe bartlettroscoe added the stage: in progress Work on the issue has started label Jun 26, 2017
bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue Jun 26, 2017
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.
@bartlettroscoe
Copy link
Member Author

I pushed the commit making this change dea0bd1 :

commit dea0bd137e5c97f3b0335dd6914a4943abe8e13d
Author: Roscoe A. Bartlett <rabartl@sandia.gov>
Date:   Thu Jun 22 18:07:06 2017 -0600

    Change standard CI build from GCC 4.9.3 to GCC 4.8.4 (#1453)
    
    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.

M       cmake/ctest/drivers/sems_ci/TrilinosCTestDriverCore.sems.cmake
M       cmake/load_sems_dev_env.sh
M       cmake/std/sems/get_default_modules.sh

We already see that the standard CI server has been updated at:

What is cool is that the CI server automatically recovered on a rebuilt. That must mean that ctest blows away the CMakeCache.txt and CMakeFiles/ directory when it runs.

Lately, I just need to update the wiki documentation for this change from GCC 4.9.3 to GCC 4.8.4. Then I can put this in review and make sure that things go smooth.

bartlettroscoe added a commit to bartlettroscoe/TrilinosWiki that referenced this issue Jun 26, 2017
…rilinos#1453)

This completes the change from GCC 4.9.3 to 4.8.4 for the standard CI build.
@bartlettroscoe
Copy link
Member Author

I just pushed the commit:

commit bc82f1d59fb08475c71fd73b925f4bae05d58223
Author: Roscoe A. Bartlett <rabartl@sandia.gov>
Date:   Mon Jun 26 17:14:36 2017 -0600

    Switch standard Trilinos CI build from GCC 4.9.3 to 4.8.4 (trilinos/Trilinos#1453)
    
    This completes the change from GCC 4.9.3 to 4.8.4 for the standard CI build.

M       Policies--|-Testing.md
M       Policies-|-Safe-Checkin-Testing.md
M       SEMS-Dev-Env.md

to the Trilinos wiki repo. I tested the links and they seem to work.

I am now putting this into review for a few days to see how it goes.

@bartlettroscoe bartlettroscoe added stage: in review Primary work is completed and now is just waiting for human review and/or test feedback and removed stage: in progress Work on the issue has started labels Jun 26, 2017
@bartlettroscoe
Copy link
Member Author

The CI build using GCC 4.8.4 started and is running smoothly this morning, as shown at:

(and there were two incremental CI builds yesterday.)

The only reason to leave this in review is to watch and see if anyone with RHEL 7 pushes to Trilinos with the GCC 4.8.4 env. (But given that GCC 4.8.4 is the native comiler on RHEL 7, you would hope there would not be any issues.)

lxmota pushed a commit that referenced this issue Jun 28, 2017
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.
@bartlettroscoe bartlettroscoe moved this from Ready to In Review in SART Issues Jun 29, 2017
@bartlettroscoe bartlettroscoe moved this from In Review to Done in SART Issues Oct 31, 2017
@bartlettroscoe
Copy link
Member Author

This was don way long ago.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Framework tasks Framework tasks (used internally by Framework team) stage: in review Primary work is completed and now is just waiting for human review and/or test feedback
Projects
Trilinos Framework
  
Done/closed
Development

No branches or pull requests

1 participant