Update Kokkos library to r2.6.00

This commit is contained in:
Stan Moore
2018-03-08 10:57:08 -07:00
parent 0c4c002f34
commit 39786b1740
694 changed files with 12261 additions and 6745 deletions

View File

@ -33,6 +33,7 @@ OBJ_PERF = PerfTestMain.o gtest-all.o
OBJ_PERF += PerfTestGramSchmidt.o
OBJ_PERF += PerfTestHexGrad.o
OBJ_PERF += PerfTest_CustomReduction.o
OBJ_PERF += PerfTest_ViewCopy.o
TARGETS += KokkosCore_PerformanceTest
TEST_TARGETS += test-performance

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER
@ -76,7 +76,7 @@ void axpby( const ConstScalarType & alpha ,
{
typedef AXPBY< ConstScalarType , ConstVectorType , VectorType > functor ;
parallel_for( Y.dimension_0() , functor( alpha , X , beta , Y ) );
parallel_for( Y.extent(0) , functor( alpha , X , beta , Y ) );
}
/** \brief Y *= alpha */
@ -86,7 +86,7 @@ void scale( const ConstScalarType & alpha , const VectorType & Y )
{
typedef Scale< ConstScalarType , VectorType > functor ;
parallel_for( Y.dimension_0() , functor( alpha , Y ) );
parallel_for( Y.extent(0) , functor( alpha , Y ) );
}
template< class ConstVectorType ,
@ -97,7 +97,7 @@ void dot( const ConstVectorType & X ,
{
typedef Dot< ConstVectorType > functor ;
parallel_reduce( X.dimension_0() , functor( X , Y ) , finalize );
parallel_reduce( X.extent(0) , functor( X , Y ) , finalize );
}
template< class ConstVectorType ,
@ -107,7 +107,7 @@ void dot( const ConstVectorType & X ,
{
typedef DotSingle< ConstVectorType > functor ;
parallel_reduce( X.dimension_0() , functor( X ) , finalize );
parallel_reduce( X.extent(0) , functor( X ) , finalize );
}
} /* namespace Kokkos */

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER
@ -86,7 +86,7 @@ void invnorm2( const VectorView & x ,
const ValueView & r ,
const ValueView & r_inv )
{
Kokkos::parallel_reduce( x.dimension_0() , InvNorm2< VectorView , ValueView >( x , r , r_inv ) );
Kokkos::parallel_reduce( x.extent(0) , InvNorm2< VectorView , ValueView >( x , r , r_inv ) );
}
// PostProcess : tmp = - ( R(j,k) = result );
@ -122,7 +122,7 @@ void dot_neg( const VectorView & x ,
const ValueView & r ,
const ValueView & r_neg )
{
Kokkos::parallel_reduce( x.dimension_0() , DotM< VectorView , ValueView >( x , y , r , r_neg ) );
Kokkos::parallel_reduce( x.extent(0) , DotM< VectorView , ValueView >( x , y , r , r_neg ) );
}
@ -151,7 +151,7 @@ struct ModifiedGramSchmidt
static double factorization( const multivector_type Q_ ,
const multivector_type R_ )
{
const size_type count = Q_.dimension_1();
const size_type count = Q_.extent(1);
value_view tmp("tmp");
value_view one("one");

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -0,0 +1,445 @@
/*
//@HEADER
// ************************************************************************
//
// Kokkos v. 2.0
// Copyright (2014) Sandia Corporation
//
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
// the U.S. Government retains certain rights in this software.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
//
// 3. Neither the name of the Corporation nor the names of the
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER
*/
#include <Kokkos_Core.hpp>
#include <gtest/gtest.h>
#include <cstdio>
#include <PerfTest_Category.hpp>
namespace Test {
template<class ViewType>
double fill_view (ViewType& a, typename ViewType::const_value_type& val, int repeat){
Kokkos::Timer timer;
for(int i=0; i<repeat; i++) {
Kokkos::deep_copy(a,val);
}
Kokkos::fence();
return timer.seconds();
}
template<class Layout>
void run_fillview_tests(int N, int R) {
const int N1 = N;
const int N2 = N*N;
const int N3 = N2*N;
const int N4 = N2*N2;
const int N8 = N4*N4;
double time1,time2,time3,time4,time5,time6,time7,time8,time_raw = 100000.0;
{
Kokkos::View<double*,Layout> a("A1",N8);
time1 = fill_view(a,1.1,R)/R;
}
{
Kokkos::View<double**,Layout> a("A2",N4,N4);
time2 = fill_view(a,1.1,R)/R;
}
{
Kokkos::View<double***,Layout> a("A3",N3,N3,N2);
time3 = fill_view(a,1.1,R)/R;
}
{
Kokkos::View<double****,Layout> a("A4",N2,N2,N2,N2);
time4 = fill_view(a,1.1,R)/R;
}
{
Kokkos::View<double*****,Layout> a("A5",N2,N2,N1,N1,N2);
time5 = fill_view(a,1.1,R)/R;
}
{
Kokkos::View<double******,Layout> a("A6",N2,N1,N1,N1,N1,N2);
time6 = fill_view(a,1.1,R)/R;
}
{
Kokkos::View<double*******,Layout> a("A7",N2,N1,N1,N1,N1,N1,N1);
time7 = fill_view(a,1.1,R)/R;
}
{
Kokkos::View<double********,Layout> a("A8",N1,N1,N1,N1,N1,N1,N1,N1);
time8 = fill_view(a,1.1,R)/R;
}
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
{
Kokkos::View<double*,Layout> a("A1",N8);
double* a_ptr = a.data();
Kokkos::Timer timer;
for(int r=0;r<R;r++) {
Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) {
a_ptr[i] = 1.1;
});
}
time_raw = timer.seconds()/R;
}
#endif
double size = 1.0*N8*8/1024/1024;
printf(" Raw: %lf s %lf MB %lf GB/s\n",time_raw,size,size/1024/time_raw);
printf(" Rank1: %lf s %lf MB %lf GB/s\n",time1,size,size/1024/time1);
printf(" Rank2: %lf s %lf MB %lf GB/s\n",time2,size,size/1024/time2);
printf(" Rank3: %lf s %lf MB %lf GB/s\n",time3,size,size/1024/time3);
printf(" Rank4: %lf s %lf MB %lf GB/s\n",time4,size,size/1024/time4);
printf(" Rank5: %lf s %lf MB %lf GB/s\n",time5,size,size/1024/time5);
printf(" Rank6: %lf s %lf MB %lf GB/s\n",time6,size,size/1024/time6);
printf(" Rank7: %lf s %lf MB %lf GB/s\n",time7,size,size/1024/time7);
printf(" Rank8: %lf s %lf MB %lf GB/s\n",time8,size,size/1024/time8);
}
TEST_F( default_exec, ViewFill ) {
printf("ViewFill Performance for LayoutLeft:\n");
run_fillview_tests<Kokkos::LayoutLeft>(10,1);
printf("ViewFill Performance for LayoutRight:\n");
run_fillview_tests<Kokkos::LayoutRight>(10,1);
}
template<class Layout>
void run_allocateview_tests(int N, int R) {
const int N1 = N;
const int N2 = N*N;
const int N3 = N2*N;
const int N4 = N2*N2;
const int N8 = N4*N4;
double time1,time2,time3,time4,time5,time6,time7,time8,time_raw = 100000.0;
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double*,Layout> a("A1",N8);
}
time1 = timer.seconds()/R;
}
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double**,Layout> a("A2",N4,N4);
}
time2 = timer.seconds()/R;
}
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double***,Layout> a("A3",N3,N3,N2);
}
time3 = timer.seconds()/R;
}
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double****,Layout> a("A4",N2,N2,N2,N2);
}
time4 = timer.seconds()/R;
}
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double*****,Layout> a("A5",N2,N2,N1,N1,N2);
}
time5 = timer.seconds()/R;
}
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double******,Layout> a("A6",N2,N1,N1,N1,N1,N2);
}
time6 = timer.seconds()/R;
}
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double*******,Layout> a("A7",N2,N1,N1,N1,N1,N1,N1);
}
time7 = timer.seconds()/R;
}
{
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double********,Layout> a("A8",N1,N1,N1,N1,N1,N1,N1,N1);
}
time8 = timer.seconds()/R;
}
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
{
Kokkos::Timer timer;
for(int r=0;r<R;r++) {
double* a_ptr = (double*) Kokkos::kokkos_malloc("A", sizeof(double)*N8);
Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) {
a_ptr[i] = 0.0;
});
Kokkos::kokkos_free(a_ptr);
}
time_raw = timer.seconds()/R;
}
#endif
double size = 1.0*N8*8/1024/1024;
printf(" Raw: %lf s %lf MB %lf GB/s\n",time_raw,size,size/1024/time_raw);
printf(" Rank1: %lf s %lf MB %lf GB/s\n",time1,size,size/1024/time1);
printf(" Rank2: %lf s %lf MB %lf GB/s\n",time2,size,size/1024/time2);
printf(" Rank3: %lf s %lf MB %lf GB/s\n",time3,size,size/1024/time3);
printf(" Rank4: %lf s %lf MB %lf GB/s\n",time4,size,size/1024/time4);
printf(" Rank5: %lf s %lf MB %lf GB/s\n",time5,size,size/1024/time5);
printf(" Rank6: %lf s %lf MB %lf GB/s\n",time6,size,size/1024/time6);
printf(" Rank7: %lf s %lf MB %lf GB/s\n",time7,size,size/1024/time7);
printf(" Rank8: %lf s %lf MB %lf GB/s\n",time8,size,size/1024/time8);
}
TEST_F( default_exec, ViewCreate ) {
printf("Create View Performance for LayoutLeft:\n");
run_allocateview_tests<Kokkos::LayoutLeft>(10,1);
printf("Create View Performance for LayoutRight:\n");
run_allocateview_tests<Kokkos::LayoutRight>(10,1);
}
template<class ViewTypeA, class ViewTypeB>
double deepcopy_view (ViewTypeA& a, ViewTypeB& b, int repeat){
Kokkos::Timer timer;
for(int i=0; i<repeat; i++) {
Kokkos::deep_copy(a,b);
}
Kokkos::fence();
return timer.seconds();
}
template<class LayoutA, class LayoutB>
void run_deepcopyview_tests(int N, int R) {
const int N1 = N;
const int N2 = N*N;
const int N3 = N2*N;
const int N4 = N2*N2;
const int N8 = N4*N4;
double time1,time2,time3,time4,time5,time6,time7,time8,time_raw = 100000.0;
{
Kokkos::View<double*,LayoutA> a("A1",N8);
Kokkos::View<double*,LayoutB> b("B1",N8);
time1 = deepcopy_view(a,b,R)/R;
}
{
Kokkos::View<double**,LayoutA> a("A2",N4,N4);
Kokkos::View<double**,LayoutB> b("B2",N4,N4);
time2 = deepcopy_view(a,b,R)/R;
}
{
Kokkos::View<double***,LayoutA> a("A3",N3,N3,N2);
Kokkos::View<double***,LayoutB> b("B3",N3,N3,N2);
time3 = deepcopy_view(a,b,R)/R;
}
{
Kokkos::View<double****,LayoutA> a("A4",N2,N2,N2,N2);
Kokkos::View<double****,LayoutB> b("B4",N2,N2,N2,N2);
time4 = deepcopy_view(a,b,R)/R;
}
{
Kokkos::View<double*****,LayoutA> a("A5",N2,N2,N1,N1,N2);
Kokkos::View<double*****,LayoutB> b("B5",N2,N2,N1,N1,N2);
time5 = deepcopy_view(a,b,R)/R;
}
{
Kokkos::View<double******,LayoutA> a("A6",N2,N1,N1,N1,N1,N2);
Kokkos::View<double******,LayoutB> b("B6",N2,N1,N1,N1,N1,N2);
time6 = deepcopy_view(a,b,R)/R;
}
{
Kokkos::View<double*******,LayoutA> a("A7",N2,N1,N1,N1,N1,N1,N1);
Kokkos::View<double*******,LayoutB> b("B7",N2,N1,N1,N1,N1,N1,N1);
time7 = deepcopy_view(a,b,R)/R;
}
{
Kokkos::View<double********,LayoutA> a("A8",N1,N1,N1,N1,N1,N1,N1,N1);
Kokkos::View<double********,LayoutB> b("B8",N1,N1,N1,N1,N1,N1,N1,N1);
time8 = deepcopy_view(a,b,R)/R;
}
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
{
Kokkos::View<double*,LayoutA> a("A1",N8);
Kokkos::View<double*,LayoutB> b("B1",N8);
double* const a_ptr = a.data();
const double* const b_ptr = b.data();
Kokkos::Timer timer;
for(int r=0;r<R;r++) {
Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) {
a_ptr[i] = b_ptr[i];
});
}
time_raw = timer.seconds()/R;
}
#endif
double size = 1.0*N8*8/1024/1024;
printf(" Raw: %lf s %lf MB %lf GB/s\n",time_raw,size,2.0*size/1024/time_raw);
printf(" Rank1: %lf s %lf MB %lf GB/s\n",time1,size,2.0*size/1024/time1);
printf(" Rank2: %lf s %lf MB %lf GB/s\n",time2,size,2.0*size/1024/time2);
printf(" Rank3: %lf s %lf MB %lf GB/s\n",time3,size,2.0*size/1024/time3);
printf(" Rank4: %lf s %lf MB %lf GB/s\n",time4,size,2.0*size/1024/time4);
printf(" Rank5: %lf s %lf MB %lf GB/s\n",time5,size,2.0*size/1024/time5);
printf(" Rank6: %lf s %lf MB %lf GB/s\n",time6,size,2.0*size/1024/time6);
printf(" Rank7: %lf s %lf MB %lf GB/s\n",time7,size,2.0*size/1024/time7);
printf(" Rank8: %lf s %lf MB %lf GB/s\n",time8,size,2.0*size/1024/time8);
}
TEST_F( default_exec, ViewDeepCopy ) {
printf("DeepCopy Performance for LayoutLeft to LayoutLeft:\n");
run_deepcopyview_tests<Kokkos::LayoutLeft,Kokkos::LayoutLeft>(10,1);
printf("DeepCopy Performance for LayoutRight to LayoutRight:\n");
run_deepcopyview_tests<Kokkos::LayoutRight,Kokkos::LayoutRight>(10,1);
printf("DeepCopy Performance for LayoutLeft to LayoutRight:\n");
run_deepcopyview_tests<Kokkos::LayoutLeft,Kokkos::LayoutRight>(10,1);
printf("DeepCopy Performance for LayoutRight to LayoutLeft:\n");
run_deepcopyview_tests<Kokkos::LayoutRight,Kokkos::LayoutLeft>(10,1);
}
template<class Layout>
void run_resizeview_tests(int N, int R) {
const int N1 = N;
const int N2 = N*N;
const int N3 = N2*N;
const int N4 = N2*N2;
const int N8 = N4*N4;
double time1,time2,time3,time4,time5,time6,time7,time8,time_raw = 100000.0;
{
Kokkos::View<double*,Layout> a("A1",N8);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double*,Layout> a_(a);
Kokkos::resize(a_,int(N8*1.1));
}
time1 = timer.seconds()/R;
}
{
Kokkos::View<double**,Layout> a("A2",N4,N4);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double**,Layout> a_(a);
Kokkos::resize(a_,int(N4*1.1),N4);
}
time2 = timer.seconds()/R;
}
{
Kokkos::View<double***,Layout> a("A3",N3,N3,N2);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double***,Layout> a_(a);
Kokkos::resize(a_,int(N3*1.1),N3,N2);
}
time3 = timer.seconds()/R;
}
{
Kokkos::View<double****,Layout> a("A4",N2,N2,N2,N2);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double****,Layout> a_(a);
Kokkos::resize(a_,int(N2*1.1),N2,N2,N2);
}
time4 = timer.seconds()/R;
}
{
Kokkos::View<double*****,Layout> a("A5",N2,N2,N1,N1,N2);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double*****,Layout> a_(a);
Kokkos::resize(a_,int(N2*1.1),N2,N1,N1,N2);
}
time5 = timer.seconds()/R;
}
{
Kokkos::View<double******,Layout> a("A6",N2,N1,N1,N1,N1,N2);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double******,Layout> a_(a);
Kokkos::resize(a_,int(N2*1.1),N1,N1,N1,N1,N2);
}
time6 = timer.seconds()/R;
}
{
Kokkos::View<double*******,Layout> a("A7",N2,N1,N1,N1,N1,N1,N1);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double*******,Layout> a_(a);
Kokkos::resize(a_,int(N2*1.1),N1,N1,N1,N1,N1,N1);
}
time7 = timer.seconds()/R;
}
{
Kokkos::View<double********,Layout> a("A8",N1,N1,N1,N1,N1,N1,N1,N1);
Kokkos::Timer timer;
for(int r=0; r<R; r++) {
Kokkos::View<double********,Layout> a_(a);
Kokkos::resize(a_,int(N1*1.1),N1,N1,N1,N1,N1,N1,N1);
}
time8 = timer.seconds()/R;
}
#if defined(KOKKOS_ENABLE_CUDA_LAMBDA) || !defined(KOKKOS_ENABLE_CUDA)
{
Kokkos::View<double*,Layout> a("A1",N8);
double* a_ptr = a.data();
Kokkos::Timer timer;
for(int r=0;r<R;r++) {
Kokkos::View<double*,Layout> a1(Kokkos::ViewAllocateWithoutInitializing("A1"),int(N8*1.1));
double* a1_ptr = a1.data();
Kokkos::parallel_for(N8, KOKKOS_LAMBDA (const int& i) {
a1_ptr[i] = a_ptr[i];
});
}
time_raw = timer.seconds()/R;
}
#endif
double size = 1.0*N8*8/1024/1024;
printf(" Raw: %lf s %lf MB %lf GB/s\n",time_raw,size,2.0*size/1024/time_raw);
printf(" Rank1: %lf s %lf MB %lf GB/s\n",time1,size,2.0*size/1024/time1);
printf(" Rank2: %lf s %lf MB %lf GB/s\n",time2,size,2.0*size/1024/time2);
printf(" Rank3: %lf s %lf MB %lf GB/s\n",time3,size,2.0*size/1024/time3);
printf(" Rank4: %lf s %lf MB %lf GB/s\n",time4,size,2.0*size/1024/time4);
printf(" Rank5: %lf s %lf MB %lf GB/s\n",time5,size,2.0*size/1024/time5);
printf(" Rank6: %lf s %lf MB %lf GB/s\n",time6,size,2.0*size/1024/time6);
printf(" Rank7: %lf s %lf MB %lf GB/s\n",time7,size,2.0*size/1024/time7);
printf(" Rank8: %lf s %lf MB %lf GB/s\n",time8,size,2.0*size/1024/time8);
}
TEST_F( default_exec, ViewResize ) {
printf("Resize View Performance for LayoutLeft:\n");
run_resizeview_tests<Kokkos::LayoutLeft>(10,1);
printf("Resize View Performance for LayoutRight:\n");
run_resizeview_tests<Kokkos::LayoutRight>(10,1);
}
}

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER

View File

@ -35,7 +35,7 @@
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov)
// Questions? Contact Christian R. Trott (crtrott@sandia.gov)
//
// ************************************************************************
//@HEADER