29 #include "Teuchos_TestingHelpers.hpp" 36 static const bool value =
false;
39 template <
typename T,
int N>
46 static const bool value =
false;
54 template <
typename FadType1,
typename FadType2>
56 Teuchos::FancyOStream& out,
double tol = 1.0e-15)
61 TEUCHOS_TEST_EQUALITY(
x.size(), x2.size(), out, success);
64 TEUCHOS_TEST_FLOATING_EQUALITY(
x.val(), x2.val(),
tol, out, success);
67 for (
int i=0;
i<
x.size(); ++
i)
68 TEUCHOS_TEST_FLOATING_EQUALITY(
x.dx(
i), x2.dx(
i),
tol, out, success);
73 template <
typename fadtype,
typename ordinal>
76 const ordinal num_cols,
77 const ordinal fad_size,
81 typedef typename fadtype::value_type scalar;
82 fadtype
x(fad_size, scalar(0.0));
84 const scalar x_row = 100.0 + scalar(num_rows) / scalar(row+1);
85 const scalar x_col = 10.0 + scalar(num_cols) / scalar(col+1);
86 x.val() = x_row + x_col;
87 for (ordinal
i=0;
i<fad_size; ++
i) {
88 const scalar x_fad = 1.0 + scalar(fad_size) / scalar(
i+1);
89 x.fastAccessDx(
i) = x_row + x_col + x_fad;
94 #ifndef GLOBAL_FAD_SIZE 95 #define GLOBAL_FAD_SIZE 5 102 template <
typename InputViewType1,
103 typename InputViewType2 = InputViewType1,
104 typename OutputViewType = InputViewType1>
118 const InputViewType2 v2,
119 const OutputViewType v3,
124 KOKKOS_INLINE_FUNCTION
132 KOKKOS_INLINE_FUNCTION
135 const size_type i = team.league_rank()*team.team_size() + team.team_rank();
136 if (
i <
m_v1.extent(0))
141 static void apply(
const InputViewType1 v1,
142 const InputViewType2 v2,
143 const OutputViewType v3,
144 const bool update =
false) {
147 #if defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL) 148 const size_type stride = Kokkos::ViewScalarStride<InputViewType1>::stride;
149 const bool use_team =
154 #elif defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL_DFAD) 156 const bool use_team =
163 const bool use_team =
false;
167 const size_type team_size = 256 / stride;
179 template <
typename ViewType>
183 typedef typename ViewType::value_type::value_type
ScalarType;
196 KOKKOS_INLINE_FUNCTION
201 KOKKOS_INLINE_FUNCTION
204 const size_type i = team.league_rank()*team.team_size() + team.team_rank();
205 if (
i <
m_v.extent(0))
213 #if defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL) 214 const bool use_team =
219 #elif defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL_DFAD) 220 const bool use_team =
226 const bool use_team =
false;
242 template <
typename ViewType>
260 KOKKOS_INLINE_FUNCTION
266 KOKKOS_INLINE_FUNCTION
269 const size_type i = team.league_rank()*team.team_size() + team.team_rank();
270 if (
i <
m_v.extent(0))
278 #if defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL) 279 const bool use_team =
284 #elif defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL_DFAD) 285 const bool use_team =
291 const bool use_team =
false;
307 template <
typename InputViewType,
308 typename OutputViewType,
309 typename Enabled =
void>
323 const OutputViewType v2,
326 static_assert(
unsigned(InputViewType::Rank) == 2 ,
327 "Require rank-2 input view" );
328 static_assert(
unsigned(OutputViewType::Rank) == 1 ,
329 "Require rank-1 output view" );
333 KOKKOS_INLINE_FUNCTION
338 KOKKOS_INLINE_FUNCTION
341 const size_type i = team.league_rank()*team.team_size() + team.team_rank();
342 if (
i <
m_v1.extent(0))
347 static void apply(
const InputViewType v1,
348 const OutputViewType v2,
352 #if defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL) 353 const bool use_team =
358 #elif defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL_DFAD) 359 const bool use_team =
365 const bool use_team =
false;
381 template <
typename ViewType,
typename ScalarViewType>
398 KOKKOS_INLINE_FUNCTION
401 Kokkos::atomic_add(&(
m_s()),
x);
404 KOKKOS_INLINE_FUNCTION
407 const size_type i = team.league_rank()*team.team_size() + team.team_rank();
408 if (
i <
m_v.extent(0))
413 static void apply(
const ViewType& v,
const ScalarViewType& s) {
416 #if defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL) 417 const bool use_team =
422 #elif defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL_DFAD) 423 const bool use_team =
429 const bool use_team =
false;
445 Kokkos_View_Fad, Size,
FadType, Layout, Device )
447 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
448 typedef typename ViewType::size_type size_type;
454 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 455 v = ViewType(
"view", num_rows);
458 v = ViewType(
"view", num_rows, fad_size+1);
460 TEUCHOS_TEST_EQUALITY(v.size(), num_rows, out, success);
464 Kokkos_View_Fad, DeepCopy,
FadType, Layout, Device )
466 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
467 typedef typename ViewType::size_type size_type;
468 typedef typename ViewType::HostMirror host_view_type;
476 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 477 v = ViewType (
"view", num_rows, num_cols);
479 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
481 host_view_type h_v = Kokkos::create_mirror_view(v);
482 for (size_type
i=0;
i<num_rows; ++
i)
483 for (size_type j=0; j<num_cols; ++j)
484 h_v(
i,j) = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
485 Kokkos::deep_copy(v, h_v);
488 host_view_type h_v2 = Kokkos::create_mirror_view(v);
489 Kokkos::deep_copy(h_v2, v);
493 for (size_type
i=0;
i<num_rows; ++
i) {
494 for (size_type j=0; j<num_cols; ++j) {
495 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
496 success = success &&
checkFads(f, h_v2(
i,j), out);
502 Kokkos_View_Fad, DeepCopy_ConstantScalar,
FadType, Layout, Device )
504 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
505 typedef typename ViewType::size_type size_type;
506 typedef typename ViewType::HostMirror host_view_type;
507 typedef typename FadType::value_type value_type;
514 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 515 v = ViewType (
"view", num_rows, num_cols);
518 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
520 typename ViewType::array_type va = v;
521 Kokkos::deep_copy( va, 1.0 );
524 value_type
a = 2.3456;
525 Kokkos::deep_copy( v,
a );
528 host_view_type hv = Kokkos::create_mirror_view(v);
529 Kokkos::deep_copy(hv, v);
533 for (size_type
i=0;
i<num_rows; ++
i) {
534 for (size_type j=0; j<num_cols; ++j) {
535 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 540 success = success &&
checkFads(f, hv(
i,j), out);
546 Kokkos_View_Fad, DeepCopy_ConstantZero,
FadType, Layout, Device )
548 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
549 typedef typename ViewType::size_type size_type;
550 typedef typename ViewType::HostMirror host_view_type;
551 typedef typename FadType::value_type value_type;
558 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 559 v = ViewType (
"view", num_rows, num_cols);
562 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
564 typename ViewType::array_type va = v;
565 Kokkos::deep_copy( va, 1.0 );
569 Kokkos::deep_copy( v,
a );
572 host_view_type hv = Kokkos::create_mirror_view(v);
573 Kokkos::deep_copy(hv, v);
577 for (size_type
i=0;
i<num_rows; ++
i) {
578 for (size_type j=0; j<num_cols; ++j) {
579 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 584 success = success &&
checkFads(f, hv(
i,j), out);
590 Kokkos_View_Fad, DeepCopy_ConstantFad,
FadType, Layout, Device )
592 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
593 typedef typename ViewType::size_type size_type;
594 typedef typename ViewType::HostMirror host_view_type;
601 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 602 v = ViewType (
"view", num_rows, num_cols);
605 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
607 typename ViewType::array_type va = v;
608 Kokkos::deep_copy( va, 1.0 );
612 Kokkos::deep_copy( v,
a );
615 host_view_type hv = Kokkos::create_mirror_view(v);
616 Kokkos::deep_copy(hv, v);
620 for (size_type
i=0;
i<num_rows; ++
i) {
621 for (size_type j=0; j<num_cols; ++j) {
622 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 627 success = success &&
checkFads(f, hv(
i,j), out);
633 Kokkos_View_Fad, DeepCopy_ConstantFadFull,
FadType, Layout, Device )
635 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
636 typedef typename ViewType::size_type size_type;
637 typedef typename ViewType::HostMirror host_view_type;
645 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 646 v = ViewType (
"view", num_rows, num_cols);
648 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
650 typename ViewType::array_type va = v;
651 Kokkos::deep_copy( va, 1.0 );
655 for (size_type
i=0;
i<fad_size; ++
i)
656 a.fastAccessDx(
i) = 7.89 + (
i+1);
657 Kokkos::deep_copy( v,
a );
660 host_view_type hv = Kokkos::create_mirror_view(v);
661 Kokkos::deep_copy(hv, v);
665 for (size_type
i=0;
i<num_rows; ++
i) {
666 for (size_type j=0; j<num_cols; ++j) {
673 Kokkos_View_Fad, ScalarAssign,
FadType, Layout, Device )
675 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
676 typedef typename ViewType::size_type size_type;
677 typedef typename ViewType::HostMirror host_view_type;
678 typedef typename FadType::value_type value_type;
684 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 685 v = ViewType (
"view", num_rows);
688 v = ViewType (
"view", num_rows, fad_size+1);
690 typename ViewType::array_type va = v;
691 Kokkos::deep_copy( va, 1.0 );
694 value_type
a = 2.3456;
698 host_view_type hv = Kokkos::create_mirror_view(v);
699 Kokkos::deep_copy(hv, v);
703 for (size_type
i=0;
i<num_rows; ++
i) {
704 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 709 success = success &&
checkFads(f, hv(
i), out);
714 Kokkos_View_Fad, ValueAssign,
FadType, Layout, Device )
716 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
717 typedef typename ViewType::size_type size_type;
718 typedef typename ViewType::HostMirror host_view_type;
725 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 726 v = ViewType (
"view", num_rows);
728 v = ViewType (
"view", num_rows, fad_size+1);
730 typename ViewType::array_type va = v;
731 Kokkos::deep_copy( va, 1.0 );
735 for (size_type
i=0;
i<fad_size; ++
i)
736 a.fastAccessDx(
i) = 7.89+
i;
740 host_view_type hv = Kokkos::create_mirror_view(v);
741 Kokkos::deep_copy(hv, v);
745 for (size_type
i=0;
i<num_rows; ++
i) {
751 Kokkos_View_Fad, Resize,
FadType, Layout, Device )
753 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
754 typedef typename ViewType::size_type size_type;
755 typedef typename ViewType::HostMirror host_view_type;
763 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 764 v = ViewType (
"view", num_rows, num_cols);
766 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
768 host_view_type h_v = Kokkos::create_mirror_view(v);
769 for (size_type
i=0;
i<num_rows; ++
i)
770 for (size_type j=0; j<num_cols; ++j)
771 h_v(
i,j) = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
772 Kokkos::deep_copy(v, h_v);
775 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 776 Kokkos::resize(v, num_rows, num_cols+1);
778 Kokkos::resize(v, num_rows, num_cols+1, fad_size+1);
782 host_view_type h_v2 = Kokkos::create_mirror_view(v);
783 Kokkos::deep_copy(h_v2, v);
787 for (size_type
i=0;
i<num_rows; ++
i) {
788 for (size_type j=0; j<num_cols; ++j) {
789 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
790 success = success &&
checkFads(f, h_v2(
i,j), out);
792 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 797 success = success &&
checkFads(f, h_v2(
i,num_cols), out);
802 Kokkos_View_Fad, Multiply,
FadType, Layout, Device )
804 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
805 typedef typename ViewType::size_type size_type;
806 typedef typename ViewType::HostMirror host_view_type;
813 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 814 v1 = ViewType (
"view1", num_rows);
815 v2 = ViewType (
"view2", num_rows);
817 v1 = ViewType (
"view1", num_rows, fad_size+1);
818 v2 = ViewType (
"view2", num_rows, fad_size+1);
820 host_view_type h_v1 = Kokkos::create_mirror_view(v1);
821 host_view_type h_v2 = Kokkos::create_mirror_view(v2);
822 for (size_type
i=0;
i<num_rows; ++
i) {
823 h_v1(
i) = generate_fad<FadType>(
824 num_rows, size_type(2), fad_size,
i, size_type(0));
825 h_v2(
i) = generate_fad<FadType>(
826 num_rows, size_type(2), fad_size,
i, size_type(1));
828 Kokkos::deep_copy(v1, h_v1);
829 Kokkos::deep_copy(v2, h_v2);
833 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 834 v3 = ViewType (
"view3", num_rows);
836 v3 = ViewType (
"view3", num_rows, fad_size+1);
841 host_view_type h_v3 = Kokkos::create_mirror_view(v3);
842 Kokkos::deep_copy(h_v3, v3);
846 for (size_type
i=0;
i<num_rows; ++
i) {
848 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(0));
850 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(1));
852 success = success &&
checkFads(f3, h_v3(
i), out);
857 Kokkos_View_Fad, MultiplyUpdate,
FadType, Layout, Device )
859 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
860 typedef typename ViewType::size_type size_type;
861 typedef typename ViewType::HostMirror host_view_type;
868 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 869 v1 = ViewType (
"view1", num_rows);
870 v2 = ViewType (
"view2", num_rows);
872 v1 = ViewType (
"view1", num_rows, fad_size+1);
873 v2 = ViewType (
"view2", num_rows, fad_size+1);
875 host_view_type h_v1 = Kokkos::create_mirror_view(v1);
876 host_view_type h_v2 = Kokkos::create_mirror_view(v2);
877 for (size_type
i=0;
i<num_rows; ++
i) {
878 h_v1(
i) = generate_fad<FadType>(
879 num_rows, size_type(2), fad_size,
i, size_type(0));
880 h_v2(
i) = generate_fad<FadType>(
881 num_rows, size_type(2), fad_size,
i, size_type(1));
883 Kokkos::deep_copy(v1, h_v1);
884 Kokkos::deep_copy(v2, h_v2);
888 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 889 v3 = ViewType (
"view3", num_rows);
891 v3 = ViewType (
"view3", num_rows, fad_size+1);
893 Kokkos::deep_copy(v3, 1.0);
897 host_view_type h_v3 = Kokkos::create_mirror_view(v3);
898 Kokkos::deep_copy(h_v3, v3);
902 for (size_type
i=0;
i<num_rows; ++
i) {
904 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(0));
906 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(1));
908 success = success &&
checkFads(f3, h_v3(
i), out);
913 Kokkos_View_Fad, MultiplyConst,
FadType, Layout, Device )
915 typedef Kokkos::View<const FadType*,Layout,Device,Kokkos::MemoryUnmanaged> ConstViewType;
916 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
917 typedef typename ViewType::size_type size_type;
918 typedef typename ViewType::HostMirror host_view_type;
925 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 926 v1 = ViewType (
"view1", num_rows);
927 v2 = ViewType (
"view2", num_rows);
929 v1 = ViewType (
"view1", num_rows, fad_size+1);
930 v2 = ViewType (
"view2", num_rows, fad_size+1);
932 host_view_type h_v1 = Kokkos::create_mirror_view(v1);
933 host_view_type h_v2 = Kokkos::create_mirror_view(v2);
934 for (size_type
i=0;
i<num_rows; ++
i) {
935 h_v1(
i) = generate_fad<FadType>(
936 num_rows, size_type(2), fad_size,
i, size_type(0));
937 h_v2(
i) = generate_fad<FadType>(
938 num_rows, size_type(2), fad_size,
i, size_type(1));
940 Kokkos::deep_copy(v1, h_v1);
941 Kokkos::deep_copy(v2, h_v2);
943 ConstViewType cv1 = v1;
947 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 948 v3 = ViewType (
"view3", num_rows);
950 v3 = ViewType (
"view3", num_rows, fad_size+1);
955 host_view_type h_v3 = Kokkos::create_mirror_view(v3);
956 Kokkos::deep_copy(h_v3, v3);
960 for (size_type
i=0;
i<num_rows; ++
i) {
962 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(0));
964 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(1));
966 success = success &&
checkFads(f3, h_v3(
i), out);
971 Kokkos_View_Fad, MultiplyMixed,
FadType, Layout, Device )
973 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
974 typedef typename ViewType::size_type size_type;
975 typedef typename ViewType::HostMirror host_view_type;
977 const size_type num_rows = 2;
981 FadType f0 = generate_fad<FadType>(
982 num_rows, size_type(2), fad_size, size_type(0), size_type(0));
983 FadType f1 = generate_fad<FadType>(
984 num_rows, size_type(2), fad_size, size_type(1), size_type(0));
986 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 987 h_v = host_view_type (
"view1", num_rows);
989 h_v = host_view_type (
"view1", num_rows, fad_size+1);
1002 Kokkos_View_Fad, AtomicAdd,
FadType, Layout, Device )
1004 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
1005 typedef Kokkos::View<FadType,Layout,Device> ScalarViewType;
1006 typedef typename ViewType::size_type size_type;
1007 typedef typename ScalarViewType::HostMirror host_scalar_view_type;
1014 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1015 v = ViewType (
"view", num_rows);
1017 v = ViewType (
"view", num_rows, fad_size+1);
1020 for (size_type
i=0;
i<fad_size; ++
i)
1021 a.fastAccessDx(
i) = 7.89+
i;
1022 Kokkos::deep_copy( v,
a );
1026 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1027 s = ScalarViewType (
"scalar view");
1029 s = ScalarViewType (
"scalar view", fad_size+1);
1031 Kokkos::deep_copy( s,
FadType(fad_size,0.0) );
1037 host_scalar_view_type hs = Kokkos::create_mirror_view(s);
1038 Kokkos::deep_copy(hs, s);
1046 Kokkos_View_Fad, Rank8,
FadType, Layout, Device )
1048 typedef Kokkos::View<FadType*******,Layout,Device> ViewType;
1049 typedef typename ViewType::size_type size_type;
1050 typedef typename ViewType::HostMirror host_view_type;
1056 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1057 v = ViewType (
"view", 100, 1, 2, 3, 4, 5, 6);
1059 v = ViewType (
"view", 100, 1, 2, 3, 4, 5, 6, fad_size+1);
1061 host_view_type h_v = Kokkos::create_mirror_view(v);
1062 typename host_view_type::array_type h_a = h_v;
1063 Kokkos::deep_copy(h_a, 1.0);
1066 h_v(99,0,1,2,3,4,5) = f1;
1067 FadType f2 = h_v(99,0,1,2,3,4,5);
1074 Kokkos_View_Fad, Roger,
FadType, Layout, Device )
1076 Kokkos::View<FadType*,Layout,Device>
a;
1077 Kokkos::View<FadType**,Layout,Device> b;
1078 Kokkos::View<FadType***,Layout,Device>
c;
1079 Kokkos::View<FadType****,Layout,Device> d;
1080 Kokkos::View<FadType*****,Layout,Device> e;
1081 Kokkos::View<FadType******,Layout,Device> f;
1082 Kokkos::View<FadType*******,Layout,Device> g;
1084 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1085 a = Kokkos::View<FadType*,Layout,Device>(
"a",4);
1086 b = Kokkos::View<FadType**,Layout,Device> (
"b",4,4);
1087 c = Kokkos::View<FadType***,Layout,Device> (
"c",4,4,4);
1088 d = Kokkos::View<FadType****,Layout,Device> (
"d",4,4,4,4);
1089 e = Kokkos::View<FadType*****,Layout,Device> (
"e",4,4,4,4,4);
1090 f = Kokkos::View<FadType******,Layout,Device> (
"f",4,4,4,4,4,4);
1091 g = Kokkos::View<FadType*******,Layout,Device> (
"g",4,4,4,4,4,4,4);
1094 a = Kokkos::View<FadType*,Layout,Device>(
"a",4,fad_size+1);
1095 b = Kokkos::View<FadType**,Layout,Device> (
"b",4,4,fad_size+1);
1096 c = Kokkos::View<FadType***,Layout,Device> (
"c",4,4,4,fad_size+1);
1097 d = Kokkos::View<FadType****,Layout,Device> (
"d",4,4,4,4,fad_size+1);
1098 e = Kokkos::View<FadType*****,Layout,Device> (
"e",4,4,4,4,4,fad_size+1);
1099 f = Kokkos::View<FadType******,Layout,Device> (
"f",4,4,4,4,4,4,fad_size+1);
1100 g = Kokkos::View<FadType*******,Layout,Device> (
"g",4,4,4,4,4,4,4,fad_size+1);
1103 typedef typename Device::memory_space memory_space;
1104 const bool is_accessible =
1105 Kokkos::Impl::MemorySpaceAccess<Kokkos::HostSpace,
1106 memory_space>::accessible;
1107 if (is_accessible) {
1109 f(0,0,0,0,0,0) =
FadType(1.0);
1110 g(0,0,0,0,0,0,0) =
FadType(1.0);
1118 Kokkos_View_Fad, AssignDifferentStrides,
FadType, Layout, Device )
1120 typedef Kokkos::View<FadType**,Layout,Device> ViewType1;
1121 typedef Kokkos::View<FadType*,Layout,Device> ViewType2;
1122 typedef typename ViewType1::size_type size_type;
1123 typedef typename ViewType1::HostMirror host_view_type1;
1124 typedef typename ViewType2::HostMirror host_view_type2;
1132 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1133 v1 = ViewType1 (
"view1", num_rows, num_cols);
1135 v1 = ViewType1 (
"view1", num_rows, num_cols, fad_size+1);
1137 host_view_type1 h_v1 = Kokkos::create_mirror_view(v1);
1138 for (size_type
i=0;
i<num_rows; ++
i) {
1139 for (size_type j=0; j<num_cols; ++j) {
1140 h_v1(
i,j) = generate_fad<FadType>(
1141 num_rows, num_cols, fad_size,
i, j);
1144 Kokkos::deep_copy(v1, h_v1);
1148 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1149 v2 = ViewType2 (
"view2", num_rows);
1151 v2 = ViewType2 (
"view2", num_rows, fad_size+1);
1156 host_view_type2 h_v2 = Kokkos::create_mirror_view(v2);
1157 Kokkos::deep_copy(h_v2, v2);
1161 for (size_type
i=0;
i<num_rows; ++
i) {
1163 generate_fad<FadType>(num_rows, num_cols, fad_size,
i, size_type(1));
1164 success = success &&
checkFads(f, h_v2(
i), out);
1168 #if defined(HAVE_SACADO_KOKKOSCONTAINERS) && defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 1171 Kokkos_View_Fad, DynRankDimensionScalar,
FadType, Layout, Device )
1173 typedef Kokkos::DynRankView<double,Layout,Device> DoubleViewType;
1174 typedef Kokkos::DynRankView<FadType,Layout,Device> FadViewType;
1175 typedef typename FadViewType::size_type size_type;
1181 DoubleViewType v1(
"view1", num_rows);
1182 FadViewType v2 (
"view2", num_rows, fad_size+1);
1185 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(v1), 0, out, success);
1186 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(v2), fad_size+1, out, success);
1190 Kokkos_View_Fad, DynRankAssignStatic0,
FadType, Layout, Device )
1192 typedef Kokkos::View<FadType,Layout,Device> StaticViewType;
1193 typedef Kokkos::DynRankView<FadType,Layout,Device> DynamicViewType;
1194 typedef typename StaticViewType::size_type size_type;
1201 StaticViewType v1(
"view", fad_size+1);
1202 auto h_v1 = Kokkos::create_mirror_view(v1);
1203 h_v1() = generate_fad<FadType>(num_rows, num_cols, fad_size, size_type(0), size_type(0));
1204 Kokkos::deep_copy(v1, h_v1);
1207 DynamicViewType v2 = v1;
1210 auto h_v2 = Kokkos::create_mirror_view(v2);
1211 Kokkos::deep_copy(h_v2, v2);
1214 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(v2), fad_size+1, out, success);
1215 TEUCHOS_TEST_EQUALITY(v2.stride_0(), v1.stride_0(), out, success);
1219 generate_fad<FadType>(num_rows, num_cols, fad_size, size_type(0), size_type(0));
1220 success = success &&
checkFads(f, h_v2(), out);
1224 Kokkos_View_Fad, DynRankAssignStatic1,
FadType, Layout, Device )
1226 typedef Kokkos::View<FadType*,Layout,Device> StaticViewType;
1227 typedef Kokkos::DynRankView<FadType,Layout,Device> DynamicViewType;
1228 typedef typename StaticViewType::size_type size_type;
1235 StaticViewType v1(
"view", num_rows, fad_size+1);
1236 auto h_v1 = Kokkos::create_mirror_view(v1);
1237 for (size_type
i=0;
i<num_rows; ++
i)
1239 generate_fad<FadType>(num_rows, num_cols, fad_size,
i, size_type(0));
1240 Kokkos::deep_copy(v1, h_v1);
1243 DynamicViewType v2 = v1;
1246 auto h_v2 = Kokkos::create_mirror_view(v2);
1247 Kokkos::deep_copy(h_v2, v2);
1250 TEUCHOS_TEST_EQUALITY(v2.extent(0), num_rows, out, success);
1251 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(v2), fad_size+1, out, success);
1252 TEUCHOS_TEST_EQUALITY(v2.stride_0(), v1.stride_0(), out, success);
1253 TEUCHOS_TEST_EQUALITY(v2.stride_1(), v1.stride_1(), out, success);
1256 for (size_type
i=0;
i<num_rows; ++
i) {
1258 generate_fad<FadType>(num_rows, num_cols, fad_size,
i, size_type(0));
1259 success = success &&
checkFads(f, h_v2(
i), out);
1264 Kokkos_View_Fad, DynRankAssignStatic2,
FadType, Layout, Device )
1266 typedef Kokkos::View<FadType**,Layout,Device> StaticViewType;
1267 typedef Kokkos::DynRankView<FadType,Layout,Device> DynamicViewType;
1268 typedef typename StaticViewType::size_type size_type;
1275 StaticViewType v1(
"view", num_rows, num_cols, fad_size+1);
1276 auto h_v1 = Kokkos::create_mirror_view(v1);
1277 for (size_type
i=0;
i<num_rows; ++
i)
1278 for (size_type j=0; j<num_cols; ++j)
1279 h_v1(
i,j) = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1280 Kokkos::deep_copy(v1, h_v1);
1283 DynamicViewType v2 = v1;
1286 auto h_v2 = Kokkos::create_mirror_view(v2);
1287 Kokkos::deep_copy(h_v2, v2);
1290 TEUCHOS_TEST_EQUALITY(v2.extent(0), num_rows, out, success);
1291 TEUCHOS_TEST_EQUALITY(v2.extent(1), num_cols, out, success);
1292 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(v2), fad_size+1, out, success);
1293 TEUCHOS_TEST_EQUALITY(v2.stride_0(), v1.stride_0(), out, success);
1294 TEUCHOS_TEST_EQUALITY(v2.stride_1(), v1.stride_1(), out, success);
1295 TEUCHOS_TEST_EQUALITY(v2.stride_2(), v1.stride_2(), out, success);
1298 for (size_type
i=0;
i<num_rows; ++
i) {
1299 for (size_type j=0; j<num_cols; ++j) {
1300 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1301 success = success &&
checkFads(f, h_v2(
i,j), out);
1307 Kokkos_View_Fad, DynRankMultiply,
FadType, Layout, Device )
1309 typedef Kokkos::DynRankView<FadType,Layout,Device> ViewType;
1310 typedef typename ViewType::size_type size_type;
1311 typedef typename ViewType::HostMirror host_view_type;
1317 ViewType v1(
"view1", num_rows, fad_size+1);
1318 ViewType v2(
"view2", num_rows, fad_size+1);
1319 host_view_type h_v1 = Kokkos::create_mirror_view(v1);
1320 host_view_type h_v2 = Kokkos::create_mirror_view(v2);
1321 for (size_type
i=0;
i<num_rows; ++
i) {
1322 h_v1(
i) = generate_fad<FadType>(
1323 num_rows, size_type(2), fad_size,
i, size_type(0));
1324 h_v2(
i) = generate_fad<FadType>(
1325 num_rows, size_type(2), fad_size,
i, size_type(1));
1327 Kokkos::deep_copy(v1, h_v1);
1328 Kokkos::deep_copy(v2, h_v2);
1331 ViewType v3(
"view3", num_rows, fad_size+1);
1335 host_view_type h_v3 = Kokkos::create_mirror_view(v3);
1336 Kokkos::deep_copy(h_v3, v3);
1340 TEUCHOS_TEST_EQUALITY(v3.rank(), 1, out, success);
1341 for (size_type
i=0;
i<num_rows; ++
i) {
1343 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(0));
1345 generate_fad<FadType>(num_rows, size_type(2), fad_size,
i, size_type(1));
1347 success = success &&
checkFads(f3, h_v3(
i), out);
1352 Kokkos_View_Fad, SubdynrankviewCol,
FadType, Layout, Device )
1354 typedef Kokkos::DynRankView<FadType,Layout,Device> ViewType;
1355 typedef typename ViewType::size_type size_type;
1356 typedef typename ViewType::HostMirror host_view_type;
1363 ViewType v(
"view", num_rows, num_cols, fad_size+1);
1364 host_view_type h_v = Kokkos::create_mirror_view(v);
1365 for (size_type
i=0;
i<num_rows; ++
i) {
1366 for (size_type j=0; j<num_cols; ++j) {
1367 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1371 Kokkos::deep_copy(v, h_v);
1375 auto s = Kokkos::subdynrankview(v, Kokkos::ALL(), col);
1378 typedef decltype(s) SubviewType;
1379 typedef typename SubviewType::HostMirror HostSubviewType;
1385 HostSubviewType h_s = Kokkos::subdynrankview(h_v, Kokkos::ALL(), col);
1389 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(s), fad_size+1, out, success);
1390 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_s), fad_size+1, out, success);
1391 TEUCHOS_TEST_EQUALITY(h_s.extent(0), num_rows, out, success);
1392 TEUCHOS_TEST_EQUALITY(h_s.extent(1), 1, out, success);
1393 TEUCHOS_TEST_EQUALITY(h_s.extent(7), 1, out, success);
1395 for (size_type
i=0;
i<num_rows; ++
i) {
1396 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, col);
1397 success = success &&
checkFads(f, h_s(
i), out);
1402 Kokkos_View_Fad, SubdynrankviewRow,
FadType, Layout, Device )
1404 typedef Kokkos::DynRankView<FadType,Layout,Device> ViewType;
1405 typedef typename ViewType::size_type size_type;
1406 typedef typename ViewType::HostMirror host_view_type;
1410 const size_type num_planes = 9;
1414 ViewType v(
"view", num_rows, num_cols, num_planes, fad_size+1);
1415 host_view_type h_v = Kokkos::create_mirror_view(v);
1416 for (size_type
i=0;
i<num_rows; ++
i) {
1417 for (size_type j=0; j<num_cols; ++j) {
1418 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1419 for (size_type k=0; k<num_planes; ++k) {
1420 h_v(
i,j,k) = (k+1)*f;
1424 Kokkos::deep_copy(v, h_v);
1428 auto s = Kokkos::subdynrankview(v, row, Kokkos::ALL(), Kokkos::ALL());
1431 typedef decltype(s) SubviewType;
1432 typedef typename SubviewType::HostMirror HostSubviewType;
1438 HostSubviewType h_s =
1439 Kokkos::subdynrankview(h_v, row, Kokkos::ALL(), Kokkos::ALL());
1443 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(s), fad_size+1, out, success);
1444 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_s), fad_size+1, out, success);
1445 TEUCHOS_TEST_EQUALITY(h_s.extent(0), num_cols, out, success);
1446 TEUCHOS_TEST_EQUALITY(h_s.extent(1), num_planes, out, success);
1447 TEUCHOS_TEST_EQUALITY(h_s.extent(2), 1, out, success);
1448 TEUCHOS_TEST_EQUALITY(h_s.extent(7), 1, out, success);
1450 for (size_type j=0; j<num_cols; ++j) {
1451 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size, row, j);
1452 for (size_type k=0; k<num_planes; ++k) {
1454 success = success &&
checkFads(g, h_s(j,k), out);
1460 Kokkos_View_Fad, SubdynrankviewScalar,
FadType, Layout, Device )
1462 typedef Kokkos::DynRankView<FadType,Layout,Device> ViewType;
1463 typedef typename ViewType::size_type size_type;
1464 typedef typename ViewType::HostMirror host_view_type;
1471 ViewType v(
"view", num_rows, num_cols, fad_size+1);
1472 host_view_type h_v = Kokkos::create_mirror_view(v);
1473 for (size_type
i=0;
i<num_rows; ++
i) {
1474 for (size_type j=0; j<num_cols; ++j) {
1475 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1479 Kokkos::deep_copy(v, h_v);
1484 auto s = Kokkos::subdynrankview(v, row, col);
1487 typedef decltype(s) SubviewType;
1488 typedef typename SubviewType::HostMirror HostSubviewType;
1494 HostSubviewType h_s = Kokkos::subdynrankview(h_v, row, col);
1498 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(s), fad_size+1, out, success);
1499 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_s), fad_size+1, out, success);
1500 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size, row, col);
1501 success = success &&
checkFads(f, h_s(), out);
1507 Kokkos_View_Fad, DynRankDimensionScalar,
FadType, Layout, Device ) {}
1509 Kokkos_View_Fad, DynRankAssignStatic0,
FadType, Layout, Device ) {}
1511 Kokkos_View_Fad, DynRankAssignStatic1,
FadType, Layout, Device ) {}
1513 Kokkos_View_Fad, DynRankAssignStatic2,
FadType, Layout, Device ) {}
1515 Kokkos_View_Fad, DynRankMultiply,
FadType, Layout, Device ) {}
1517 Kokkos_View_Fad, SubdynrankviewCol,
FadType, Layout, Device ) {}
1519 Kokkos_View_Fad, SubdynrankviewRow,
FadType, Layout, Device ) {}
1521 Kokkos_View_Fad, SubdynrankviewScalar,
FadType, Layout, Device ) {}
1526 Kokkos_View_Fad, Subview,
FadType, Layout, Device )
1528 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
1529 typedef typename ViewType::size_type size_type;
1530 typedef typename ViewType::HostMirror host_view_type;
1538 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1539 v = ViewType (
"view", num_rows, num_cols);
1541 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
1543 host_view_type h_v = Kokkos::create_mirror_view(v);
1544 for (size_type
i=0;
i<num_rows; ++
i) {
1545 for (size_type j=0; j<num_cols; ++j) {
1546 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1550 Kokkos::deep_copy(v, h_v);
1554 auto s = Kokkos::subview(v, Kokkos::ALL(), col);
1557 typedef decltype(s) SubviewType;
1558 typedef typename SubviewType::HostMirror HostSubviewType;
1564 HostSubviewType h_s = Kokkos::subview(h_v, Kokkos::ALL(), col);
1568 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 1569 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(s), fad_size+1, out, success);
1570 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_s), fad_size+1, out, success);
1572 for (size_type
i=0;
i<num_rows; ++
i) {
1573 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, col);
1574 success = success &&
checkFads(f, h_s(
i), out);
1578 #ifdef SACADO_NEW_FAD_DESIGN_IS_DEFAULT 1580 Kokkos_View_Fad, ConstViewAssign,
FadType, Layout, Device )
1582 typedef Kokkos::View<FadType*,Layout,Device> ViewType;
1583 typedef Kokkos::View<const FadType,Layout,Device> ConstViewType;
1584 typedef typename ViewType::size_type size_type;
1585 typedef typename ViewType::HostMirror host_view_type;
1586 typedef typename ViewType::execution_space exec_space;
1592 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1593 ViewType v1(
"view1", num_rows);
1595 ViewType v1(
"view1", num_rows, fad_size+1);
1597 host_view_type h_v1 = Kokkos::create_mirror_view(v1);
1598 for (size_type
i=0;
i<num_rows; ++
i) {
1599 FadType f = generate_fad<FadType>(num_rows, size_type(1), fad_size,
i,
1603 Kokkos::deep_copy(v1, h_v1);
1605 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1606 ViewType v2(
"view2", num_rows);
1608 ViewType v2(
"view2", num_rows, fad_size+1);
1611 static const size_type stride = Kokkos::ViewScalarStride<ViewType>::stride;
1612 #if defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL) 1613 const bool use_team =
1618 #elif defined (KOKKOS_ENABLE_CUDA) && defined (SACADO_VIEW_CUDA_HIERARCHICAL_DFAD) 1619 const bool use_team =
1625 const bool use_team =
false;
1629 typedef Kokkos::TeamPolicy<exec_space> team_policy;
1630 Kokkos::parallel_for(team_policy(num_rows, 1, stride),
1631 KOKKOS_LAMBDA(
typename team_policy::member_type team)
1633 const int i = team.league_rank();
1634 typename ConstViewType::reference_type
x = v1(
i);
1639 Kokkos::parallel_for(Kokkos::RangePolicy<exec_space>(0,num_rows),
1640 KOKKOS_LAMBDA(
const int i)
1642 typename ConstViewType::reference_type
x = v1(
i);
1648 host_view_type h_v2 = Kokkos::create_mirror_view(v2);
1649 Kokkos::deep_copy(h_v2, v2);
1653 for (size_type
i=0;
i<num_rows; ++
i) {
1654 FadType f = generate_fad<FadType>(num_rows, size_type(1), fad_size,
i,
1656 success = success &&
checkFads(f, h_v2(
i), out);
1661 Kokkos_View_Fad, ConstViewAssign,
FadType, Layout, Device ) {}
1666 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 1668 Kokkos_View_Fad, ShmemSize,
FadType, Layout, Device )
1670 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
1671 typedef typename FadType::value_type value_type;
1672 typedef typename ViewType::size_type size_type;
1679 const size_type shmem_size =
1680 ViewType::shmem_size(num_rows, num_cols, fad_size+1);
1683 const size_type align = 8;
1684 const size_type mask = align - 1;
1686 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1687 v = ViewType (
"view", num_rows, num_cols);
1689 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
1691 const size_type shmem_size_expected =
1693 TEUCHOS_TEST_EQUALITY(shmem_size, shmem_size_expected, out, success);
1697 Kokkos_View_Fad, Unmanaged,
FadType, Layout, Device )
1702 typedef typename FadType::value_type scalar_type;
1703 typedef Kokkos::View<scalar_type***,TestLayout,Device> ViewType;
1704 typedef Kokkos::View<FadType**,TestLayout,Device,Kokkos::MemoryUnmanaged> FadViewType;
1705 typedef typename ViewType::size_type size_type;
1706 typedef typename ViewType::HostMirror host_view_type;
1707 typedef typename FadViewType::HostMirror fad_host_view_type;
1718 v = ViewType (
"view", fad_size+1, num_rows, num_cols);
1719 h_v = Kokkos::create_mirror_view(v);
1720 for (size_type
i=0;
i<num_rows; ++
i) {
1721 for (size_type j=0; j<num_cols; ++j) {
1722 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1723 for (size_type k=0; k<fad_size; k++)
1724 h_v(k,
i,j) = f.dx(k);
1725 h_v(fad_size,
i,j) = f.val();
1730 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
1731 h_v = Kokkos::create_mirror_view(v);
1732 for (size_type
i=0;
i<num_rows; ++
i) {
1733 for (size_type j=0; j<num_cols; ++j) {
1734 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1735 for (size_type k=0; k<fad_size; k++)
1736 h_v(
i,j,k) = f.dx(k);
1737 h_v(
i,j,fad_size) = f.val();
1741 Kokkos::deep_copy(v, h_v);
1745 fad_host_view_type h_v_fad;
1746 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1747 v_fad = FadViewType ( v.data(), num_rows, num_cols);
1748 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols);
1750 v_fad = FadViewType ( v.data(), num_rows, num_cols, fad_size+1);
1751 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols, fad_size+1);
1755 Kokkos::deep_copy(h_v_fad, v_fad);
1759 for (size_type
i=0;
i<num_rows; ++
i) {
1760 for (size_type j=0; j<num_cols; ++j) {
1761 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1762 success = success &&
checkFads(f, h_v_fad(
i,j), out);
1768 Kokkos_View_Fad, Unmanaged2,
FadType, Layout, Device )
1773 typedef typename FadType::value_type scalar_type;
1774 typedef Kokkos::View<scalar_type***,TestLayout,Device> ViewType;
1775 typedef Kokkos::View<FadType**,TestLayout,Device> FadViewType;
1776 typedef typename ViewType::size_type size_type;
1777 typedef typename ViewType::HostMirror host_view_type;
1778 typedef typename FadViewType::HostMirror fad_host_view_type;
1789 v = ViewType (
"view", fad_size+1, num_rows, num_cols);
1790 h_v = Kokkos::create_mirror_view(v);
1791 for (size_type
i=0;
i<num_rows; ++
i) {
1792 for (size_type j=0; j<num_cols; ++j) {
1793 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1794 for (size_type k=0; k<fad_size; k++)
1795 h_v(k,
i,j) = f.dx(k);
1796 h_v(fad_size,
i,j) = f.val();
1801 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
1802 h_v = Kokkos::create_mirror_view(v);
1803 for (size_type
i=0;
i<num_rows; ++
i) {
1804 for (size_type j=0; j<num_cols; ++j) {
1805 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1806 for (size_type k=0; k<fad_size; k++)
1807 h_v(
i,j,k) = f.dx(k);
1808 h_v(
i,j,fad_size) = f.val();
1812 Kokkos::deep_copy(v, h_v);
1816 fad_host_view_type h_v_fad;
1817 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1818 v_fad = FadViewType ( v.data(), num_rows, num_cols);
1819 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols);
1821 v_fad = FadViewType ( v.data(), num_rows, num_cols, fad_size+1);
1822 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols, fad_size+1);
1826 Kokkos::deep_copy(h_v_fad, v_fad);
1830 for (size_type
i=0;
i<num_rows; ++
i) {
1831 for (size_type j=0; j<num_cols; ++j) {
1832 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1833 success = success &&
checkFads(f, h_v_fad(
i,j), out);
1839 Kokkos_View_Fad, UnmanagedConst,
FadType, Layout, Device )
1844 typedef typename FadType::value_type scalar_type;
1845 typedef Kokkos::View<scalar_type***,TestLayout,Device> ViewType;
1846 typedef Kokkos::View<const scalar_type***,TestLayout,Device> ConstViewType;
1847 typedef Kokkos::View<FadType**,TestLayout,Device,Kokkos::MemoryUnmanaged> FadViewType;
1848 typedef Kokkos::View<const FadType**,TestLayout,Device,Kokkos::MemoryUnmanaged> ConstFadViewType;
1849 typedef typename ViewType::size_type size_type;
1850 typedef typename ViewType::HostMirror host_view_type;
1851 typedef typename FadViewType::HostMirror fad_host_view_type;
1862 v = ViewType (
"view", fad_size+1, num_rows, num_cols);
1863 h_v = Kokkos::create_mirror_view(v);
1864 for (size_type
i=0;
i<num_rows; ++
i) {
1865 for (size_type j=0; j<num_cols; ++j) {
1866 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1867 for (size_type k=0; k<fad_size; k++)
1868 h_v(k,
i,j) = f.dx(k);
1869 h_v(fad_size,
i,j) = f.val();
1874 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
1875 h_v = Kokkos::create_mirror_view(v);
1876 for (size_type
i=0;
i<num_rows; ++
i) {
1877 for (size_type j=0; j<num_cols; ++j) {
1878 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1879 for (size_type k=0; k<fad_size; k++)
1880 h_v(
i,j,k) = f.dx(k);
1881 h_v(
i,j,fad_size) = f.val();
1885 Kokkos::deep_copy(v, h_v);
1886 ConstViewType v_const = v;
1890 ConstFadViewType v_fad;
1891 fad_host_view_type h_v_fad;
1892 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1893 v_fad = ConstFadViewType ( v_const.data(), num_rows, num_cols);
1894 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols);
1896 v_fad = ConstFadViewType ( v_const.data(), num_rows, num_cols, fad_size+1);
1897 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols, fad_size+1);
1901 Kokkos::deep_copy(h_v_fad, v_fad);
1905 for (size_type
i=0;
i<num_rows; ++
i) {
1906 for (size_type j=0; j<num_cols; ++j) {
1907 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1908 success = success &&
checkFads(f, h_v_fad(
i,j), out);
1914 Kokkos_View_Fad, UnmanagedConst2,
FadType, Layout, Device )
1918 typedef typename FadType::value_type scalar_type;
1919 typedef Kokkos::View<scalar_type***,TestLayout,Device> ViewType;
1920 typedef Kokkos::View<const scalar_type***,TestLayout,Device> ConstViewType;
1921 typedef Kokkos::View<FadType**,TestLayout,Device> FadViewType;
1922 typedef Kokkos::View<const FadType**,TestLayout,Device> ConstFadViewType;
1923 typedef typename ViewType::size_type size_type;
1924 typedef typename ViewType::HostMirror host_view_type;
1925 typedef typename FadViewType::HostMirror fad_host_view_type;
1936 v = ViewType (
"view", fad_size+1, num_rows, num_cols);
1937 h_v = Kokkos::create_mirror_view(v);
1938 for (size_type
i=0;
i<num_rows; ++
i) {
1939 for (size_type j=0; j<num_cols; ++j) {
1940 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1941 for (size_type k=0; k<fad_size; k++)
1942 h_v(k,
i,j) = f.dx(k);
1943 h_v(fad_size,
i,j) = f.val();
1948 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
1949 h_v = Kokkos::create_mirror_view(v);
1950 for (size_type
i=0;
i<num_rows; ++
i) {
1951 for (size_type j=0; j<num_cols; ++j) {
1952 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1953 for (size_type k=0; k<fad_size; k++)
1954 h_v(
i,j,k) = f.dx(k);
1955 h_v(
i,j,fad_size) = f.val();
1959 Kokkos::deep_copy(v, h_v);
1960 ConstViewType v_const = v;
1963 ConstFadViewType v_fad;
1964 fad_host_view_type h_v_fad;
1965 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 1966 v_fad = ConstFadViewType (v_const.data(), num_rows, num_cols);
1967 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols);
1969 v_fad = ConstFadViewType (v_const.data(), num_rows, num_cols, fad_size+1);
1970 h_v_fad = fad_host_view_type (
"host_view_fad", num_rows, num_cols, fad_size+1);
1974 Kokkos::deep_copy(h_v_fad, v_fad);
1978 for (size_type
i=0;
i<num_rows; ++
i) {
1979 for (size_type j=0; j<num_cols; ++j) {
1980 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
1981 success = success &&
checkFads(f, h_v_fad(
i,j), out);
1989 Kokkos_View_Fad, SFadNoSizeArg,
FadType, Layout, Device )
1991 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
1992 typedef typename ViewType::size_type size_type;
1993 typedef typename ViewType::HostMirror host_view_type;
2000 ViewType v(
"view", num_rows, num_cols);
2001 host_view_type h_v = Kokkos::create_mirror_view(v);
2002 for (size_type
i=0;
i<num_rows; ++
i) {
2003 for (size_type j=0; j<num_cols; ++j) {
2004 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
2008 Kokkos::deep_copy(v, h_v);
2011 Kokkos::deep_copy(h_v, v);
2015 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(v), fad_size+1, out, success);
2016 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_v), fad_size+1, out, success);
2017 for (size_type
i=0;
i<num_rows; ++
i) {
2018 for (size_type j=0; j<num_cols; ++j) {
2019 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
2020 success = success &&
checkFads(f, h_v(
i,j), out);
2026 Kokkos_View_Fad, Partition,
FadType, Layout, Device )
2028 #if !defined(SACADO_VIEW_CUDA_HIERARCHICAL) && !defined(SACADO_VIEW_CUDA_HIERARCHICAL_DFAD) 2029 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
2030 typedef typename ViewType::size_type size_type;
2031 typedef typename ViewType::HostMirror host_view_type;
2039 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 2040 v = ViewType (
"view", num_rows, num_cols);
2042 v = ViewType (
"view", num_rows, num_cols, fad_size+1);
2044 host_view_type h_v = Kokkos::create_mirror_view(v);
2046 for (size_type
i=0;
i<num_rows; ++
i) {
2047 for (size_type j=0; j<num_cols; ++j) {
2048 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
2052 Kokkos::deep_copy(v, h_v);
2055 Kokkos::deep_copy(h_v, v);
2059 const size_type stride = 2;
2060 auto h_v1 = Kokkos::partition<2>(h_v, 0, stride);
2061 auto h_v2 = Kokkos::partition<2>(h_v, 1, stride);
2064 const size_type fad_size_1 = (fad_size + stride - 0 - 1) / stride;
2065 const size_type fad_size_2 = (fad_size + stride - 1 - 1) / stride;
2067 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_v1), fad_size_1+1, out, success);
2068 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_v2), fad_size_2+1, out, success);
2069 for (size_type
i=0;
i<num_rows; ++
i) {
2070 for (size_type j=0; j<num_cols; ++j) {
2071 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
2074 for (
unsigned int k=0; k<fad_size_1; ++k)
2075 if (2*k < fad_size) f1.fastAccessDx(k) = f.dx(2*k);
2076 for (
unsigned int k=0; k<fad_size_2; ++k)
2077 if (2*k+1 < fad_size) f2.fastAccessDx(k) = f.dx(2*k+1);
2078 success = success &&
checkFads(f1, h_v1(
i,j), out);
2079 success = success &&
checkFads(f2, h_v2(
i,j), out);
2086 Kokkos_View_Fad, AssignLayoutContiguousToLayoutStride,
FadType, Layout, Device )
2088 typedef Kokkos::View<FadType**,Kokkos::LayoutContiguous<Layout>,Device> ContViewType;
2089 typedef Kokkos::View<FadType**,Kokkos::LayoutStride,Device> StrideViewType;
2090 typedef typename ContViewType::size_type size_type;
2091 typedef typename ContViewType::HostMirror cont_host_view_type;
2092 typedef typename StrideViewType::HostMirror stride_host_view_type;
2100 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 2101 v = ContViewType (
"view", num_rows, num_cols);
2103 v = ContViewType (
"view", num_rows, num_cols, fad_size+1);
2105 cont_host_view_type h_v = Kokkos::create_mirror_view(v);
2107 for (size_type
i=0;
i<num_rows; ++
i) {
2108 for (size_type j=0; j<num_cols; ++j) {
2109 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
2113 Kokkos::deep_copy(v, h_v);
2116 StrideViewType vs = v;
2123 stride_host_view_type h_vs = h_v;
2127 TEUCHOS_TEST_EQUALITY(h_vs.extent(0), num_rows, out, success);
2128 TEUCHOS_TEST_EQUALITY(h_vs.extent(1), num_cols, out, success);
2129 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(h_vs), fad_size+1, out, success);
2130 for (size_type
i=0;
i<num_rows; ++
i) {
2131 for (size_type j=0; j<num_cols; ++j) {
2132 FadType f = generate_fad<FadType>(num_rows, num_cols, fad_size,
i, j);
2133 success = success &&
checkFads(f, h_vs(
i,j), out);
2139 Kokkos_View_Fad, CommonViewAllocMixedSpec,
FadType, Layout, Device )
2141 typedef Kokkos::View<FadType**,Kokkos::LayoutContiguous<Layout>,Device> ContViewType;
2142 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
2143 typedef typename ContViewType::size_type size_type;
2151 #if defined (SACADO_DISABLE_FAD_VIEW_SPEC) 2152 v1 = ContViewType (
"view", num_rows, num_cols);
2154 v1 = ContViewType (
"view", num_rows, num_cols, fad_size+1);
2158 auto cprop = Kokkos::common_view_alloc_prop(v1);
2159 ViewType v2(Kokkos::view_alloc(
"v2",cprop), num_rows, num_cols);
2163 TEUCHOS_TEST_EQUALITY(v2.extent(0), num_rows, out, success);
2164 TEUCHOS_TEST_EQUALITY(v2.extent(1), num_cols, out, success);
2165 TEUCHOS_TEST_EQUALITY(Kokkos::dimension_scalar(v2), fad_size+1, out, success);
2171 Kokkos_View_Fad, ShmemSize,
FadType, Layout, Device )
2173 typedef Kokkos::View<FadType**,Layout,Device> ViewType;
2174 typedef typename ViewType::size_type size_type;
2180 const size_type shmem_size =
2181 ViewType::shmem_size(num_rows, num_cols);
2184 static const size_type align = 8;
2185 static const size_type mask = align - 1;
2186 const size_type shmem_size_expected =
2188 TEUCHOS_TEST_EQUALITY(shmem_size, shmem_size_expected, out, success);
2192 Kokkos_View_Fad, Unmanaged,
FadType, Layout, Device ) {}
2195 Kokkos_View_Fad, Unmanaged2,
FadType, Layout, Device ) {}
2198 Kokkos_View_Fad, UnmanagedConst,
FadType, Layout, Device ) {}
2201 Kokkos_View_Fad, UnmanagedConst2,
FadType, Layout, Device ) {}
2204 Kokkos_View_Fad, SFadNoSizeArg,
FadType, Layout, Device ) {}
2207 Kokkos_View_Fad, Partition,
FadType, Layout, Device ) {}
2210 Kokkos_View_Fad, AssignLayoutContiguousToLayoutStride,
FadType, Layout, Device ) {}
2213 Kokkos_View_Fad, CommonViewAllocMixedSpec,
FadType, Layout, Device ) {}
2217 #define VIEW_FAD_TESTS_FLD( F, L, D ) \ 2218 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Size, F, L, D ) \ 2219 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DeepCopy, F, L, D ) \ 2220 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DeepCopy_ConstantScalar, F, L, D ) \ 2221 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DeepCopy_ConstantZero, F, L, D ) \ 2222 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DeepCopy_ConstantFad, F, L, D ) \ 2223 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DeepCopy_ConstantFadFull, F, L, D ) \ 2224 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, ScalarAssign, F, L, D ) \ 2225 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, ValueAssign, F, L, D ) \ 2226 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Resize, F, L, D ) \ 2227 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Unmanaged, F, L, D ) \ 2228 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Unmanaged2, F, L, D ) \ 2229 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, UnmanagedConst, F, L, D ) \ 2230 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, UnmanagedConst2, F, L, D ) \ 2231 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Multiply, F, L, D ) \ 2232 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, MultiplyUpdate, F, L, D ) \ 2233 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, MultiplyConst, F, L, D ) \ 2234 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, MultiplyMixed, F, L, D ) \ 2235 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, AtomicAdd, F, L, D ) \ 2236 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Rank8, F, L, D ) \ 2237 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Roger, F, L, D ) \ 2238 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, AssignDifferentStrides, F, L, D ) \ 2239 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DynRankDimensionScalar, F, L, D ) \ 2240 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DynRankAssignStatic0, F, L, D ) \ 2241 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DynRankAssignStatic1, F, L, D ) \ 2242 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DynRankAssignStatic2, F, L, D ) \ 2243 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, DynRankMultiply, F, L, D ) \ 2244 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, SubdynrankviewCol, F, L, D ) \ 2245 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, SubdynrankviewRow, F, L, D ) \ 2246 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, SubdynrankviewScalar, F, L, D ) \ 2247 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Subview, F, L, D ) \ 2248 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, ShmemSize, F, L, D ) \ 2249 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, ConstViewAssign, F, L, D ) 2251 #define VIEW_FAD_TESTS_SFLD( F, L, D ) \ 2252 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, SFadNoSizeArg, F, L, D ) 2254 #define VIEW_FAD_TESTS_FDI( F, D ) \ 2255 using Kokkos::LayoutLeft; \ 2256 using Kokkos::LayoutRight; \ 2257 VIEW_FAD_TESTS_FLD( F, LayoutLeft, D ) \ 2258 VIEW_FAD_TESTS_FLD( F, LayoutRight, D ) \ 2259 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, AssignLayoutContiguousToLayoutStride, F, LayoutLeft, D ) \ 2260 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, AssignLayoutContiguousToLayoutStride, F, LayoutRight, D ) \ 2261 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, CommonViewAllocMixedSpec, F, LayoutLeft, D ) \ 2262 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, CommonViewAllocMixedSpec, F, LayoutRight, D ) 2264 #define VIEW_FAD_TESTS_SFDI( F, D ) \ 2265 using Kokkos::LayoutLeft; \ 2266 using Kokkos::LayoutRight; \ 2267 VIEW_FAD_TESTS_SFLD( F, LayoutLeft, D ) \ 2268 VIEW_FAD_TESTS_SFLD( F, LayoutRight, D ) 2270 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) 2273 #define VIEW_FAD_TESTS_FDC( F, D ) \ 2274 VIEW_FAD_TESTS_FLD( F, LeftContiguous, D ) \ 2275 VIEW_FAD_TESTS_FLD( F, RightContiguous, D ) \ 2276 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Partition, F, LeftContiguous, D ) \ 2277 TEUCHOS_UNIT_TEST_TEMPLATE_3_INSTANT( Kokkos_View_Fad, Partition, F, RightContiguous, D ) 2279 #define VIEW_FAD_TESTS_SFDC( F, D ) \ 2280 VIEW_FAD_TESTS_SFLD( F, LeftContiguous, D ) \ 2281 VIEW_FAD_TESTS_SFLD( F, RightContiguous, D ) 2283 #define VIEW_FAD_TESTS_FDC( F, D ) 2284 #define VIEW_FAD_TESTS_SFDC( F, D ) 2287 #define VIEW_FAD_TESTS_FD( F, D ) \ 2288 VIEW_FAD_TESTS_FDI( F, D ) \ 2289 VIEW_FAD_TESTS_FDC( F, D ) 2291 #define VIEW_FAD_TESTS_SFD( F, D ) \ 2292 VIEW_FAD_TESTS_SFDI( F, D ) \ 2293 VIEW_FAD_TESTS_SFDC( F, D ) 2316 #if defined(HAVE_SACADO_VIEW_SPEC) && !defined(SACADO_DISABLE_FAD_VIEW_SPEC) && SACADO_TEST_DFAD 2317 #define VIEW_FAD_TESTS_D( D ) \ 2318 VIEW_FAD_TESTS_FD( SFadType, D ) \ 2319 VIEW_FAD_TESTS_FD( SLFadType, D ) \ 2320 VIEW_FAD_TESTS_FD( DFadType, D ) \ 2321 VIEW_FAD_TESTS_SFD( SFadType, D ) 2325 VIEW_FAD_TESTS_FD( ELRSLFadType,
D ) \
2326 VIEW_FAD_TESTS_FD( ELRDFadType,
D ) \
2327 VIEW_FAD_TESTS_FD( CacheSFadType,
D ) \
2328 VIEW_FAD_TESTS_FD( CacheSLFadType,
D ) \
2329 VIEW_FAD_TESTS_FD( CacheDFadType,
D ) \
2330 VIEW_FAD_TESTS_FD( ELRCacheSFadType,
D ) \
2331 VIEW_FAD_TESTS_FD( ELRCacheSLFadType,
D ) \
2332 VIEW_FAD_TESTS_FD( ELRCacheDFadType,
D ) \
2334 VIEW_FAD_TESTS_SFD( ELRSFadType,
D ) \
2335 VIEW_FAD_TESTS_SFD( CacheSFadType,
D ) \
2336 VIEW_FAD_TESTS_SFD( ELRCacheSFadType,
D )
2341 #define VIEW_FAD_TESTS_D( D ) \ 2342 VIEW_FAD_TESTS_FD( SFadType, D ) \ 2343 VIEW_FAD_TESTS_FD( SLFadType, D ) \ 2344 VIEW_FAD_TESTS_SFD( SFadType, D ) 2348 VIEW_FAD_TESTS_FD( ELRSLFadType,
D ) \
2349 VIEW_FAD_TESTS_FD( CacheSFadType,
D ) \
2350 VIEW_FAD_TESTS_FD( CacheSLFadType,
D ) \
2351 VIEW_FAD_TESTS_FD( ELRCacheSFadType,
D ) \
2352 VIEW_FAD_TESTS_FD( ELRCacheSLFadType,
D ) \
2354 VIEW_FAD_TESTS_SFD( ELRSFadType,
D ) \
2355 VIEW_FAD_TESTS_SFD( CacheSFadType,
D ) \
2356 VIEW_FAD_TESTS_SFD( ELRCacheSFadType,
D )
InputViewType::size_type size_type
team_policy_type::member_type team_handle
static const size_type stride
ViewType::value_type::value_type ScalarType
ViewType::execution_space execution_space
Kokkos::TeamPolicy< execution_space > team_policy_type
Kokkos::TeamPolicy< execution_space > team_policy_type
static const size_type stride
ViewType::size_type size_type
Kokkos::LayoutContiguous< Kokkos::LayoutRight > RightContiguous
const int global_fad_size
static const size_type stride
bool checkFads(const FadType1 &x, const FadType2 &x2, Teuchos::FancyOStream &out, double tol=1.0e-15)
Kokkos::LayoutContiguous< Kokkos::LayoutLeft > LeftContiguous
ViewType::size_type size_type
static void apply(const ViewType &v, const ValueType &s)
Sacado::Fad::DFad< double > FadType
KOKKOS_INLINE_FUNCTION void operator()(const team_handle &team) const
Sacado::Fad::SLFad< double, 2 *global_fad_size > SLFadType
#define VIEW_FAD_TESTS_FD(F, D)
Kokkos::ThreadLocalScalarType< ViewType >::type local_scalar_type
KOKKOS_INLINE_FUNCTION void operator()(const size_type i) const
Kokkos::RangePolicy< execution_space > range_policy_type
const InputViewType1 m_v1
static const size_type stride
InputViewType::execution_space execution_space
static void apply(const InputViewType v1, const OutputViewType v2, const size_type col)
Kokkos::RangePolicy< execution_space > range_policy_type
ViewType::execution_space execution_space
const OutputViewType m_v2
AssignRank2Rank1Kernel(const InputViewType v1, const OutputViewType v2, const size_type col)
expr expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c *expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr1 c expr2 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr2 expr1 expr2 expr1 expr1 expr1 expr2 expr1 expr2 expr1 expr1 expr1 c
team_policy_type::member_type team_handle
ViewType::size_type size_type
GeneralFad< DynamicStorage< T > > DFad
Sacado::Fad::DFad< double > DFadType
team_policy_type::member_type team_handle
KOKKOS_INLINE_FUNCTION void operator()(const size_type i) const
static void apply(const InputViewType1 v1, const InputViewType2 v2, const OutputViewType v3, const bool update=false)
InputViewType1::execution_space execution_space
Kokkos::TeamPolicy< execution_space > team_policy_type
static void apply(const ViewType &v, const ScalarViewType &s)
ViewType::value_type ValueType
Kokkos::TeamPolicy< execution_space > team_policy_type
ScalarAssignKernel(const ViewType &v, const ScalarType &s)
const int global_num_rows
KOKKOS_INLINE_FUNCTION void operator()(const size_type i) const
KOKKOS_INLINE_FUNCTION void operator()(const size_type i) const
ValueAssignKernel(const ViewType &v, const ValueType &s)
AtomicAddKernel(const ViewType &v, const ScalarViewType &s)
KOKKOS_INLINE_FUNCTION void operator()(const team_handle &team) const
team_policy_type::member_type team_handle
TEUCHOS_UNIT_TEST_TEMPLATE_3_DECL(Kokkos_View_Fad, Size, FadType, Layout, Device)
KOKKOS_INLINE_FUNCTION void operator()(const team_handle &team) const
ViewType::execution_space execution_space
Sacado::Fad::SFad< double, global_fad_size > SFadType
static void apply(const ViewType &v, const ScalarType &s)
Kokkos::ThreadLocalScalarType< ViewType >::type local_scalar_type
KOKKOS_INLINE_FUNCTION void operator()(const size_type i) const
MultiplyKernel(const InputViewType1 v1, const InputViewType2 v2, const OutputViewType v3, const bool update)
team_policy_type::member_type team_handle
InputViewType1::size_type size_type
Kokkos::RangePolicy< execution_space > range_policy_type
KOKKOS_INLINE_FUNCTION void operator()(const team_handle &team) const
const int global_num_cols
Kokkos::RangePolicy< execution_space > range_policy_type
KOKKOS_INLINE_FUNCTION void operator()(const team_handle &team) const
GeneralFad< StaticFixedStorage< T, Num > > SFad
const InputViewType2 m_v2
Kokkos::RangePolicy< execution_space > range_policy_type
Kokkos::TeamPolicy< execution_space > team_policy_type
const OutputViewType m_v3
fadtype generate_fad(const ordinal num_rows, const ordinal num_cols, const ordinal fad_size, const ordinal row, const ordinal col)