GEOS-DEV / GEOS

GEOS Simulation Framework
GNU Lesser General Public License v2.1
211 stars 85 forks source link

Down selection of CI build platforms and compilers #190

Closed rrsettgast closed 5 years ago

rrsettgast commented 6 years ago

Is your feature request related to a problem? Please describe. I would like reduce the number of tests configurations run as part of our CI testing. Lets get a good discussion of what we actually care about.

Describe the solution you'd like I propose we support ubuntu18 - gcc7 (this is the default compiler for that platform) centos (version mirror LC toss3 redhat install)

joshua-white commented 6 years ago

How many configurations are you currently supporting? How many do you want to have? I would advocate Intel18 and a Pangea-like system.

rrsettgast commented 6 years ago

There are about 5 right now. I want to have the minimum number to support the platforms we are targeting. Intel18 is a little hard to setup given that it has a license associated with it. I will have to try to use RAJA's license keys.

artv3 commented 6 years ago

Intel would be nice to have since its not as robust as the other compilers and its needed for Cori.

MatthiasCremon commented 6 years ago

If you plan on testing an OS X platform, we still have issues with the warnings as errors with clang 9 and 10. Mojave (OS X 10.14) also doesn't seem to be able to compile some of the TPLs (the error I see now is in HYPRE).

herve-gross commented 6 years ago

I'd like to maintain support for Clang 10, not just for me, but because all new Total employees will be equipped with a Mac similarly configured. Broadening up a bit, would it be a good time to rewrite the CMake files and get rid of the Python config scripting? Also, according to @AntoineMazuyer , the minimum requirements for certain TPL are quite high (versions above those that come with standard distributions).

MatthiasCremon commented 6 years ago

The highest TPL requirement we saw was 3.9, and develop now also requires 3.9 for consistency.

rrsettgast commented 6 years ago

sorry...what is clang10?

herve-gross commented 6 years ago

I am compiling everything with this version of AppleClang: compiler identification is AppleClang 10.0.0.10001145 I had to turn off the "treat warning as errors" flag for GEOSX, though.

klevzoff commented 6 years ago

Apple's clang versions do not correspond to anything other than Xcode version they were shipped with... AFAIK AppleClang 9.0 was based on LLVM-4.0

herve-gross commented 6 years ago

I just reached out to our HPC team. Here is what they mentioned:

Current target platforms:

  • x86_64
  • ppc64le
  • nvidia gpu

On OS side: redhat, centos, sles

herve-gross commented 6 years ago

Adding this info regarding the software environment:

On the software side: Compiler:

  • Intel
  • GCC
  • clang MPI:
  • Intel MPI
  • OpenMPI
  • Cray MPI
rrsettgast commented 6 years ago

So here is what I am thinking for our CI platforms:

centos7.5 - clang4 (blueOS compilers based on clang4 ) centos7.5 - clang4 + nvcc (version 9.2+ or corresponding defaults available on LLNL/Sierra) centos7.5 - clang6 + nvcc (always the bleeding edge clang and nvcc available on LC) ubuntu18 - gcc7 centos7.5 - intel 18 (Cori and Pangea)

We can't really do an OSX build as the tpl builds require a docker image, and there is no OSX docker image. Perhaps someone can figure out if we can cache an osx image using TravisCI's native system. I would suggest that developers that use OSX as their primary dev platform should be cautious when updating develop in their branches, especially when the tpl's have updated.

artv3 commented 6 years ago

I think that's a good selection.

AlexandreLapene commented 6 years ago

Hi,

We are loop with Maximue Hugues our HPC guru in Houston. Based on our discussions he shares part of your conclusions but not all. We are trying to get him at our dev meeting but if he cannot make it we might postpone our final decision. Cheers, Alex

joshua-white commented 6 years ago

Maxime's input will be helpful, and it will be great to have him more directly involved. "Final" decision doesn't actually mean final. We will keep iterating to a good set that everyone is comfortable with. As new requirements come up, we can add and subtract platforms as needed.

Please just keep in mind that there is a distinction between the list of continuous integration platforms and the complete list of "supported" platforms. We will support a large set of platforms/compilers, but it only makes sense to do build tests on a representative subset. Currently it takes ~20 minutes to build and pass the CI tests, which is already too long. There are also inherent Travis and license issues that limit the available CI options. Our goal here is to get a good cross-section of platforms that will expose potential build issues quickly. We also need to identify a champion for each platform, who can take the lead when build issues arise on a given configuration.