FieldContainer_Kokkos(Kokkos::View<ScalarPoindex_typeer,Kokkos::LayoutLeft,Kokkos::OpenMP>& InContainer){ dim0=dim[0]=InContainer.dimension(0); dim1=dim[1]=InContainer.dimension(1); dim2=dim[2]=InContainer.dimension(2); dim3=dim[3]=InContainer.dimension(3); dim4=dim[4]=InContainer.dimension(4); dim5=dim[5]=InContainer.dimension(5); dim6=dim[6]=InContainer.dimension(6); dim7=dim[7]=InContainer.dimension(7); rankValue=Kokkos::View<ScalarPoindex_typeer,Kokkos::LayoutLeft,Kokkos::OpenMP>::Rank; intepidManaged=false; switch(rankValue){ case 1: sizeValue=dim0; break; case 2: sizeValue=dim0*dim1; break; case 3: sizeValue=dim0*dim1*dim2; break; case 4: sizeValue=dim0*dim1*dim2*dim3; break; case 5: sizeValue=dim0*dim1*dim2*dim3*dim4; break; case 6: sizeValue=dim0*dim1*dim2*dim3*dim4*dim5; break; case 7: sizeValue=dim0*dim1*dim2*dim3*dim4*dim5*dim6; break; case 8: sizeValue=dim0*dim1*dim2*dim3*dim4*dim5*dim6*dim7; break; } containerMemory=InContainer.ptr_on_device(); }
static void GEMM(Teuchos::ETransp transA, Teuchos::ETransp transB, Scalar alpha, Kokkos::View<Scalar***,Kokkos::LayoutLeft,Kokkos::DefaultExecutionSpace> A, Kokkos::View<Scalar***,Kokkos::LayoutLeft,Kokkos::DefaultExecutionSpace> B, Scalar beta, Kokkos::View<Scalar***,Kokkos::LayoutLeft,Kokkos::DefaultExecutionSpace> C){ const int m = static_cast<int> (C.dimension_1()), n = static_cast<int> (C.dimension_2 ()), k = (transA == Teuchos::NO_TRANS ? A.dimension_2 () : A.dimension_1 ()); // printf("m:%d,n:%d,k:%d",m,n,k); Kokkos::parallel_for(C.dimension(0),blasOpenMPBatchLeft<Scalar>(A,B,C,m,n,k,transA,transB,alpha,beta)); }