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

29 30 31 32 33 34
if ( CHAMELEON_USE_CUDA )
  set( CHAMELEON_COPY_DIAG ON )
else()
  option(CHAMELEON_COPY_DIAG
    "This options enables the duplication of the diagonal tiles in some algorithm to avoid anti-dependencies on lower/upper triangular parts (Might be useful to StarPU)" ON)
endif()
35 36 37 38 39 40

if ( CHAMELEON_SCHED_QUARK )
  # No need for those extra diagonale tiles
  set( CHAMELEON_COPY_DIAG OFF )
endif()

41 42
mark_as_advanced(CHAMELEON_COPY_DIAG)

43 44 45
if (CHAMELEON_COPY_DIAG)
  add_definitions(-DCHAMELEON_COPY_DIAG)
endif()
46 47 48

# Define the list of sources
# --------------------------
49
set(CHAMELEON_CONTROL
50 51 52 53 54 55 56 57 58 59 60 61
    ../control/async.c
    ../control/auxiliary.c
    ../control/context.c
    ../control/control.c
    ../control/descriptor.c
    ../control/workspace.c
    ../control/tile.c
    ../control/morse_f77.c
    ../control/morse_mf77.c
#    ../control/morsewinthread.c
   )

62
set(flags_to_add "")
63
foreach(_prec ${CHAMELEON_PRECISION})
64
    set(flags_to_add "${flags_to_add} -DPRECISION_${_prec}")
65
endforeach()
66
set_source_files_properties(../control/tile.c PROPERTIES COMPILE_FLAGS "${flags_to_add}")
67 68 69

# Generate the morse sources for all possible precisions
# ------------------------------------------------------
70
set(CHAMELEON_SRCS_GENERATED "")
71 72 73 74 75 76 77 78 79 80 81 82 83 84
set(ZSRC
    ##################
    # BLAS 3
    ##################
    pzgemm.c
    pzhemm.c
    pzher2k.c
    pzherk.c
    pzsymm.c
    pzsyr2k.c
    pzsyrk.c
    pztrmm.c
    pztrsm.c
    pztrsmpl.c
85
    pztradd.c
86
    pzlascal.c
87
    ###
88
    zgeadd.c
89
    zlascal.c
90 91 92 93 94 95 96
    zgemm.c
    zhemm.c
    zher2k.c
    zherk.c
    zsymm.c
    zsyr2k.c
    zsyrk.c
97
    ztradd.c
98 99 100 101 102 103 104 105 106 107
    ztrmm.c
    ztrsm.c
    ztrsmpl.c
    ##################
    # LAPACK
    ##################
    pzgelqf.c
    pzgelqfrh.c
    pzgeqrf.c
    pzgeqrfrh.c
108
    pzgeqrf_param.c
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
    pzgetrf_incpiv.c
    pzgetrf_nopiv.c
    pzlacpy.c
    pzlange.c
    pzlanhe.c
    pzlansy.c
    pzlantr.c
    pzlaset2.c
    pzlaset.c
    pzlauum.c
    pzplghe.c
    pzplgsy.c
    pzplrnt.c
    pzpotrf.c
    pzsytrf.c
    pztrtri.c
    pzpotrimm.c
    pzunglq.c
    pzunglqrh.c
    pzungqr.c
129
    pzungqr_param.c
130 131 132 133
    pzungqrrh.c
    pzunmlq.c
    pzunmlqrh.c
    pzunmqr.c
134
    pzunmqr_param.c
135
    pzunmqrrh.c
136
    pztpgqrt.c
137
    pztpqrt.c
138 139
    ###
    zgels.c
140
    zgels_param.c
141 142 143
    zgelqf.c
    zgelqs.c
    zgeqrf.c
144
    zgeqrf_param.c
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
    zgeqrs.c
    #zgesv.c
    zgesv_incpiv.c
    zgesv_nopiv.c
    #zgetrf.c
    zgetrf_incpiv.c
    zgetrf_nopiv.c
    zgetrs_incpiv.c
    zgetrs_nopiv.c
    zlacpy.c
    zlange.c
    zlanhe.c
    zlansy.c
    zlantr.c
    zlaset.c
    zlauum.c
    zplghe.c
    zplgsy.c
    zplrnt.c
    zposv.c
    zsysv.c
    zpotrf.c
    zsytrf.c
    zpotri.c
    zpotrimm.c
    zpotrs.c
    zsytrs.c
    ztrtri.c
    zunglq.c
    zungqr.c
175
    zungqr_param.c
176 177
    zunmlq.c
    zunmqr.c
178
    zunmqr_param.c
179
    ztpgqrt.c
180
    ztpqrt.c
181 182 183 184 185 186 187 188 189 190 191 192
    ##################
    # MIXED PRECISION
    ##################
    pzlag2c.c
    ###
    #zcgels.c
    #zcgesv.c
    #zcposv.c
    #zcungesv.c
    ##################
    # OTHERS
    ##################
193 194 195
    pztile2band.c
    #pzgebrd_gb2bd.c
    pzgebrd_ge2gb.c
196 197 198 199 200
    #pzgetmi2.c
    #pzgetrf_reclap.c
    #pzgetrf_rectil.c
    #pzhegst.c
    #pzherbt.c
201 202
    #pzhetrd_hb2ht.c
    pzhetrd_he2hb.c
203 204 205 206 207 208 209 210 211
    #pzlarft_blgtrd.c
    #pzlaswp.c
    #pzlaswpc.c
    #pztrsmrv.c
    #pzunmqr_blgtrd.c
    #########################
    #zgebrd.c
    #zgecfi.c
    #zgecfi2.c
212
    zgesvd.c
213 214 215 216
    #zgetmi.c
    #zgetri.c
    #zgetrs.c
    #zheev.c
217
    zheevd.c
218 219 220
    #zhegst.c
    #zhegv.c
    #zhegvd.c
221
    zhetrd.c
222 223 224 225 226 227 228 229 230 231
    #zlaswp.c
    #zlaswpc.c
    #ztrsmrv.c
    ##################
    # CONTROL
    ##################
    #pzshift.c
    #pzpack.c
    pztile.c
    ztile.c
232 233 234 235 236 237
    ##################
    # BUILD
    ##################
    zbuild.c
    pzbuild.c
)
238

239 240
precisions_rules_py(CHAMELEON_SRCS_GENERATED "${ZSRC}"
                    PRECISIONS "${CHAMELEON_PRECISION}")
241 242 243 244 245 246 247 248

set(CONTROL_SRCS_GENERATED "")
set(ZSRC
    ../control/workspace_z.c
    ../control/morse_zf77.c
)

precisions_rules_py(CONTROL_SRCS_GENERATED "${ZSRC}"
249
                    PRECISIONS "${CHAMELEON_PRECISION}"
250 251
                    TARGETDIR "control" )

252 253 254
set(CHAMELEON_SRCS
    ${CHAMELEON_CONTROL}
    ${CHAMELEON_SRCS_GENERATED}
255 256 257 258 259 260
    ${CONTROL_SRCS_GENERATED}
   )

# Generate the morse fortran sources for all possible precisions
# --------------------------------------------------------------
if(HAVE_ISO_C_BINDING)
261
    set(CHAMELEON_SRCS_F_GENERATED "")
262 263 264 265 266
    set(ZSRCF
        ../control/morse_zcf90.F90
        ../control/morse_zf90.F90
        ../control/morse_zf90_wrappers.F90
       )
267 268
    precisions_rules_py(CHAMELEON_SRCS_F_GENERATED "${ZSRCF}"
                        PRECISIONS "${CHAMELEON_PRECISION}"
269 270
                        TARGETDIR "control" )

271
    set(CHAMELEON_SRCSF
272
        ../control/morse_f90.f90
273
        ${CHAMELEON_SRCS_F_GENERATED}
274 275 276 277 278
       )
endif(HAVE_ISO_C_BINDING)

# Compile step
# ------------
279
add_library(chameleon ${CHAMELEON_SRCS} ${CHAMELEON_SRCSF})
280 281
if(CHAMELEON_SCHED_STARPU)
  target_link_libraries(chameleon chameleon_starpu)
282
  list(INSERT CHAMELEON_DEP 0 -lchameleon_starpu)
283 284
elseif(CHAMELEON_SCHED_PARSEC)
  target_link_libraries(chameleon chameleon_parsec)
285
  list(INSERT CHAMELEON_DEP 0 -lchameleon_parsec)
286 287
elseif(CHAMELEON_SCHED_QUARK)
  target_link_libraries(chameleon chameleon_quark)
288
  list(INSERT CHAMELEON_DEP 0 -lchameleon_quark)
289
endif()
290 291 292
if (NOT CHAMELEON_SIMULATION)
    target_link_libraries(chameleon coreblas)
endif()
293
list(INSERT CHAMELEON_DEP 0 -lchameleon)
294

295 296
add_dependencies(chameleon
  chameleon_include
297 298 299
  coreblas_include
  control_include
)
300 301 302
if (NOT CHAMELEON_SIMULATION)
    add_dependencies(chameleon coreblas_include)
endif()
303

304 305
set_property(TARGET chameleon PROPERTY LINKER_LANGUAGE Fortran)
set_property(TARGET chameleon PROPERTY Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/include")
306
set_property(TARGET chameleon PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
307 308 309

# installation
# ------------
310
install(TARGETS chameleon
311 312 313 314 315
        DESTINATION lib)

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