diff options
Diffstat (limited to 'unsupported/test/CMakeLists.txt')
-rw-r--r-- | unsupported/test/CMakeLists.txt | 167 |
1 files changed, 112 insertions, 55 deletions
diff --git a/unsupported/test/CMakeLists.txt b/unsupported/test/CMakeLists.txt index 937acc432..f75bf9798 100644 --- a/unsupported/test/CMakeLists.txt +++ b/unsupported/test/CMakeLists.txt @@ -1,3 +1,17 @@ +# generate split test header file only if it does not yet exist +# in order to prevent a rebuild everytime cmake is configured +if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/split_test_helper.h) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/split_test_helper.h "") + foreach(i RANGE 1 999) + file(APPEND ${CMAKE_CURRENT_BINARY_DIR}/split_test_helper.h + "#ifdef EIGEN_TEST_PART_${i}\n" + "#define CALL_SUBTEST_${i}(FUNC) CALL_SUBTEST(FUNC)\n" + "#else\n" + "#define CALL_SUBTEST_${i}(FUNC)\n" + "#endif\n\n" + ) + endforeach() +endif() set_property(GLOBAL PROPERTY EIGEN_CURRENT_SUBPROJECT "Unsupported") add_custom_target(BuildUnsupported) @@ -99,61 +113,104 @@ ei_add_test(kronecker_product) if(EIGEN_TEST_CXX11) # It should be safe to always run these tests as there is some fallback code for # older compiler that don't support cxx11. - ei_add_test(cxx11_meta "-std=c++0x") - ei_add_test(cxx11_tensor_simple "-std=c++0x") -# ei_add_test(cxx11_tensor_symmetry "-std=c++0x") - ei_add_test(cxx11_tensor_assign "-std=c++0x") - ei_add_test(cxx11_tensor_dimension "-std=c++0x") - ei_add_test(cxx11_tensor_index_list "-std=c++0x") - ei_add_test(cxx11_tensor_mixed_indices "-std=c++0x") - ei_add_test(cxx11_tensor_comparisons "-std=c++0x") - ei_add_test(cxx11_tensor_contraction "-std=c++0x") - ei_add_test(cxx11_tensor_convolution "-std=c++0x") - ei_add_test(cxx11_tensor_expr "-std=c++0x") - ei_add_test(cxx11_tensor_math "-std=c++0x") - ei_add_test(cxx11_tensor_forced_eval "-std=c++0x") - ei_add_test(cxx11_tensor_fixed_size "-std=c++0x") - ei_add_test(cxx11_tensor_const "-std=c++0x") - ei_add_test(cxx11_tensor_of_const_values "-std=c++0x") - ei_add_test(cxx11_tensor_of_complex "-std=c++0x") - ei_add_test(cxx11_tensor_of_strings "-std=c++0x") - ei_add_test(cxx11_tensor_uint128 "-std=c++0x") - ei_add_test(cxx11_tensor_intdiv "-std=c++0x") - ei_add_test(cxx11_tensor_lvalue "-std=c++0x") - ei_add_test(cxx11_tensor_map "-std=c++0x") - ei_add_test(cxx11_tensor_broadcasting "-std=c++0x") - ei_add_test(cxx11_tensor_chipping "-std=c++0x") - ei_add_test(cxx11_tensor_concatenation "-std=c++0x") - ei_add_test(cxx11_tensor_inflation "-std=c++0x") - ei_add_test(cxx11_tensor_morphing "-std=c++0x") - ei_add_test(cxx11_tensor_padding "-std=c++0x") - ei_add_test(cxx11_tensor_patch "-std=c++0x") - ei_add_test(cxx11_tensor_image_patch "-std=c++0x") - ei_add_test(cxx11_tensor_volume_patch "-std=c++0x") - ei_add_test(cxx11_tensor_reduction "-std=c++0x") - ei_add_test(cxx11_tensor_argmax "-std=c++0x") - ei_add_test(cxx11_tensor_shuffling "-std=c++0x") - ei_add_test(cxx11_tensor_striding "-std=c++0x") + set(CMAKE_CXX_STANDARD 11) + + ei_add_test(cxx11_float16) + ei_add_test(cxx11_meta) + ei_add_test(cxx11_tensor_simple) +# ei_add_test(cxx11_tensor_symmetry) + ei_add_test(cxx11_tensor_assign) + ei_add_test(cxx11_tensor_dimension) + ei_add_test(cxx11_tensor_index_list) + ei_add_test(cxx11_tensor_mixed_indices) + ei_add_test(cxx11_tensor_comparisons) + ei_add_test(cxx11_tensor_contraction) + ei_add_test(cxx11_tensor_convolution) + ei_add_test(cxx11_tensor_expr) + ei_add_test(cxx11_tensor_math) + ei_add_test(cxx11_tensor_forced_eval) + ei_add_test(cxx11_tensor_fixed_size) + ei_add_test(cxx11_tensor_const) + ei_add_test(cxx11_tensor_of_const_values) + ei_add_test(cxx11_tensor_of_complex) + ei_add_test(cxx11_tensor_of_strings) + ei_add_test(cxx11_tensor_intdiv) + ei_add_test(cxx11_tensor_lvalue) + ei_add_test(cxx11_tensor_map) + ei_add_test(cxx11_tensor_broadcasting) + ei_add_test(cxx11_tensor_chipping) + ei_add_test(cxx11_tensor_concatenation) + ei_add_test(cxx11_tensor_inflation) + ei_add_test(cxx11_tensor_morphing) + ei_add_test(cxx11_tensor_padding) + ei_add_test(cxx11_tensor_patch) + ei_add_test(cxx11_tensor_image_patch) + ei_add_test(cxx11_tensor_volume_patch) + ei_add_test(cxx11_tensor_reduction) + ei_add_test(cxx11_tensor_argmax) + ei_add_test(cxx11_tensor_shuffling) + ei_add_test(cxx11_tensor_striding) + ei_add_test(cxx11_tensor_notification "-pthread" "${CMAKE_THREAD_LIBS_INIT}") ei_add_test(cxx11_tensor_thread_pool "-pthread" "${CMAKE_THREAD_LIBS_INIT}") - ei_add_test(cxx11_tensor_ref "-std=c++0x") - ei_add_test(cxx11_tensor_random "-std=c++0x") - ei_add_test(cxx11_tensor_casts "-std=c++0x") - ei_add_test(cxx11_tensor_reverse "-std=c++0x") - ei_add_test(cxx11_tensor_layout_swap "-std=c++0x") - ei_add_test(cxx11_tensor_io "-std=c++0x") - ei_add_test(cxx11_tensor_generator "-std=c++0x") - ei_add_test(cxx11_tensor_custom_op "-std=c++0x") - ei_add_test(cxx11_tensor_custom_index "-std=c++0x") - ei_add_test(cxx11_tensor_sugar "-std=c++0x") - ei_add_test(cxx11_tensor_fft "-std=c++0x") - ei_add_test(cxx11_tensor_ifft "-std=c++0x") - - # These tests needs nvcc -# ei_add_test(cxx11_tensor_device "-std=c++0x") -# ei_add_test(cxx11_tensor_cuda "-std=c++0x") -# ei_add_test(cxx11_tensor_contract_cuda "-std=c++0x") -# ei_add_test(cxx11_tensor_reduction_cuda "-std=c++0x") -# ei_add_test(cxx11_tensor_random_cuda "-std=c++0x") -# ei_add_test(cxx11_tensor_argmax_cuda "-std=c++0x") + ei_add_test(cxx11_tensor_ref) + ei_add_test(cxx11_tensor_random) + ei_add_test(cxx11_tensor_casts) + ei_add_test(cxx11_tensor_roundings) + ei_add_test(cxx11_tensor_reverse) + ei_add_test(cxx11_tensor_layout_swap) + ei_add_test(cxx11_tensor_io) + ei_add_test(cxx11_tensor_generator) + ei_add_test(cxx11_tensor_custom_op) + ei_add_test(cxx11_tensor_custom_index) + ei_add_test(cxx11_tensor_sugar) + ei_add_test(cxx11_tensor_fft) + ei_add_test(cxx11_tensor_ifft) + ei_add_test(cxx11_tensor_empty) + + if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + # This test requires __uint128_t which is only available on 64bit systems + ei_add_test(cxx11_tensor_uint128) + endif() + +endif() + +# These tests needs nvcc +find_package(CUDA 7.0) +if(CUDA_FOUND AND EIGEN_TEST_CUDA) + # Make sure to compile without the -pedantic, -Wundef, -Wnon-virtual-dtor + # and -fno-check-new flags since they trigger thousands of compilation warnings + # in the CUDA runtime + string(REPLACE "-pedantic" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REPLACE "-Wundef" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REPLACE "-Wnon-virtual-dtor" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REPLACE "-fno-check-new" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + + message(STATUS "Flags used to compile cuda code: " ${CMAKE_CXX_FLAGS}) + + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(CUDA_NVCC_FLAGS "-ccbin /usr/bin/clang" CACHE STRING "nvcc flags" FORCE) + endif() + if(EIGEN_TEST_CUDA_CLANG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 --cuda-gpu-arch=sm_${EIGEN_CUDA_COMPUTE_ARCH}") + endif() + + set(CUDA_NVCC_FLAGS "-std=c++11 --relaxed-constexpr -arch compute_${EIGEN_CUDA_COMPUTE_ARCH} -Xcudafe \"--display_error_number\"") + cuda_include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${CUDA_TOOLKIT_ROOT_DIR}/include") + set(EIGEN_ADD_TEST_FILENAME_EXTENSION "cu") + + ei_add_test(cxx11_tensor_device) + ei_add_test(cxx11_tensor_cuda) + ei_add_test(cxx11_tensor_contract_cuda) + ei_add_test(cxx11_tensor_reduction_cuda) + ei_add_test(cxx11_tensor_argmax_cuda) + ei_add_test(cxx11_tensor_cast_float16_cuda) + + # The random number generation code requires arch 3.5 or greater. + if (${EIGEN_CUDA_COMPUTE_ARCH} GREATER 34) + ei_add_test(cxx11_tensor_random_cuda) + endif() + + ei_add_test(cxx11_tensor_of_float16_cuda) + unset(EIGEN_ADD_TEST_FILENAME_EXTENSION) endif() |