Open ndellingwood opened 5 months ago
Actually, if you let the build go on, many many APIs have this problem for this configuration.
Serial
, but it does enable Serial
in KokkosKokkosKernels_TEST_ETI_ONLY=OFF
, so KokkosKernels_TEST_ETI_ONLY
defaults to ONTEST_ETI_ONLY
is on, the actual API definitions are missing for non-ETI'ed things, so of course the serial test then cannot find the non-ETI'ed serial functions@lucbv what are we supposed to be doing?
here we try to build the KokkosKernels_lapack_serial
test whenever the Serial
backend is enabled, regardless of what we're ETI'ing
Here we declare template <..., false> struct TRTRI
but only define it when both
!defined(KOKKOSKERNELS_ETI_ONLY)
KOKKOSKERNELS_IMPL_COMPILE_LIBRARY
is falseAs expected, in every generated ETI file, KOKKOSKERNELS_IMPL_COMPILE_LIBRARY
is true
, so that defines template <..., true> struct TRTRI
, but not the missing template <..., false> struct TRTRI
However, when we compile the serial test file KOKKOSKERNELS_ETI_ONLY
is defined and KOKKOSKERNELS_IMPL_COMPILE_LIBRARY
is not, which means we're trying to use template <..., false> struct TRTRI
which is not defined under those circumstances (correctly, as it is not ETI'ed)
Test_Serial.hpp has
#if defined(KOKKOSKERNELS_TEST_ETI_ONLY) && !defined(KOKKOSKERNELS_ETI_ONLY)
#define KOKKOSKERNELS_ETI_ONLY
#endif
cm_test_all_sandia sets ENABLE_TEST_ETI_ONLY=True
, which means -DKokkosKernels_TEST_ETI_ONLY=OFF
is never set, so KOKKOSKERNELS_TEST_ETI_ONLY
ends up defined
Builds (at least with cuda/11.2.2) with no eti fail to link trtri:
Reproducer: (weaver rhel8)