CMakeLists.txt 6.57 KB
Newer Older
1 2 3 4 5 6
###
#
# @copyright (c) 2009-2014 The University of Tennessee and The University
#                          of Tennessee Research Foundation.
#                          All rights reserved.
# @copyright (c) 2012-2014 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 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
#  @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
    #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
    ##################
83
    testing_zgeadd.c
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
    #testing_zgecfi.c
    #testing_zgesvd.c
    #testing_zgetmi.c
    #testing_zheev.c
    #testing_zheevd.c
    #testing_zhegst.c
    #testing_zhegv.c
    #testing_zhegvd.c
    )

# 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)
102
list(APPEND libs_for_tests chameleon)
103

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

124
if(NOT CHAMELEON_SIMULATION)
125

126 127 128 129 130
    if(CHAMELEON_USE_CUDA OR CHAMELEON_USE_MAGMA)
        list(APPEND libs_for_tests
        cudablas
        )
    endif()
131
    if(CHAMELEON_USE_CUDA)
132 133
        link_directories(${CUDA_LIBRARY_DIRS})
    endif()
134
    if(CHAMELEON_USE_MAGMA)
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
        link_directories(${MAGMA_LIBRARY_DIRS})
    endif()

    list(APPEND libs_for_tests
    coreblas
    ${LAPACKE_LIBRARIES}
    ${LAPACK_LIBRARIES}
    ${CBLAS_LIBRARIES}
    ${BLAS_LIBRARIES}
    ${HWLOC_LIBRARIES}
    ${EXTRA_LIBRARIES}
    )

    link_directories(${LAPACKE_LIBRARY_DIRS})
    link_directories(${LAPACK_LIBRARY_DIRS})
    link_directories(${CBLAS_LIBRARY_DIRS})
    link_directories(${BLAS_LIBRARY_DIRS})
152

153 154 155 156
else()

    list(APPEND libs_for_tests
    coreblas
157
    simulapacke
158 159 160 161
    simucblas
    ${HWLOC_LIBRARIES}
    ${EXTRA_LIBRARIES}
    )
162

163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
endif()

link_directories(${HWLOC_LIBRARY_DIRS})

# 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
# -----------------------------------------------
180
foreach(_precision ${CHAMELEON_PRECISION} )
181 182 183 184 185 186

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

    add_executable(${_precision}testing ${${_precision}SRC_GENERATED})
    add_dependencies(${_precision}testing
187
        chameleon_include
188 189 190 191 192 193 194 195
        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
196
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
197 198 199

endforeach()

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

222
if(CHAMELEON_SCHED_QUARK)
223 224
    # Copy launcher
    add_custom_target(testing_launcher_quark ALL
225 226
                     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/chameleon_testing.py
                                                      ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py)
227
    # install file
228
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/chameleon_testing.py
229
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
230 231
endif()

232
#-------- Tests ---------
233 234 235 236 237
include(CTestLists.cmake)

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