Kokkos::resize() no longer works for Sacado Fad scalar types
Created by: etphipp
@trilinos/sacado @ndellingwood @vbrunini
As reported by Victor Brunini, Kokkos::resize() doesn't compile when called with a View of Fad's:
n file included from /sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_Parallel.hpp:52:0,
from /sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_Serial.hpp:55,
from /sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_Core.hpp:53,
from /sierra/dev/nightly/Sierra.trilinos.master/aria/include/Aria_ElementRange.h:13,
from /sierra/dev/nightly/Sierra.trilinos.master/aria/src/Aria_FAD_Expression_Handle.C:10:
/sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_View.hpp: In instantiation of 'Kokkos::View::View(const Kokkos::View&) [with RT = Sacado::Fad::DFad*; RP = {Kokkos::LayoutRight, Kokkos::HostSpace}; DataType = Sacado::Fad::DFad*; Properties = {Kokkos::LayoutLeft, Kokkos::Device, Kokkos::MemoryTraits<0u>}]':
/sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_CopyViews.hpp:665:9: required from 'void Kokkos::Impl::view_copy(const DstType&, const SrcType&) [with DstType = Kokkos::View<sacado::fad::dfad*, Kokkos::LayoutRight, Kokkos::HostSpace>; SrcType = Kokkos::View<sacado::fad::dfad*, Kokkos::LayoutRight, Kokkos::HostSpace>]'
/sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_CopyViews.hpp:807:24: required from 'Kokkos::Impl::ViewRemap::ViewRemap(const DstType&, const SrcType&) [with DstType = Kokkos::View<sacado::fad::dfad*, Kokkos::LayoutRight, Kokkos::HostSpace>; SrcType = Kokkos::View<sacado::fad::dfad*, Kokkos::LayoutRight, Kokkos::HostSpace>; ExecSpace = Kokkos::Serial]'
/sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_CopyViews.hpp:1853:3: required from 'typename std::enable_if<(std::is_same::array_layout, Kokkos::LayoutLeft>::value || std::is_same::array_layout, Kokkos::LayoutRight>::value)>::type Kokkos::resize(Kokkos::View&, size_t, size_t, size_t, size_t, size_t, size_t, size_t, size_t) [with T = Sacado::Fad::DFad*; P = {Kokkos::LayoutRight, Kokkos::HostSpace}; typename std::enable_if<(std::is_same::array_layout, Kokkos::LayoutLeft>::value || std::is_same::array_layout, Kokkos::LayoutRight>::value)>::type = void; size_t = long unsigned int]'
/sierra/dev/nightly/Sierra.trilinos.master/aria/src/Aria_FAD_Expression_Handle.C:41:99: required from here
/sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_View.hpp:1953:7: error: static assertion failed: Incompatible View copy construction
static_assert( Mapping::is_assignable , "Incompatible View copy construction" );
^
/sierra/dev/nightly/Sierra.trilinos.master/TPLs_src/Trilinos/packages/kokkos/core/src/Kokkos_View.hpp:1954:56: error: 'assign' is not a member of 'Mapping {aka Kokkos::Impl::ViewMapping<kokkos::viewtraits<sacado::fad::dfad*, Kokkos::LayoutLeft, Kokkos::Device, Kokkos::MemoryTraits<0u> >, Kokkos::ViewTraits<sacado::fad::dfad*, Kokkos::LayoutRight, Kokkos::HostSpace>, void>}'
Mapping::assign( m_map , rhs.m_map , rhs.m_track );
I verified the error and it appears to arise because internally Kokkos creates views of differing memory spaces, which fails Sacado's check for assignability. I am working on a fix.