trilinos / Trilinos

Primary repository for the Trilinos Project
https://trilinos.org/
Other
1.21k stars 565 forks source link

ShyLU: Configure-time (CMake) error relating to Tacho somehow #1788

Closed mhoemmen closed 7 years ago

mhoemmen commented 7 years ago

@trilinos/shylu

See #1784 for discussion. Here is the error:

-- Configuring done
CMake Error: install(EXPORT "Amesos2" ...) includes target "amesos2" which requires target "shylutacho" that is not in the export set.
kyungjoo-kim commented 7 years ago

@bartlettroscoe

We move to this issue the cmake build error. As you mentioned that ST is tested nightly, this cmake error probably break all nightly tests today.

@mhoemmen Could you specify more about your configuration or check-in-script you use ? so we can reproduce the same error. The problem is that amesos2 installation wants to bring shylutacho together but the library is not on the export list.

bartlettroscoe commented 7 years ago

@kyungjoo-kim,

There are several --st-extra-builds that are defined in the checkin-test-sems.sh script. There should be instructions in that script on how to run them. It is as easy as --st-extra-builds=<build1>,<build2>,.... For example, you might try:

$ ./checkin-test-sems.sh --default-builds= --st-extra-builds=MPI_RELEASE_DEBUG_SHARED_ST \
   --enable-all-packages=off --no-enable-fwd-packages --enable-packages=Amesos2 \
   --local-do-all

However, these may not match up with the same builds that are run by the Trilinos Framework team that post to CDash but they should give you a pretty good shot at reproducing problems with ST builds of Trilinos.

kyungjoo-kim commented 7 years ago

The script reproduces the problem when Tacho is labeled with ST. The issue is gone when Tacho is EX because it simply disables tacho in the script.

mhoemmen commented 7 years ago

@kyungjoo-kim I'm doing a Clang 3.9 build, using the check-in test script (not the remote one), but with the MKL TPL enabled.

@bartlettroscoe I'm using the --extra-builds=MPI_DEBUG option; does that make a difference here?

bartlettroscoe commented 7 years ago

I'm using the --extra-builds=MPI_DEBUG option; does that make a difference here?

Yes. Using --extra-builds allows EX packages to be enabled while --st-extra-builds does not. If you examine the STDOUT output from checkin-test.py it will show you that logic. This is also explain in the section "HANDLING OF PT, ST, AND EX CODE IN BUILT-IN AND EXTRA BUILDS" in ./checkin-test.py --help. See:

(I need to compartmentalize and package up the documentation for checkin-test.py with --help-topic=<topic> like I did for gitdist shown at https://tribits.org/doc/TribitsDevelopersGuide.html#gitdist-documentation).

searhein commented 7 years ago

I also experienced this error for Tacho when trying to build Amesos2 and BDDC:

CMake Error: install(EXPORT "Amesos2" ...) includes target "amesos2" which requires target "shylu_nodetacho" that is not in the export set.
CMake Error: install(EXPORT "ShyLU_DDBDDC" ...) includes target "shylu_ddbddc" which requires target "shylu_nodetacho" that is not in the export set.
srajama1 commented 7 years ago

@kyungjoo-kim : @searhein faced this error when explicitly enabling Tacho. @bartlettroscoe : Can you comment on how export lists are built ?

bartlettroscoe commented 7 years ago

@bartlettroscoe : Can you comment on how export lists are built ?

This is code in a subsystem of TriBITS that I did not write and don't really know that much about at this point. I think the primary maintainer of that code is @nschloe (I could check git logs).

nschloe commented 7 years ago

I think the primary maintainer of that code is nschloe (I could check git logs).

It's been several years since I contributed to TriBITS and it'll take me a while to delve back in again. I've never seen those errors before either. In any case, a minimal do-configure would be helpful.

srajama1 commented 7 years ago

The priority of this just went up as it is blocking application integration. @kyungjoo-kim.

bartlettroscoe commented 7 years ago

If someone runs 'cmake . &> configure.txt' in that build directory and then attaches 'configure.txt' to this GitHub Issue, that might allow me to reproduce this use case in my local build dire. Otherwise, I will need to have the full instructions for env setup (i.e. on the CEE LAN loading modules X,Y, and Z), the full cmake configure script, etc. But we might get lucky with just and be able to reproduce just by setting 'configure.out'.

kyungjoo-kim commented 7 years ago

my configure script is attached. The script uses SEMS modules.

CMAKE_PROJECT_DIR=/home/kyukim/Work/lib/trilinos/temp
CMAKE_INSTALL_DIR=/home/kyukim/Work/lib/trilinos/install/issue-1788
cmake \
    -DTrilinos_ENABLE_TESTS:BOOL=ON \
    -DTrilinos_ALLOW_NO_PACKAGES:BOOL=OFF \
    -DTPL_ENABLE_MPI=ON \
    -DCMAKE_BUILD_TYPE=RELEASE \
    -DTrilinos_ENABLE_DEBUG=ON \
    -DBUILD_SHARED_LIBS=ON \
    -DTrilinos_ENABLE_Amesos2:BOOL=ON \
    -DTrilinos_ENABLE_ShyLUTacho:BOOL=ON \
    -DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=OFF \
    -DTrilinos_ENABLE_ALL_FORWARD_DEP_PACKAGES:BOOL=OFF \
    -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_DIR} \
    ${CMAKE_PROJECT_DIR}

Even if it reports cmake error, I can successfully build the Trilinos and install it.

configure.txt is attached. configure.txt

bartlettroscoe commented 7 years ago

Okay, I reproduced the failure:

$ cd ~/Trilinos.base2/BUILDS/GCC-4.8.4/MPI_RELEASE_DEBUG_SHARED_PT/

$ rm -r CMake*

$ source ~/Trilinos.base2/Trilinos/cmake/load_sems_dev_env.sh

$ cat do-configure
#!/bin/bash

cmake \
-DTPL_ENABLE_MPI=ON \
-DCMAKE_BUILD_TYPE=RELEASE \
-DTrilinos_ENABLE_DEBUG=ON \
-DBUILD_SHARED_LIBS=ON \
-DTrilinos_ENABLE_SECONDARY_TESTED_CODE=OFF \
-DTrilinos_CONFIGURE_OPTIONS_FILE:STRING=cmake/std/MpiReleaseDebugSharedPtSettings.cmake,cmake/std/BasicCiTestingSettings.cmake \
-DTrilinos_ENABLE_DEBUG_SYMBOLS=ON \
-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
-DTrilinos_ENABLE_CONFIGURE_TIMING=ON \
-DTrilinos_ENABLE_TESTS=ON \
-DTrilinos_TRACE_ADD_TEST=ON \
-DCTEST_BUILD_FLAGS=-j16 \
-DCTEST_PARALLEL_LEVEL=16 \
-DMEMORYCHECK_COMMAND_OPTIONS="-q --trace-children=yes --tool=memcheck \
  --leak-check=yes --workaround-gcc296-bugs=yes \
  --show-reachable=yes --num-callers=50 --gen-suppressions=all \
  --suppressions=$SEMS_OPENMPI_ROOT/share/openmpi/openmpi-valgrind.supp" \
"$@" \
../../../Trilinos

$ ./do-configure   \
    -DTrilinos_ENABLE_Amesos2:BOOL=ON \
    -DTrilinos_ENABLE_ShyLUTacho:BOOL=ON \
    -DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=OFF \
    -DTrilinos_ENABLE_ALL_FORWARD_DEP_PACKAGES:BOOL=OFF \
    &> configure.out

$ echo $?
1

$ grep "CMake Error" configure.out 
CMake Error: install(EXPORT "Amesos2" ...) includes target "amesos2" which requires target "shylutacho" that is not in the export set.

I will dig a little to see if I can find something obvious.

bartlettroscoe commented 7 years ago

I know that the code related to this is in the file:

but I am just unfamiliar with all of the ins and outs of what is going on in there since I did not write the code and am not an expert on CMake export files.

I am wondering if this is something Kitware can help us with? I will ask them if they can help.

bartlettroscoe commented 7 years ago

I created the SNL/Kitware contract issue:

to try to get some Kitware help on this (since I don't know this TriBITS subsystem very well).

(SNL staff can get access that site as described at https://snl-wiki.sandia.gov/display/TRIL.)

srajama1 commented 7 years ago

We did some old fashioned debugging of cut and paste of different CMakeLists.txt options from other packages where it works to Tacho. It worked ! @kyungjoo-kim will push the fix after some testing.

bartlettroscoe commented 7 years ago

We did some old fashioned debugging of cut and paste of different CMakeLists.txt options from other packages where it works to Tacho. It worked ! @kyungjoo-kim will push the fix after some testing.

I will be curious to see what it was and see if it can be detected earlier with a better error message.

kyungjoo-kim commented 7 years ago

In tacho cmakefile, I forgot to add "TRIBITS_SUBPACKAGE_POSTPROCESS()". It would be better if we have better error message than the message with export list.

bartlettroscoe commented 7 years ago

In tacho cmakefile, I forgot to add "TRIBITS_SUBPACKAGE_POSTPROCESS()". It would be better if we have better error message than the message with export list.

Okay, that is something we can catch. In fact, we are working on those types of checks in TriBITSPub/TriBITS#200 (but have not added checks for this yet).

bartlettroscoe commented 7 years ago

FYI: New TriBITS checks pushed in trilinos/Trilinos@e2b8a39 automatically catch mistakes like this right away at the source. Hopefully these checks will save lost time and productivity like this in the future.