CMakeLists.txt 6.4 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
list(APPEND libs_for_tests chameleon)
106

107
if(CHAMELEON_SCHED_STARPU)
108 109 110 111
    list(APPEND libs_for_tests
      chameleon_starpu
      ${STARPU_LIBRARIES_DEP}
    )
112
    link_directories(${STARPU_LIBRARY_DIRS})
113 114 115 116 117 118
elseif(CHAMELEON_SCHED_PARSEC)
    list(APPEND libs_for_tests
        chameleon_parsec
        ${PARSEC_LIBRARIES_DEP}
      )
    link_directories(${PARSEC_LIBRARY_DIRS_DEP})
119
elseif(CHAMELEON_SCHED_QUARK)
120
    list(APPEND libs_for_tests
121
        chameleon_quark
122 123 124 125 126
        ${QUARK_LIBRARIES}
      )
    link_directories(${QUARK_LIBRARY_DIRS})
endif()

127
if(NOT CHAMELEON_SIMULATION)
128

129
    if(CHAMELEON_USE_CUDA)
130
        list(APPEND libs_for_tests
131
        cudablas)
132
    endif()
133
    if(CHAMELEON_USE_CUDA)
134 135 136 137 138 139
        link_directories(${CUDA_LIBRARY_DIRS})
    endif()

    list(APPEND libs_for_tests
    coreblas
    ${LAPACKE_LIBRARIES}
140
    ${TMG_LIBRARIES}
141 142 143 144 145 146 147
    ${LAPACK_LIBRARIES}
    ${CBLAS_LIBRARIES}
    ${BLAS_LIBRARIES}
    ${EXTRA_LIBRARIES}
    )

    link_directories(${LAPACKE_LIBRARY_DIRS})
148
    link_directories(${TMG_LIBRARY_DIRS})
149 150 151
    link_directories(${LAPACK_LIBRARY_DIRS})
    link_directories(${CBLAS_LIBRARY_DIRS})
    link_directories(${BLAS_LIBRARY_DIRS})
152

153 154
else()

155
    list(APPEND libs_for_tests ${EXTRA_LIBRARIES})
156

157 158 159 160 161 162 163 164 165 166 167 168 169 170
endif()

# 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
# -----------------------------------------------
171
foreach(_precision ${CHAMELEON_PRECISION} )
172 173 174 175 176 177

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

    add_executable(${_precision}testing ${${_precision}SRC_GENERATED})
    add_dependencies(${_precision}testing
178
        chameleon_include
179 180 181 182 183 184 185 186
        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
187
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
188 189 190

endforeach()

191 192
# Copy python scripts to use test drivers
# ---------------------------------------
193
if(CHAMELEON_SCHED_STARPU)
194 195
    # Copy launcher
    add_custom_target(testing_launcher_starpu ALL
196 197 198 199 200 201 202 203 204 205 206 207
                     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)
208
    # install file
209
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py
210
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
211 212
endif()

213
if(CHAMELEON_SCHED_QUARK)
214 215
    # Copy launcher
    add_custom_target(testing_launcher_quark ALL
216 217
                     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/chameleon_testing.py
                                                      ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py)
218
    # install file
219
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py
220
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
221 222
endif()

223
#-------- Tests ---------
224 225 226 227 228
include(CTestLists.cmake)

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