CMakeLists.txt 5.89 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 28 29 30 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
#  @author Cedric Castagnede
#  @author Emmanuel Agullo
#  @author Mathieu Faverge
#  @date 13-07-2012
#
###


# 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
67 68
    testing_zgels_hqr.c
    testing_zgels_systolic.c
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
    #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
    ##################
85
    testing_zgeadd.c
86
    #testing_zgecfi.c
87
    testing_zgesvd.c
88 89
    #testing_zgetmi.c
    #testing_zheev.c
90
    testing_zheevd.c
91 92 93
    #testing_zhegst.c
    #testing_zhegv.c
    #testing_zhegvd.c
94
    testing_zgeqrf_qdwh.c
95 96 97 98 99 100 101 102 103 104
    )

# 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)
105 106 107
list(APPEND libs_for_tests
  chameleon
  )
108

109
if(NOT CHAMELEON_SIMULATION)
110

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

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

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

134 135
endif()

136 137 138 139 140
list(APPEND libs_for_tests
  hqr
  ${EXTRA_LIBRARIES}
  )

141 142 143 144 145 146 147 148 149 150 151 152
# 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
# -----------------------------------------------
153
foreach(_precision ${CHAMELEON_PRECISION} )
154 155 156 157 158 159

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

    add_executable(${_precision}testing ${${_precision}SRC_GENERATED})
    add_dependencies(${_precision}testing
160
        chameleon_include
161 162 163 164 165 166 167 168
        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
169
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
170 171 172

endforeach()

173 174
# Copy python scripts to use test drivers
# ---------------------------------------
175
if(CHAMELEON_SCHED_STARPU)
176 177
    # Copy launcher
    add_custom_target(testing_launcher_starpu ALL
178 179 180 181 182 183 184 185 186 187 188 189
                     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 ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
endif()

if(CHAMELEON_SCHED_PARSEC)
    # Copy launcher
    add_custom_target(testing_launcher_parsec ALL
                     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/chameleon_testing.py
                                                      ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py)
190
    # install file
191
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py
192
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
193 194
endif()

195
if(CHAMELEON_SCHED_QUARK)
196 197
    # Copy launcher
    add_custom_target(testing_launcher_quark ALL
198 199
                     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/chameleon_testing.py
                                                      ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py)
200
    # install file
201
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py
202
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
203 204
endif()

205
#-------- Tests ---------
206 207 208 209 210
include(CTestLists.cmake)

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