Trilinos no longer builds with Scalar=complex<float>
Created by: mhoemmen
@trilinos/tpetra @trilinos/amesos2
I found this out when testing Amesos2. See e.g., #4194 (closed).
Current Behavior
Tpetra and downstream classes do not build with Scalar=complex<float>
. I get errors of the form discussed here: https://github.com/kokkos/kokkos/issues/1964 . The case Scalar=Kokkos::complex<double>
still works, because it uses a different overload of these Kokkos functions that does not attempt to put the output type in a union with unsigned long long int
.
Motivation and Context
Sierra currently enables complex<float>
in its Trilinos build. This error also showed up in #4194 (closed), since Amesos2 was incorrectly attempting to build with Scalar=complex<float>
, even though it was not enabled in Tpetra.
Possible Solution
I am working on a work-around, namely to overload Kokkos::Impl::atomic_fetch_oper
and Kokkos::Impl::atomic_oper_fetch
specifically for Kokkos::complex<float>
.
Steps to Reproduce
Set the CMake option Trilinos_ENABLE_COMPLEX_FLOAT:BOOL=ON
.
Related Issues
- Related to #4194 (closed)