CMakeLists.txt 6.14 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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
#  @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
    ##################
    #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)
101
list(APPEND libs_for_tests chameleon)
102

103 104
if(CHAMELEON_SCHED_STARPU)
    if ( CHAMELEON_USE_MPI )
105
        list(APPEND libs_for_tests
106
          chameleon_starpu
107 108 109 110
          ${STARPU_MPI_LIBRARIES}
        )
    else()
        list(APPEND libs_for_tests
111
          chameleon_starpu
112 113 114 115
          ${STARPU_SHM_LIBRARIES}
        )
    endif()
    link_directories(${STARPU_LIBRARY_DIRS})
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
    if(CHAMELEON_USE_CUDA)
127 128 129 130 131
        list(APPEND libs_for_tests
        ${CUDA_LIBRARIES}
        )
        link_directories(${CUDA_LIBRARY_DIRS})
    endif()
132
    if(CHAMELEON_USE_MAGMA)
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
        list(APPEND libs_for_tests
        ${MAGMA_LIBRARIES}
        )
        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})
    
else()

    list(APPEND libs_for_tests
    coreblas
    simulapacke    
    simucblas
    ${HWLOC_LIBRARIES}
    ${EXTRA_LIBRARIES}
    )
    
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
# -----------------------------------------------
181
foreach(_precision ${CHAMELEON_PRECISION} )
182 183 184 185 186 187

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

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

endforeach()

201 202
# Copy python scripts to use test drivers
# ---------------------------------------
203
if(CHAMELEON_SCHED_STARPU)
204 205 206 207 208 209
    # Copy launcher
    add_custom_target(testing_launcher_starpu ALL
                     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/morse_testing_starpu.py
                                                      ${CMAKE_CURRENT_BINARY_DIR}/morse_testing_starpu.py)
    # install file
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/morse_testing_starpu.py
210
            DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/chameleon/testing)
211 212
endif()

213
if(CHAMELEON_SCHED_QUARK)
214 215 216 217 218 219
    # Copy launcher
    add_custom_target(testing_launcher_quark ALL
                     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/morse_testing_quark.py
                                                      ${CMAKE_CURRENT_BINARY_DIR}/morse_testing_quark.py)
    # install file
    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/morse_testing_quark.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
###