diff --git a/src/UnitTests/Containers/CMakeLists.txt b/src/UnitTests/Containers/CMakeLists.txt index 24cae4dc0a5da3ee164d18be3d3c6ba03064b40d..e438120e37ed5d3c6c471a686be386dfa1753fab 100644 --- a/src/UnitTests/Containers/CMakeLists.txt +++ b/src/UnitTests/Containers/CMakeLists.txt @@ -29,6 +29,7 @@ ADD_EXECUTABLE( VectorTest-4 VectorTest-4.cpp ) ADD_EXECUTABLE( VectorTest-5 VectorTest-5.cpp ) ADD_EXECUTABLE( VectorTest-6 VectorTest-6.cpp ) ADD_EXECUTABLE( VectorTest-7 VectorTest-7.cpp ) +ADD_EXECUTABLE( VectorTest-8 VectorTest-8.cpp ) TARGET_COMPILE_OPTIONS( VectorTest-1 PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_COMPILE_OPTIONS( VectorTest-2 PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_COMPILE_OPTIONS( VectorTest-3 PRIVATE ${CXX_TESTS_FLAGS} ) @@ -36,6 +37,7 @@ TARGET_COMPILE_OPTIONS( VectorTest-4 PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_COMPILE_OPTIONS( VectorTest-5 PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_COMPILE_OPTIONS( VectorTest-6 PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_COMPILE_OPTIONS( VectorTest-7 PRIVATE ${CXX_TESTS_FLAGS} ) +TARGET_COMPILE_OPTIONS( VectorTest-8 PRIVATE ${CXX_TESTS_FLAGS} ) TARGET_LINK_LIBRARIES( VectorTest-1 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTest-2 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTest-3 ${GTEST_BOTH_LIBRARIES} ) @@ -43,6 +45,7 @@ TARGET_LINK_LIBRARIES( VectorTest-4 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTest-5 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTest-6 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTest-7 ${GTEST_BOTH_LIBRARIES} ) +TARGET_LINK_LIBRARIES( VectorTest-8 ${GTEST_BOTH_LIBRARIES} ) IF( BUILD_CUDA ) CUDA_ADD_EXECUTABLE( ArrayTestCuda ArrayTest.cu @@ -60,6 +63,7 @@ IF( BUILD_CUDA ) CUDA_ADD_EXECUTABLE( VectorTestCuda-5 VectorTest-5.cu OPTIONS ${CXX_TESTS_FLAGS} ) CUDA_ADD_EXECUTABLE( VectorTestCuda-6 VectorTest-6.cu OPTIONS ${CXX_TESTS_FLAGS} ) CUDA_ADD_EXECUTABLE( VectorTestCuda-7 VectorTest-7.cu OPTIONS ${CXX_TESTS_FLAGS} ) + CUDA_ADD_EXECUTABLE( VectorTestCuda-8 VectorTest-8.cu OPTIONS ${CXX_TESTS_FLAGS} ) TARGET_LINK_LIBRARIES( VectorTestCuda-1 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTestCuda-2 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTestCuda-3 ${GTEST_BOTH_LIBRARIES} ) @@ -67,6 +71,7 @@ IF( BUILD_CUDA ) TARGET_LINK_LIBRARIES( VectorTestCuda-5 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTestCuda-6 ${GTEST_BOTH_LIBRARIES} ) TARGET_LINK_LIBRARIES( VectorTestCuda-7 ${GTEST_BOTH_LIBRARIES} ) + TARGET_LINK_LIBRARIES( VectorTestCuda-8 ${GTEST_BOTH_LIBRARIES} ) ENDIF( BUILD_CUDA ) IF( BUILD_CUDA ) @@ -99,6 +104,7 @@ ADD_TEST( VectorTest-4 ${EXECUTABLE_OUTPUT_PATH}/VectorTest-4${CMAKE_EXECUTABLE_ ADD_TEST( VectorTest-5 ${EXECUTABLE_OUTPUT_PATH}/VectorTest-5${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( VectorTest-6 ${EXECUTABLE_OUTPUT_PATH}/VectorTest-6${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( VectorTest-7 ${EXECUTABLE_OUTPUT_PATH}/VectorTest-7${CMAKE_EXECUTABLE_SUFFIX} ) +ADD_TEST( VectorTest-8 ${EXECUTABLE_OUTPUT_PATH}/VectorTest-8${CMAKE_EXECUTABLE_SUFFIX} ) IF( BUILD_CUDA ) ADD_TEST( ArrayTestCuda ${EXECUTABLE_OUTPUT_PATH}/ArrayTestCuda${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( ArrayViewTestCuda ${EXECUTABLE_OUTPUT_PATH}/ArrayViewTestCuda${CMAKE_EXECUTABLE_SUFFIX} ) @@ -109,6 +115,7 @@ IF( BUILD_CUDA ) ADD_TEST( VectorTestCuda-5 ${EXECUTABLE_OUTPUT_PATH}/VectorTestCuda-5${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( VectorTestCuda-6 ${EXECUTABLE_OUTPUT_PATH}/VectorTestCuda-6${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( VectorTestCuda-7 ${EXECUTABLE_OUTPUT_PATH}/VectorTestCuda-7${CMAKE_EXECUTABLE_SUFFIX} ) + ADD_TEST( VectorTestCuda-8 ${EXECUTABLE_OUTPUT_PATH}/VectorTestCuda-8${CMAKE_EXECUTABLE_SUFFIX} ) ENDIF() ADD_TEST( MultireductionTest ${EXECUTABLE_OUTPUT_PATH}/MultireductionTest${CMAKE_EXECUTABLE_SUFFIX} ) ADD_TEST( StaticArrayTest ${EXECUTABLE_OUTPUT_PATH}/StaticArrayTest${CMAKE_EXECUTABLE_SUFFIX} ) diff --git a/src/UnitTests/Containers/VectorTest-7.h b/src/UnitTests/Containers/VectorTest-7.h index 459e546dd618cac7b2d36b031053df9c07445152..a6d45d8599483b62aa46d9a98dec09eecfd89ea2 100644 --- a/src/UnitTests/Containers/VectorTest-7.h +++ b/src/UnitTests/Containers/VectorTest-7.h @@ -1,5 +1,5 @@ /*************************************************************************** - VectorTest-6.h - description + VectorTest-7.h - description ------------------- begin : Oct 25, 2010 copyright : (C) 2010 by Tomas Oberhuber @@ -399,44 +399,6 @@ TYPED_TEST( VectorTest, sign ) EXPECT_NEAR( sign( u ).getElement( i ), v.getElement( i ), 1.0e-6 ); } -// NOTE: The following lambdas cannot be inside the test because of nvcc ( v. 10.1.105 ) -// error #3049-D: The enclosing parent function ("TestBody") for an extended __host__ __device__ lambda cannot have private or protected access within its class -template< typename VectorView > -typename VectorView::RealType -performEvaluateAndReduce( VectorView& u, VectorView& v, VectorView& w ) -{ - using RealType = typename VectorView::RealType; - - auto reduction = [] __cuda_callable__ ( RealType& a, const RealType& b ) { a += b; }; - auto volatileReduction = [] __cuda_callable__ ( volatile RealType& a, volatile RealType& b ) { a += b; }; - return evaluateAndReduce( w, u * v, reduction, volatileReduction, ( RealType ) 0.0 ); -} - -TYPED_TEST( VectorTest, evaluateAndReduce ) -{ - using VectorType = typename TestFixture::VectorType; - using ViewType = typename TestFixture::ViewType; - using RealType = typename VectorType::RealType; - using IndexType = typename VectorType::IndexType; - const int size = VECTOR_TEST_SIZE; - - VectorType _u( size ), _v( size ), _w( size ); - ViewType u( _u ), v( _v ), w( _w ); - RealType aux( 0.0 ); - for( int i = 0; i < size; i++ ) - { - const RealType x = i; - const RealType y = size / 2 - i; - u.setElement( i, x ); - v.setElement( i, y ); - aux += x * y; - } - auto r = performEvaluateAndReduce( u, v, w ); - EXPECT_TRUE( w == u * v ); - EXPECT_NEAR( aux, r, 1.0e-5 ); -} - - #endif // HAVE_GTEST #include "../main.h"