CMakeLists.txt 7.04 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
    ztrmm.c
    ztrsm.c
    ztrsmpl.c
    ##################
    # LAPACK
    ##################
    pzgelqf.c
BOUCHERIE Raphael's avatar
BOUCHERIE Raphael committed
105
    pzgelqf_param.c
106
107
108
    pzgelqfrh.c
    pzgeqrf.c
    pzgeqrfrh.c
109
    pzgeqrf_param.c
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
    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
128
    pzunglq_param.c
129
130
    pzunglqrh.c
    pzungqr.c
131
    pzungqr_param.c
132
133
    pzungqrrh.c
    pzunmlq.c
134
    pzunmlq_param.c
135
136
    pzunmlqrh.c
    pzunmqr.c
137
    pzunmqr_param.c
138
    pzunmqrrh.c
139
    pztpgqrt.c
140
    pztpqrt.c
141
142
    ###
    zgels.c
143
    zgels_param.c
144
    zgelqf.c
BOUCHERIE Raphael's avatar
BOUCHERIE Raphael committed
145
    zgelqf_param.c
146
    zgelqs.c
147
    zgelqs_param.c
148
    zgeqrf.c
149
    zgeqrf_param.c
150
    zgeqrs.c
151
    zgeqrs_param.c
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
    #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
BOUCHERIE Raphael's avatar
BOUCHERIE Raphael committed
179
180
    ztpgqrt.c
    ztpqrt.c
181
    zunglq.c
182
    zunglq_param.c
183
    zungqr.c
184
    zungqr_param.c
185
    zunmlq.c
186
    zunmlq_param.c
187
    zunmqr.c
188
    zunmqr_param.c
189
190
191
192
193
194
195
196
197
198
199
200
    ##################
    # MIXED PRECISION
    ##################
    pzlag2c.c
    ###
    #zcgels.c
    #zcgesv.c
    #zcposv.c
    #zcungesv.c
    ##################
    # OTHERS
    ##################
201
202
203
    pztile2band.c
    #pzgebrd_gb2bd.c
    pzgebrd_ge2gb.c
204
205
206
207
208
    #pzgetmi2.c
    #pzgetrf_reclap.c
    #pzgetrf_rectil.c
    #pzhegst.c
    #pzherbt.c
209
210
    #pzhetrd_hb2ht.c
    pzhetrd_he2hb.c
211
212
213
214
215
216
217
218
219
    #pzlarft_blgtrd.c
    #pzlaswp.c
    #pzlaswpc.c
    #pztrsmrv.c
    #pzunmqr_blgtrd.c
    #########################
    #zgebrd.c
    #zgecfi.c
    #zgecfi2.c
220
    zgesvd.c
221
222
223
224
    #zgetmi.c
    #zgetri.c
    #zgetrs.c
    #zheev.c
225
    zheevd.c
226
227
228
    #zhegst.c
    #zhegv.c
    #zhegvd.c
229
    zhetrd.c
230
231
232
233
234
235
236
237
238
239
    #zlaswp.c
    #zlaswpc.c
    #ztrsmrv.c
    ##################
    # CONTROL
    ##################
    #pzshift.c
    #pzpack.c
    pztile.c
    ztile.c
240
241
242
243
244
245
    ##################
    # BUILD
    ##################
    zbuild.c
    pzbuild.c
)
246

247
248
precisions_rules_py(CHAMELEON_SRCS_GENERATED "${ZSRC}"
                    PRECISIONS "${CHAMELEON_PRECISION}")
249
250
251
252
253
254
255
256

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

precisions_rules_py(CONTROL_SRCS_GENERATED "${ZSRC}"
257
                    PRECISIONS "${CHAMELEON_PRECISION}"
258
259
                    TARGETDIR "control" )

260
261
262
set(CHAMELEON_SRCS
    ${CHAMELEON_CONTROL}
    ${CHAMELEON_SRCS_GENERATED}
263
264
265
266
267
268
    ${CONTROL_SRCS_GENERATED}
   )

# Generate the morse fortran sources for all possible precisions
# --------------------------------------------------------------
if(HAVE_ISO_C_BINDING)
269
    set(CHAMELEON_SRCS_F_GENERATED "")
270
271
272
273
274
    set(ZSRCF
        ../control/morse_zcf90.F90
        ../control/morse_zf90.F90
        ../control/morse_zf90_wrappers.F90
       )
275
276
    precisions_rules_py(CHAMELEON_SRCS_F_GENERATED "${ZSRCF}"
                        PRECISIONS "${CHAMELEON_PRECISION}"
277
278
                        TARGETDIR "control" )

279
    set(CHAMELEON_SRCSF
280
        ../control/morse_f90.f90
281
        ${CHAMELEON_SRCS_F_GENERATED}
282
283
284
       )
endif(HAVE_ISO_C_BINDING)

285
286
287
288
289
# Force generation of sources
# ---------------------------
add_custom_target(chameleon_sources ALL SOURCES "${CHAMELEON_SRCS};${CHAMELEON_SRCSF}")
set(CHAMELEON_SOURCES_TARGETS "${CHAMELEON_SOURCES_TARGETS};chameleon_sources" CACHE INTERNAL "List of targets of sources")

290
291
# Compile step
# ------------
292
add_library(chameleon ${CHAMELEON_SRCS} ${CHAMELEON_SRCSF})
293
294
if(CHAMELEON_SCHED_STARPU)
  target_link_libraries(chameleon chameleon_starpu)
295
  list(INSERT CHAMELEON_DEP 0 -lchameleon_starpu)
296
297
elseif(CHAMELEON_SCHED_PARSEC)
  target_link_libraries(chameleon chameleon_parsec)
298
  list(INSERT CHAMELEON_DEP 0 -lchameleon_parsec)
299
300
elseif(CHAMELEON_SCHED_QUARK)
  target_link_libraries(chameleon chameleon_quark)
301
  list(INSERT CHAMELEON_DEP 0 -lchameleon_quark)
302
endif()
303
if (NOT CHAMELEON_SIMULATION)
304
305
306
  add_dependencies(chameleon
    coreblas_include)
  target_link_libraries(chameleon coreblas)
307
endif()
308
target_link_libraries(chameleon hqr)
309
list(INSERT CHAMELEON_DEP 0 -lchameleon)
310

311
312
add_dependencies(chameleon
  chameleon_include
313
  control_include
314
  chameleon_sources
315
316
)

317
318
set_property(TARGET chameleon PROPERTY LINKER_LANGUAGE Fortran)
set_property(TARGET chameleon PROPERTY Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/include")
319
set_property(TARGET chameleon PROPERTY INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
320
321
322

# installation
# ------------
323
install(TARGETS chameleon
324
325
326
327
328
        DESTINATION lib)

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