Skip to content

Conversation

bartgol
Copy link
Contributor

@bartgol bartgol commented Sep 11, 2024

This PR fixes a nano bug that only shows if you try to use an existing Kokkos installation, by setting the env var Kokkos_ROOT.

In particular, in that case, Ekat finds the installation via find_package. But the imported target has local scope, so following calls to cmake's target_link_libraries won't recognize Kokkos , since the package was found while parsing the ekat subdir. Hence, we must call find_package again to make the imported target available in the current scope.

Also, subsequent calls to find_package are virtually no-op (once the package was found the first time), so it doesn't even cost to call it again and again.

NOTE: there's also the option of making the imported target via find_package GLOBAL, so that CMake can use the imported target even after exiting the scope where find_package was called. However, that's conceptually wrong, imho, since it doesn't encapsulate specific needs.

If an existing install of Kokkos is used, the imported
target has local scope, so following calls to cmake's
target_link_libraries won't recognize Kokkos if the
first call to find_package was in a subdir.

In EAMxx, that's the case (it's found while parsing the
ekat subdir). However, subsequent calls to find_package
are virtually no-op, so it doesn't hurt to call it again
@bartgol bartgol added cmake Concerns CMake related files or logic radiation regarding the radiation scheme AT: AUTOMERGE bugfix labels Sep 11, 2024
@bartgol bartgol requested a review from jgfouca September 11, 2024 16:33
@bartgol bartgol self-assigned this Sep 11, 2024
jgfouca
jgfouca previously approved these changes Sep 11, 2024
Copy link
Member

@jgfouca jgfouca left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice find, thanks!

@E3SM-Bot
Copy link
Collaborator

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SCREAM_PullRequest_Autotester_Mappy

  • Build Num: 5830
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA f080044
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM

Build Information

Test Name: SCREAM_PullRequest_Autotester_Weaver

  • Build Num: 6054
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA f080044
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM

Using Repos:

Repo: SCREAM (E3SM-Project/scream)
  • Branch: bartgol/rrtmgp-find-pkg-kokkos
  • SHA: f080044
  • Mode: TEST_REPO

Pull Request Author: bartgol

@E3SM-Bot
Copy link
Collaborator

Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED

Note: Testing will normally be attempted again in approx. 2 Hrs. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run.

Pull Request Auto Testing has FAILED (click to expand)

Build Information

Test Name: SCREAM_PullRequest_Autotester_Mappy

  • Build Num: 5830
  • Status: FAILED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA f080044
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM

Build Information

Test Name: SCREAM_PullRequest_Autotester_Weaver

  • Build Num: 6054
  • Status: FAILED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA f080044
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM
SCREAM_PullRequest_Autotester_Mappy # 5830 FAILED (click to see last 100 lines of console output)

  This can lead to problems in calling code that expects `find_package`
  result variables (e.g., `_FOUND`) to follow a certain pattern.
Call Stack (most recent call first):
  /home/e3sm-jenkins/jenkins-ws/workspace/SCREAM_PullRequest_Autotester_Mappy/5830/scream/externals/scorpio/cmake/LibFind.cmake:302 (find_package_handle_standard_args)
  /home/e3sm-jenkins/jenkins-ws/workspace/SCREAM_PullRequest_Autotester_Mappy/5830/scream/externals/scorpio/cmake/FindPnetCDF.cmake:51 (find_package_component)
  /home/e3sm-jenkins/jenkins-ws/workspace/SCREAM_PullRequest_Autotester_Mappy/5830/scream/externals/scorpio/src/flib/CMakeLists.txt:266 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Could NOT find PnetCDF_Fortran (missing: PnetCDF_Fortran_LIBRARY PnetCDF_Fortran_INCLUDE_DIR)
-- PnetCDF Fortran library not found. Disabling support for PnetCDF
-- Checking whether Fortran type INTEGER(KIND=MPI_OFFSET_KIND) has the same size as INTEGER(KIND=C_LONG_LONG)
-- sizeof(PIO_Offset) = 8 bytes
-- Using INTEGER(KIND=MPI_OFFSET_KIND) for PIO Offset
-- Using INTEGER(KIND=C_LONG_LONG) for passing PIO Offsets to C
-- Disabling SCORPIO tools... (use -DPIO_ENABLE_TOOLS:BOOL=ON to enable tools)
-- Disabling SCORPIO tests... (default, use -DPIO_ENABLE_TESTS:BOOL=ON to enable tests)
-- Disabling SCORPIO Examples... (default, use -DPIO_ENABLE_EXAMPLES:BOOL=ON to enable examples)
-- Enabling SCORPIO Documentation...
-- ===== Configuring SCORPIO Documentation... =====
-- Found Doxygen: /bin/doxygen (found version "1.8.5") found components: doxygen dot
-- Disabling all warnings for target pioc
-- Disabling all warnings for target piof
-- Disabling all warnings for target gptl
-- Found NetCDF: -L/projects/sems/install/rhel7-x86_64/acme/tpl/netcdf/4.7.4/gcc/11.2.0/openmpi/4.1.4/acme/lib -lnetcdff -L/projects/sems/install/rhel7-x86_64/acme/tpl/hwloc/1.10.1/gcc/11.2.0/base/lib -L/projects/sems/install/rhel7-x86_64/acme/compiler/gcc/11.2.0/openmpi/4.1.4/lib -L/projects/sems/install/rhel7-x86_64/acme/tpl/hdf5/1.14.0/gcc/11.2.0/openmpi/4.1.4/acme/lib -L/projects/sems/install/rhel7-x86_64/acme/tpl/netcdf/4.7.4/gcc/11.2.0/openmpi/4.1.4/acme/lib -lnetcdf -lnetcdf -ldl -lm
-- Could NOT find NetCDF (missing: NetCDF_C_LIBRARIES)
-- Disabling all warnings for target cprnc
-- Found OpenMP: TRUE (found version "4.5") found components: Fortran
-- This configuration builds without PIO library and NetCDF calls
-- Option BUILD_HOMMEXX_BENCHMARK_NOFORCING is OFF
-- Quadruple-precision supported enabling
-- This configuration of HOMME requires a C++ compiler
-- HOMME_FIND_BLASLAPACK=ON
-- Looking for Fortran sgemm
-- Looking for Fortran sgemm - not found
-- Looking for Fortran sgemm
-- Looking for Fortran sgemm - found
-- Found BLAS: /usr/lib64/libopenblas.so
-- Looking for Fortran cheev
-- Looking for Fortran cheev - found
-- Found LAPACK: /usr/lib64/libopenblas.so;-lm;-ldl
-- Fortran Flags = -fallow-argument-mismatch -cpp -ffree-line-length-none -ffp-contract=off -Wall
-- C Flags = -ffp-contract=off -Wall
-- CXX Flags = -ffp-contract=off -Wall
-- Linker Flags =
-- Looking for a Kokkos installation ...
-- Looking for a Kokkos installation ... NOT FOUND
-- Kokkos target already added in /home/e3sm-jenkins/jenkins-ws/workspace/SCREAM_PullRequest_Autotester_Mappy/5830/scream/externals/ekat/extern/kokkos
-- COMPOSE semi-Lagrangian transport enabled
-- Building theta-l_kokkos_4_72_10 library derived from theta-l_kokkos with:
-- NP = 4
-- PLEV = 72
-- QSIZE_D = 10
-- ENERGY = FALSE
-- Found OpenMP: TRUE (found version "4.5")
-- ** YAKL_ARCH not set. Building YAKL for a serial CPU backend **
-- ** YAKL is using the following compiler flags: **
-- Found MPI: TRUE (found version "3.1") found components: C
-- Disabling all warnings for target rrtmgp
CMake Error at src/physics/rrtmgp/CMakeLists.txt:130 (find_package):
By not providing "FindKokkos.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Kokkos", but
CMake did not find one.

Could not find a package configuration file provided by "Kokkos" with any
of the following names:

KokkosConfig.cmake
kokkos-config.cmake

Add the installation prefix of "Kokkos" to CMAKE_PREFIX_PATH or set
"Kokkos_DIR" to a directory containing one of the above files. If "Kokkos"
provides a separate development package or SDK, be sure it has been
installed.

-- Configuring incomplete, errors occurred!
######################################################
Build step 'Execute shell' marked build as failure
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 68016 killed;
[ssh-agent] Stopped.
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script : #!/bin/bash -le

cd $WORKSPACE/${BUILD_ID}/

./scream/components/eamxx/scripts/jenkins/jenkins_cleanup.sh

We're having issues with some test-launcher job hanging forever. So let's make sure we clean all penting test-launcher jobs

squeue -o"%.7i %u %40j" | grep e3sm-jenkins | grep test-launcher | awk '{ print $1 }' | xargs -r scancel

[SCREAM_PullRequest_Autotester_Mappy] $ /bin/bash -le /tmp/jenkins808726853286850662.sh
POST BUILD TASK : SUCCESS
END OF POST BUILD TASK : 0
Sending e-mails to: lbertag@sandia.gov
Finished: FAILURE

SCREAM_PullRequest_Autotester_Weaver # 6054 FAILED (click to see last 100 lines of console output)

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Found NetCDF_Fortran: /projects/ppc64le-pwr9-rhel8/tpls/netcdf-fortran/4.6.1/gcc/11.3.0/openmpi/4.1.6/5tv5psl/lib/libnetcdff.so
-- NetCDF Fortran library dependencies: /projects/ppc64le-pwr9-rhel8/tpls/netcdf-fortran/4.6.1/gcc/11.3.0/openmpi/4.1.6/5tv5psl/lib/libnetcdff.so
CMake Warning (dev) at /projects/ppc64le-pwr9-rhel8/utilities/cmake/3.25.1/gcc/8.3.1/base/gilfbst/share/cmake-3.25/Modules/FindPackageHandleStandardArgs.cmake:438 (message):
The package name passed to find_package_handle_standard_args
(PnetCDF_Fortran) does not match the name of the calling package (PnetCDF).
This can lead to problems in calling code that expects find_package
result variables (e.g., _FOUND) to follow a certain pattern.
Call Stack (most recent call first):
/home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/externals/scorpio/cmake/LibFind.cmake:302 (find_package_handle_standard_args)
/home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/externals/scorpio/cmake/FindPnetCDF.cmake:51 (find_package_component)
/home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/externals/scorpio/src/flib/CMakeLists.txt:266 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Could NOT find PnetCDF_Fortran (missing: PnetCDF_Fortran_LIBRARY PnetCDF_Fortran_INCLUDE_DIR)
-- PnetCDF Fortran library not found. Disabling support for PnetCDF
-- Checking whether Fortran type INTEGER(KIND=MPI_OFFSET_KIND) has the same size as INTEGER(KIND=C_LONG_LONG)
-- sizeof(PIO_Offset) = 8 bytes
-- Using INTEGER(KIND=MPI_OFFSET_KIND) for PIO Offset
-- Using INTEGER(KIND=C_LONG_LONG) for passing PIO Offsets to C
-- Disabling SCORPIO tools... (use -DPIO_ENABLE_TOOLS:BOOL=ON to enable tools)
-- Disabling SCORPIO tests... (default, use -DPIO_ENABLE_TESTS:BOOL=ON to enable tests)
-- Disabling SCORPIO Examples... (default, use -DPIO_ENABLE_EXAMPLES:BOOL=ON to enable examples)
-- Enabling SCORPIO Documentation...
-- ===== Configuring SCORPIO Documentation... =====
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
-- Disabling all warnings for target pioc
-- Disabling all warnings for target piof
-- Disabling all warnings for target gptl
-- Found NetCDF: -L/projects/ppc64le-pwr9-rhel8/tpls/netcdf-fortran/4.6.1/gcc/11.3.0/openmpi/4.1.6/5tv5psl/lib -lnetcdff -lnetcdf -lnetcdf -ldl -lm
-- Could NOT find NetCDF (missing: NetCDF_C_LIBRARIES)
-- Disabling all warnings for target cprnc
-- This configuration builds without PIO library and NetCDF calls
-- Option BUILD_HOMMEXX_BENCHMARK_NOFORCING is OFF
-- Quadruple-precision supported enabling
-- This configuration of HOMME requires a C++ compiler
-- HOMME_FIND_BLASLAPACK=ON
-- Found BLAS: /projects/ppc64le-pwr9-rhel8/tpls/netlib-lapack/3.11.0/gcc/11.3.0/base/dugykxn/lib64/libblas.so
-- Found LAPACK: /projects/ppc64le-pwr9-rhel8/tpls/netlib-lapack/3.11.0/gcc/11.3.0/base/dugykxn/lib64/liblapack.so
-- Fortran Flags = -fallow-argument-mismatch -cpp -ffree-line-length-none -ffp-contract=fast -Wall
-- C Flags = -ffp-contract=fast -Wall
-- CXX Flags = -ffp-contract=fast -Wall
-- Linker Flags =
-- Looking for a Kokkos installation ...
-- Looking for a Kokkos installation ... NOT FOUND
-- Kokkos target already added in /home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/externals/ekat/extern/kokkos
-- COMPOSE semi-Lagrangian transport enabled
-- Building theta-l_kokkos_4_72_10 library derived from theta-l_kokkos with:
-- NP = 4
-- PLEV = 72
-- QSIZE_D = 10
-- ENERGY = FALSE
-- ** Building YAKL for a CUDA backend **
-- ** YAKL is using the following compiler flags: -DYAKL_ARCH_CUDA --expt-extended-lambda --expt-relaxed-constexpr -Wno-deprecated-gpu-targets -std=c++17 -DYAKL_ARCH_CUDA -extended-lambda -Wext-lambda-captures-this -arch=sm_70 --expt-relaxed-constexpr -ccbin /projects/ppc64le-pwr9-rhel8/tpls/openmpi/4.1.6/gcc/11.3.0/base/g5mp6iz/bin/mpicxx **
Using CUDAToolkit macros
-- Found MPI: TRUE (found version "3.1") found components: C
-- Disabling all warnings for target rrtmgp
CMake Error at src/physics/rrtmgp/CMakeLists.txt:130 (find_package):
By not providing "FindKokkos.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "Kokkos", but
CMake did not find one.

Could not find a package configuration file provided by "Kokkos" with any
of the following names:

KokkosConfig.cmake
kokkos-config.cmake

Add the installation prefix of "Kokkos" to CMAKE_PREFIX_PATH or set
"Kokkos_DIR" to a directory containing one of the above files. If "Kokkos"
provides a separate development package or SDK, be sure it has been
installed.

-- Configuring incomplete, errors occurred!
See also "/home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/components/eamxx/ctest-build/release/CMakeFiles/CMakeOutput.log".
See also "/home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/components/eamxx/ctest-build/release/CMakeFiles/CMakeError.log".

Error(s) occurred during test phase
OVERALL STATUS: FAIL
Starting analysis on weaver with cmd: cd /home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/components/eamxx && source /etc/profile.d/modules.sh && module purge && module load cmake/3.25.1 git/2.39.1 python/3.10.8 py-netcdf4/1.5.8 gcc/11.3.0 cuda/11.8.0 openmpi netcdf-c netcdf-fortran parallel-netcdf netlib-lapack && export HDF5_USE_FILE_LOCKING=FALSE && true && bsub -I -q rhel8 -n 4 -gpu num=4 ./scripts/test-all-scream --baseline-dir AUTO $compiler -p -c EKAT_DISABLE_TPL_WARNINGS=ON -m weaver
RUN: cd /home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/components/eamxx && source /etc/profile.d/modules.sh && module purge && module load cmake/3.25.1 git/2.39.1 python/3.10.8 py-netcdf4/1.5.8 gcc/11.3.0 cuda/11.8.0 openmpi netcdf-c netcdf-fortran parallel-netcdf netlib-lapack && export HDF5_USE_FILE_LOCKING=FALSE && true && bsub -I -q rhel8 -n 4 -gpu num=4 ./scripts/test-all-scream --baseline-dir AUTO $compiler -p -c EKAT_DISABLE_TPL_WARNINGS=ON -m weaver
FROM: /home/e3sm-jenkins/weaver/workspace/SCREAM_PullRequest_Autotester_Weaver/6054/scream/components/eamxx
weaver failed
######################################################
Build step 'Execute shell' marked build as failure
Performing Post build task...
Match found for : : True
Logical operation result is TRUE
Running script : #!/bin/bash -le

cd $WORKSPACE/${BUILD_ID}/

./scream/components/eamxx/scripts/jenkins/jenkins_cleanup.sh
[SCREAM_PullRequest_Autotester_Weaver] $ /bin/bash -le /tmp/jenkins17768800782846978414.sh
POST BUILD TASK : SUCCESS
END OF POST BUILD TASK : 0
Sending e-mails to: lbertag@sandia.gov
Finished: FAILURE

@E3SM-Bot
Copy link
Collaborator

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SCREAM_PullRequest_Autotester_Mappy

  • Build Num: 5833
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA 17aa536
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM

Build Information

Test Name: SCREAM_PullRequest_Autotester_Weaver

  • Build Num: 6057
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA 17aa536
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM

Using Repos:

Repo: SCREAM (E3SM-Project/scream)
  • Branch: bartgol/rrtmgp-find-pkg-kokkos
  • SHA: 17aa536
  • Mode: TEST_REPO

Pull Request Author: bartgol

@E3SM-Bot
Copy link
Collaborator

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: SCREAM_PullRequest_Autotester_Mappy

  • Build Num: 5833
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA 17aa536
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM

Build Information

Test Name: SCREAM_PullRequest_Autotester_Weaver

  • Build Num: 6057
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
PR_LABELS cmake;radiation;AT: AUTOMERGE;bugfix
PULLREQUESTNUM 2993
SCREAM_SOURCE_REPO https://github.com/E3SM-Project/scream
SCREAM_SOURCE_SHA 17aa536
SCREAM_TARGET_BRANCH master
SCREAM_TARGET_REPO https://github.com/E3SM-Project/scream
SCREAM_TARGET_SHA e65666f
TEST_REPO_ALIAS SCREAM

@E3SM-Bot
Copy link
Collaborator

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
THE LAST COMMIT TO THIS PULL REQUEST HAS NOT BEEN REVIEWED YET!

@E3SM-Bot
Copy link
Collaborator

All Jobs Finished; status = PASSED, target_sha=5e3f6f345fc48900cb061ab123d3e4bb0e5e8f09, However Inspection must be performed before merge can occur...

@bartgol bartgol requested a review from jgfouca September 11, 2024 23:09
@jgfouca jgfouca merged commit 56e881c into master Sep 12, 2024
5 of 6 checks passed
@jgfouca jgfouca deleted the bartgol/rrtmgp-find-pkg-kokkos branch September 12, 2024 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bugfix cmake Concerns CMake related files or logic radiation regarding the radiation scheme
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants