CMakeLists.txt 4.78 KB
Newer Older
1 2 3 4 5
###
#
# @copyright (c) 2009-2014 The University of Tennessee and The University
#                          of Tennessee Research Foundation.
#                          All rights reserved.
6
# @copyright (c) 2012-2016 Inria. All rights reserved.
7
# @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
8 9 10 11 12 13 14 15 16 17 18 19 20
#
###
#
#  @file CMakeLists.txt
#
#  @project MORSE
#  MORSE is a software package provided by:
#     Inria Bordeaux - Sud-Ouest,
#     Univ. of Tennessee,
#     King Abdullah Univesity of Science and Technology
#     Univ. of California Berkeley,
#     Univ. of Colorado Denver.
#
21
#  @version 0.9.0
22 23 24 25 26 27
#  @author Cedric Castagnede
#  @author Emmanuel Agullo
#  @author Mathieu Faverge
#  @date 13-07-2012
#
###
28 29 30
if (CHAMELEON_SIMULATION)
  message(ERROR "testing directory should not be included when simulation is enabled")
endif()
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

# Check for subdirectories
# ------------------------
#add_subdirectory(lin)

# Generate morse auxiliary testing sources for all possible precisions
# --------------------------------------------------------------------
set(TESTING_HDRS_GENERATED "")
set(ZHDR
  testing_zauxiliary.h
 )

precisions_rules_py(TESTING_HDRS_GENERATED "${ZHDR}"
    PRECISIONS "s;d;c;z;ds;zc" )

add_custom_target(testing_include ALL SOURCES ${TESTING_HDRS_GENERATED})

# Generate morse testing sources for all possible precisions
# ----------------------------------------------------------
set(ZSRC
    testing_zauxiliary.c
    ##################
    # BLAS 3
    ##################
    testing_zgemm.c
    testing_zhemm.c
    testing_zher2k.c
    testing_zherk.c
    testing_zpemv.c
    testing_zsymm.c
    testing_zsyr2k.c
    testing_zsyrk.c
    testing_ztrmm.c
    testing_ztrsm.c
    ##################
    # LAPACK
    ##################
    testing_zgels.c
69 70
    testing_zgels_hqr.c
    testing_zgels_systolic.c
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
    #testing_zgesv.c
    testing_zgesv_incpiv.c
    #testing_zgetri.c
    testing_zlange.c
    testing_zposv.c
    testing_zpotri.c
    ##################
    # MIXED PRECISION
    ##################
    #testing_zcgels.c
    #testing_zcgesv.c
    #testing_zcposv.c
    #testing_zcungesv.c
    ##################
    # OTHERS
    ##################
87
    testing_zgeadd.c
88
    #testing_zgecfi.c
89
    testing_zgesvd.c
90 91
    #testing_zgetmi.c
    #testing_zheev.c
92
    testing_zheevd.c
93 94 95
    #testing_zhegst.c
    #testing_zhegv.c
    #testing_zhegvd.c
96
    testing_zgeqrf_qdwh.c
97 98 99 100 101 102 103 104 105 106
    )

# Add include and link directories
# --------------------------------
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR})

# Define what libraries we have to link with
# ------------------------------------------
unset(libs_for_tests)
107 108 109
list(APPEND libs_for_tests
  chameleon
  )
110

111 112 113 114 115 116 117
if(CHAMELEON_USE_CUDA)
  list(APPEND libs_for_tests
    cudablas)
endif()
if(CHAMELEON_USE_CUDA)
  link_directories(${CUDA_LIBRARY_DIRS})
endif()
118

119 120 121 122 123 124 125 126
list(APPEND libs_for_tests
  coreblas
  ${LAPACKE_LIBRARIES}
  ${TMG_LIBRARIES}
  ${LAPACK_LIBRARIES}
  ${CBLAS_LIBRARIES}
  ${BLAS_LIBRARIES}
  )
127

128 129 130 131 132
link_directories(${LAPACKE_LIBRARY_DIRS})
link_directories(${TMG_LIBRARY_DIRS})
link_directories(${LAPACK_LIBRARY_DIRS})
link_directories(${CBLAS_LIBRARY_DIRS})
link_directories(${BLAS_LIBRARY_DIRS})
133

134 135 136 137 138
list(APPEND libs_for_tests
  hqr
  ${EXTRA_LIBRARIES}
  )

139 140 141 142 143 144 145 146 147 148 149 150
# message("LAPACKE_LIBRARY_DIRS: ${LAPACKE_LIBRARY_DIRS}")
# message("LAPACK_LIBRARY_DIRS: ${LAPACK_LIBRARY_DIRS}")
# message("CBLAS_LIBRARY_DIRS: ${CBLAS_LIBRARY_DIRS}")
# message("BLAS_LIBRARY_DIRS: ${BLAS_LIBRARY_DIRS}")

# list(APPEND libs_for_tests ${CMAKE_Fortran_FLAGS}  )
# list(APPEND libs_for_tests ${CMAKE_Fortran_LDFLAGS})

# message(STATUS "libs testings: ${libs_for_tests}")

# Create one testing per precision with all files
# -----------------------------------------------
151
foreach(_precision ${CHAMELEON_PRECISION} )
152 153 154 155 156 157

    precisions_rules_py(${_precision}SRC_GENERATED "${ZSRC}"
        PRECISIONS "${_precision}" )

    add_executable(${_precision}testing ${${_precision}SRC_GENERATED})
    add_dependencies(${_precision}testing
158
        chameleon_include
159 160 161 162 163 164 165 166
        coreblas_include
        control_include
        testing_include
      )
    set_property(TARGET ${_precision}testing PROPERTY LINKER_LANGUAGE Fortran)
    target_link_libraries(${_precision}testing ${libs_for_tests})

    install(TARGETS ${_precision}testing
167
            DESTINATION bin/testing)
168 169 170

endforeach()

171 172
# Copy python scripts to use test drivers
# ---------------------------------------
173 174 175 176 177 178 179 180
# Copy launcher
add_custom_target(testing_launcher ALL
  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/chameleon_testing.py
  ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py)

# install file
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py
  DESTINATION bin/testing )
181

182
#-------- Tests ---------
183 184 185 186 187
include(CTestLists.cmake)

###
### END CMakeLists.txt
###