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

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

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

126
if(NOT CHAMELEON_SIMULATION)
127

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

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

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

154 155
else()

156
    list(APPEND libs_for_tests ${EXTRA_LIBRARIES})
157

158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
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}")
# message("HWLOC_LIBRARY_DIRS: ${HWLOC_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
# -----------------------------------------------
173
foreach(_precision ${CHAMELEON_PRECISION} )
174 175 176 177 178 179

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

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

endforeach()

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

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

225
#-------- Tests ---------
226 227 228 229 230
include(CTestLists.cmake)

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