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

Framework: Increase the minimum CMake version requirement #8401

Closed
2 of 3 tasks
william76 opened this issue Dec 1, 2020 · 15 comments · Fixed by #8660
Closed
2 of 3 tasks

Framework: Increase the minimum CMake version requirement #8401

william76 opened this issue Dec 1, 2020 · 15 comments · Fixed by #8660
Assignees
Labels
PA: Framework Issues that fall under the Trilinos Framework Product Area type: enhancement Issue is an enhancement, not a bug

Comments

@william76
Copy link
Contributor

william76 commented Dec 1, 2020

Enhancement

There was a discussion today in the developers' meeting about updating the minimum-required version of CMake to something newer than 3.10.0. I think the general consensus was that we'd like to update this to the most recent version of CMake that's supported on platforms we care about, noting that anything over 3.13.x is a pretty big step and 3.14.x or newer would be ideal.

CMake Availability

Let's fill this chart in so we can get an idea of what platforms we care about:

Platform CMake Version(s) Available
Vanguard 1 (Astra) 3.12.2, 3.14.5, 3.17.1
Chama 3.12.2, 3.17.1, 3.18.1
Mutrino 3.12.3, 3.14.6, 3.16.2, 3.17.2, 3.18.1
RHEL7 (OS default) 2.8.12.2
CEE RHEL7 3.12.2, 3.17.1,
ATS-1 (Trinity) 3.14.2, 3.14.6, 3.16.2, 3.17.2
ATS-2 (Sierra) 3.12.1, 3.14.5, 3.16.8, 3.18.0
Vortex 3.12.1, 3.14.6, 3.16.2, 3.17.2
CTS-1 3.12.2, 3.17.1, 3.18.1
Ride/White 3.12.3, 3.17.2 (in atdm-devops-admin?)
Weaver 3.12.3, 3.18.0
others? ??
Environment Modules CMake Version(s) Available
SEMS modules 3.11.1, 3.12.2, 3.17.1
SIERRA modules 3.12.2, 3.12.3

This is related to #8387 and #8392 which I'm using to identify the PR builds that fail when using CMake 3.10.x.

ATTN: @trilinos/framework @ccober6 @crtrott @kddevin @bartlettroscoe
I just tagged folks who spoke up during the meeting today when we were speaking about this, feel free to unfollow this issue if you're not interested or tag others who I may have forgotten to @mention

Tasks

  • Determine options for version of CMake to upgrade minimum to.
  • Select the target for upgrading CMake version to and a timeline ... CMake 3.17.1 by end of Jan. 2021!
  • Change the minimum version of CMake in Trilinos and TriBITS to CMake 3.17.1
@william76 william76 added type: enhancement Issue is an enhancement, not a bug PA: Framework Issues that fall under the Trilinos Framework Product Area labels Dec 1, 2020
@william76 william76 self-assigned this Dec 1, 2020
@jwillenbring
Copy link
Member

I pinged @balay for xSDK input. xSDK already depends on a minimum of 3.14. The four specific platforms quoted used versions ranging from 3.17.4 to 3.18.2.

@william76
Copy link
Contributor Author

I updated the table in the issue to reflect the versions @bartlettroscoe posted in our meeting chat.

@william76
Copy link
Contributor Author

@jwillenbring do you have any information on the systems I didn't get data for? Are there any systems we're missing?

@bartlettroscoe
Copy link
Member

@william76, FYI, I don't think anyone actually builds on production ATS-2 machine 'sierra' or the production ATS-1 machine 'trinity'. Instead, they build on the unclassified clones 'vortex' and 'mutrino', respectively, and copy over the libraries and executables. Therefore, I don't think it matters what version of CMake is actually installed on the production machines, only the unclassified SNL support clones for these.

I will post the CMake versions for the TLCC2 and CTS-1 machines.

@bartlettroscoe
Copy link
Member

ATDM 3.7.0, 3.10.1

Those modules are not used anymore so this should be removed from the table.

@bartlettroscoe
Copy link
Member

@william76, below are most of the important systems at SNL that I know about.

Looking over that you can see that everyone of those systems offers CMake 3.17.1 or newer. Also note that it is a single-line command to install CMake from source on every system I have ever tried. See:

My vote is to go with making CMake 3.17.1 the minimum required version for Trilinos and TriBITS. That is also a version directly supported by the SEMS RHEL7 modules.

Any objections?


CEE RHEL7 (i.e. all of the 'ews...', 'ceerws...', 'ascic...' and 'ascicgpu...' machines including where the Trilinos PR builds run)

$ module avail 2>&1 | grep cmake
sems-cmake/2.8.11          sems-ninja_fortran/1.10.0
sems-cmake/2.8.12          sems-ninja_fortran/1.8.2
sems-cmake/3.10.3(default) sems-pcre/8.41
sems-cmake/3.11.1          sems-serf/1.3.8
sems-cmake/3.12.2          sems-subversion/1.7.19
sems-cmake/3.17.1          sems-swig/3.0.10
sems-cmake/3.3.2           sems-tex/2015
sems-cmake/3.5.2           sems-tex/2019
sierra-cmake/3.12.2(default)
sparc-cmake/3.12.3
cde/cmake/3.12.4                    cde/gcc/7.2.0/netcdf-c/4.7.3
cde/cmake/3.17.1                    cde/gcc/7.2.0/openmpi/3.1.6

TLCC-2 (e.g. 'chama', 'skybridge')

$ module avail 2>&1 | grep cmake
   sems-cmake/2.8.11           sems-ninja_fortran/1.10.0 (D)
   sems-cmake/2.8.12           sems-pcre/8.41
   sems-cmake/3.3.2            sems-serf/1.3.8
   sems-cmake/3.5.2            sems-subversion/1.7.19
   sems-cmake/3.10.3    (D)    sems-swig/3.0.10
   sems-cmake/3.12.2           sems-tex/2015
   sems-cmake/3.17.1           sems-tex/2019             (D)
   cde/cmake/3.12.4
   cde/cmake/3.17.1                      (D)
   sparc-cmake/3.12.3
   sparc-cmake/3.18.1                    (D)
   cmake/3.11.1
   cmake/3.12.2                                      (D)
   cmake/3.5                mpigraph/1.0
   cmake/3.8                nvidia/450.51.06

CTS-1 (e.g. 'eclipse')

$ module avail 2>&1 | grep cmake
   sems-cmake/2.8.11           sems-ninja_fortran/1.10.0 (D)
   sems-cmake/2.8.12           sems-pcre/8.41
   sems-cmake/3.3.2            sems-serf/1.3.8
   sems-cmake/3.5.2            sems-subversion/1.7.19
   sems-cmake/3.10.3    (D)    sems-swig/3.0.10
   sems-cmake/3.12.2           sems-tex/2015
   sems-cmake/3.17.1           sems-tex/2019             (D)
   cde/cmake/3.12.4
   cde/cmake/3.17.1                              (D)
   sparc-cmake/3.12.3
   sparc-cmake/3.18.1                            (D)
   cmake/3.11.1
   cmake/3.12.2                                     (D)
   cmake/3.5                mpigraph/1.0
   cmake/3.8                nvidia/450.51.06

ATS-1 (e.g. 'mutrino', 'trinity')

$  module avail 2>&1 | grep cmake
sparc-cmake/3.12.3
sparc-cmake/3.18.1(default)
cmake/3.14.2
cmake/3.14.6
cmake/3.16.2
cmake/3.17.2

ATS-2 (e.g. 'vortex', 'sierra')

$ module avail 2>&1 | grep cmake
   cmake/2.8.12
   cmake/3.7.2
   cmake/3.8.2
   cmake/3.9.2
   cmake/3.12.1
   cmake/3.14.5                                          (D)
   cmake/3.16.8
   cmake/3.18.0
   sparc-cmake/3.13.3

Vanguard 1 (e.g. 'stria', 'astra')

$ module avail 2>&1 | grep cmake
   cmake/3.9.2                    gnu9/9.3.0
   cmake/3.12.2          (L,D)    ninja/1.8.2
   cmake/3.14.5                   pmix/2.2.3            (L)
   cmake/3.17.1                   reports/20.0.2

Testbed 'ride' and 'white' (where the Trilinos CUDA PR builds currently run)

$ module avail 2>&1 | grep cmake
cmake/3.12.3             java/ibm/sdk/8.0.0       pgi/compilers/17.7.0
cmake/3.6.2              libdwarf/20181014        pgi/compilers/19.3.0
cmake/3.9.6              libelf/0.8.13            python/2.7.12

But note that also exists:

$ /home/atdm-devops-admin/tools/ride/cmake-3.17.2/bin/cmake --version
cmake version 3.17.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Testbed 'weaver'

$ module avail 2>&1 | grep cmake
cmake/3.12.3(default)   java/ibm/sdk/8.0.0      perl/5.22.1
cmake/3.18.0            java/OpenJDK/13.0.2     pgi/compilers/17.7.0
cmake/3.6.2             libdwarf/20181014       pgi/compilers/19.3.0
cmake/3.9.6             libelf/0.8.13           python/2.7.12

@bartlettroscoe
Copy link
Member

Note the now-closed duplicate issue #6752

Also, note that the current plan described in TRILINOS-104 is to upgrade the minimum version to CMake 3.17.1 on Jan 21, 2021!

This will open the door for more simplifications of TriBITS.

@william76
Copy link
Contributor Author

It looks like the systems have a 3.17.x or newer CMake available... @jwillenbring lets chat on this in Monday's standup.

@jwillenbring
Copy link
Member

The Trilinos Product Lead team agreed that 3.17 should be the new minimum CMake version. The timeline for this change is by January 31st. The Framework team can begin upgrading build to use 3.17 or newer now, and on January 31st, we should increase the minimum required version.

@bartlettroscoe
Copy link
Member

bartlettroscoe commented Dec 16, 2020

FYI: We discussed this topic and the topic of dropping support for Makefile.export.* files at the Trilinos Product Leaders Meeting today. The action items that came out of that were:

  • Add an example raw CMake project in Trilinos/demos/ that uses find_package(Trilinos) and then uses some functionality in Trilinos (we should also test this as part of PR and nightly testing to ensure it always work)
  • Create a plan for customers to transition to no Makefile.export.Trilinos files (either switch to CMake or manually get the list of libraries you need with CMAKE_EXPORT_COMPILE_COMMANDS)
  • Craft email to announce drop support for Makefile.export.Trilinos and get feedback from internal and external customers

This issue of dropping support for Makefile.export.* files really needs to be addressed in a new GitHub issue, not this issue (which is just about upgrading the minimum required version of CMake).

@bartlettroscoe
Copy link
Member

FYI: See #8498

@crtrott
Copy link
Member

crtrott commented Dec 18, 2020

Just so you guys know, Kokkos will now transition to 3.17.1 as the minimum as discussed here. The next release into Trilinos will be after the proposed Jan 31st cutoff date.

@fryeguy52
Copy link
Contributor

I have install the newest cmake and the newest version of ninja on white/ride/weaver so you should be able to:

module load cmake/3.19.3
module load ninja/1.10.2

@jwillenbring
Copy link
Member

I believe this is done as originally intended. If not, please reopen. The last remaining clean up bits I know of are being tracked separately.

@bartlettroscoe
Copy link
Member

Related to:

  • SEPW-213
  • SEPW-214

bartlettroscoe added a commit to bartlettroscoe/Trilinos that referenced this issue Mar 13, 2021
…ilinos#8401)

This brings in an updated version of TriBITS that required CMake 3.17+.  This
should not change the behavior of TriBITS for Trilinos.

Related: TriBITSPub/TriBITS#299, TriBITSPub/TriBITS#360
trilinos-autotester added a commit that referenced this issue Mar 16, 2021
…17-min

Automatically Merged using Trilinos Pull Request AutoTester
PR Title: Pull in TriBITS that requires CMake 3.17 and other TriBITS changes (#8401)
PR Author: bartlettroscoe
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PA: Framework Issues that fall under the Trilinos Framework Product Area type: enhancement Issue is an enhancement, not a bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants