Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Chameleon
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
AGULLO Emmanuel
Chameleon
Commits
bf115f19
Commit
bf115f19
authored
Nov 04, 2015
by
Mathieu Faverge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge back the parsec branch
parent
ca1ddd54
Changes
87
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
87 changed files
with
6327 additions
and
288 deletions
+6327
-288
CMakeLists.txt
CMakeLists.txt
+137
-43
compute/pzlange.c
compute/pzlange.c
+5
-12
compute/pzplgsy.c
compute/pzplgsy.c
+3
-3
compute/pzplrnt.c
compute/pzplrnt.c
+1
-1
compute/pztile.c
compute/pztile.c
+3
-3
compute/zplghe.c
compute/zplghe.c
+4
-5
compute/zplgsy.c
compute/zplgsy.c
+4
-5
compute/zplrnt.c
compute/zplrnt.c
+3
-4
compute/ztile.c
compute/ztile.c
+2
-2
control/descriptor.c
control/descriptor.c
+3
-3
example/basic_zposv/CMakeLists.txt
example/basic_zposv/CMakeLists.txt
+6
-0
example/basic_zposv/CTestLists.cmake
example/basic_zposv/CTestLists.cmake
+1
-1
example/lapack_to_morse/CMakeLists.txt
example/lapack_to_morse/CMakeLists.txt
+6
-0
include/morse_struct.h
include/morse_struct.h
+1
-0
runtime/CMakeLists.txt
runtime/CMakeLists.txt
+2
-0
runtime/parsec/CMakeLists.txt
runtime/parsec/CMakeLists.txt
+182
-0
runtime/parsec/codelets/codelet_dataflush.c
runtime/parsec/codelets/codelet_dataflush.c
+38
-0
runtime/parsec/codelets/codelet_zasum.c
runtime/parsec/codelets/codelet_zasum.c
+70
-0
runtime/parsec/codelets/codelet_zaxpy.c
runtime/parsec/codelets/codelet_zaxpy.c
+67
-0
runtime/parsec/codelets/codelet_zgeadd.c
runtime/parsec/codelets/codelet_zgeadd.c
+137
-0
runtime/parsec/codelets/codelet_zgelqt.c
runtime/parsec/codelets/codelet_zgelqt.c
+137
-0
runtime/parsec/codelets/codelet_zgemm.c
runtime/parsec/codelets/codelet_zgemm.c
+99
-0
runtime/parsec/codelets/codelet_zgeqrt.c
runtime/parsec/codelets/codelet_zgeqrt.c
+138
-0
runtime/parsec/codelets/codelet_zgessm.c
runtime/parsec/codelets/codelet_zgessm.c
+130
-0
runtime/parsec/codelets/codelet_zgessq.c
runtime/parsec/codelets/codelet_zgessq.c
+64
-0
runtime/parsec/codelets/codelet_zgetrf.c
runtime/parsec/codelets/codelet_zgetrf.c
+77
-0
runtime/parsec/codelets/codelet_zgetrf_incpiv.c
runtime/parsec/codelets/codelet_zgetrf_incpiv.c
+131
-0
runtime/parsec/codelets/codelet_zgetrf_nopiv.c
runtime/parsec/codelets/codelet_zgetrf_nopiv.c
+120
-0
runtime/parsec/codelets/codelet_zhemm.c
runtime/parsec/codelets/codelet_zhemm.c
+96
-0
runtime/parsec/codelets/codelet_zher2k.c
runtime/parsec/codelets/codelet_zher2k.c
+97
-0
runtime/parsec/codelets/codelet_zherk.c
runtime/parsec/codelets/codelet_zherk.c
+89
-0
runtime/parsec/codelets/codelet_zhessq.c
runtime/parsec/codelets/codelet_zhessq.c
+64
-0
runtime/parsec/codelets/codelet_zlacpy.c
runtime/parsec/codelets/codelet_zlacpy.c
+76
-0
runtime/parsec/codelets/codelet_zlag2c.c
runtime/parsec/codelets/codelet_zlag2c.c
+122
-0
runtime/parsec/codelets/codelet_zlange.c
runtime/parsec/codelets/codelet_zlange.c
+104
-0
runtime/parsec/codelets/codelet_zlanhe.c
runtime/parsec/codelets/codelet_zlanhe.c
+72
-0
runtime/parsec/codelets/codelet_zlansy.c
runtime/parsec/codelets/codelet_zlansy.c
+72
-0
runtime/parsec/codelets/codelet_zlantr.c
runtime/parsec/codelets/codelet_zlantr.c
+77
-0
runtime/parsec/codelets/codelet_zlaset.c
runtime/parsec/codelets/codelet_zlaset.c
+105
-0
runtime/parsec/codelets/codelet_zlaset2.c
runtime/parsec/codelets/codelet_zlaset2.c
+97
-0
runtime/parsec/codelets/codelet_zlauum.c
runtime/parsec/codelets/codelet_zlauum.c
+64
-0
runtime/parsec/codelets/codelet_zpamm.c
runtime/parsec/codelets/codelet_zpamm.c
+244
-0
runtime/parsec/codelets/codelet_zplghe.c
runtime/parsec/codelets/codelet_zplghe.c
+74
-0
runtime/parsec/codelets/codelet_zplgsy.c
runtime/parsec/codelets/codelet_zplgsy.c
+74
-0
runtime/parsec/codelets/codelet_zplrnt.c
runtime/parsec/codelets/codelet_zplrnt.c
+71
-0
runtime/parsec/codelets/codelet_zplssq.c
runtime/parsec/codelets/codelet_zplssq.c
+118
-0
runtime/parsec/codelets/codelet_zpotrf.c
runtime/parsec/codelets/codelet_zpotrf.c
+66
-0
runtime/parsec/codelets/codelet_zssssm.c
runtime/parsec/codelets/codelet_zssssm.c
+99
-0
runtime/parsec/codelets/codelet_zsymm.c
runtime/parsec/codelets/codelet_zsymm.c
+93
-0
runtime/parsec/codelets/codelet_zsyr2k.c
runtime/parsec/codelets/codelet_zsyr2k.c
+91
-0
runtime/parsec/codelets/codelet_zsyrk.c
runtime/parsec/codelets/codelet_zsyrk.c
+82
-0
runtime/parsec/codelets/codelet_zsyssq.c
runtime/parsec/codelets/codelet_zsyssq.c
+64
-0
runtime/parsec/codelets/codelet_zsytrf_nopiv.c
runtime/parsec/codelets/codelet_zsytrf_nopiv.c
+64
-0
runtime/parsec/codelets/codelet_ztile_zero.c
runtime/parsec/codelets/codelet_ztile_zero.c
+68
-0
runtime/parsec/codelets/codelet_ztradd.c
runtime/parsec/codelets/codelet_ztradd.c
+145
-0
runtime/parsec/codelets/codelet_ztrasm.c
runtime/parsec/codelets/codelet_ztrasm.c
+74
-0
runtime/parsec/codelets/codelet_ztrmm.c
runtime/parsec/codelets/codelet_ztrmm.c
+87
-0
runtime/parsec/codelets/codelet_ztrsm.c
runtime/parsec/codelets/codelet_ztrsm.c
+81
-0
runtime/parsec/codelets/codelet_ztrssq.c
runtime/parsec/codelets/codelet_ztrssq.c
+71
-0
runtime/parsec/codelets/codelet_ztrtri.c
runtime/parsec/codelets/codelet_ztrtri.c
+74
-0
runtime/parsec/codelets/codelet_ztslqt.c
runtime/parsec/codelets/codelet_ztslqt.c
+85
-0
runtime/parsec/codelets/codelet_ztsmlq.c
runtime/parsec/codelets/codelet_ztsmlq.c
+113
-0
runtime/parsec/codelets/codelet_ztsmqr.c
runtime/parsec/codelets/codelet_ztsmqr.c
+112
-0
runtime/parsec/codelets/codelet_ztsqrt.c
runtime/parsec/codelets/codelet_ztsqrt.c
+85
-0
runtime/parsec/codelets/codelet_ztstrf.c
runtime/parsec/codelets/codelet_ztstrf.c
+100
-0
runtime/parsec/codelets/codelet_zttlqt.c
runtime/parsec/codelets/codelet_zttlqt.c
+85
-0
runtime/parsec/codelets/codelet_zttmlq.c
runtime/parsec/codelets/codelet_zttmlq.c
+110
-0
runtime/parsec/codelets/codelet_zttmqr.c
runtime/parsec/codelets/codelet_zttmqr.c
+113
-0
runtime/parsec/codelets/codelet_zttqrt.c
runtime/parsec/codelets/codelet_zttqrt.c
+85
-0
runtime/parsec/codelets/codelet_zunmlq.c
runtime/parsec/codelets/codelet_zunmlq.c
+97
-0
runtime/parsec/codelets/codelet_zunmqr.c
runtime/parsec/codelets/codelet_zunmqr.c
+95
-0
runtime/parsec/control/runtime_async.c
runtime/parsec/control/runtime_async.c
+72
-0
runtime/parsec/control/runtime_context.c
runtime/parsec/control/runtime_context.c
+65
-0
runtime/parsec/control/runtime_control.c
runtime/parsec/control/runtime_control.c
+113
-0
runtime/parsec/control/runtime_descriptor.c
runtime/parsec/control/runtime_descriptor.c
+268
-0
runtime/parsec/control/runtime_options.c
runtime/parsec/control/runtime_options.c
+49
-0
runtime/parsec/control/runtime_profiling.c
runtime/parsec/control/runtime_profiling.c
+99
-0
runtime/parsec/control/runtime_zlocality.c
runtime/parsec/control/runtime_zlocality.c
+34
-0
runtime/parsec/control/runtime_zprofiling.c
runtime/parsec/control/runtime_zprofiling.c
+22
-0
runtime/parsec/include/morse_parsec.h
runtime/parsec/include/morse_parsec.h
+30
-0
testing/CMakeLists.txt
testing/CMakeLists.txt
+22
-6
testing/chameleon_testing.py
testing/chameleon_testing.py
+13
-13
testing/morse_testing_quark.py
testing/morse_testing_quark.py
+0
-179
testing/testing_zlange.c
testing/testing_zlange.c
+1
-1
timing/CMakeLists.txt
timing/CMakeLists.txt
+6
-0
timing/time_zgeqrf.c
timing/time_zgeqrf.c
+5
-5
timing/time_zpotrf.c
timing/time_zpotrf.c
+2
-2
No files found.
CMakeLists.txt
View file @
bf115f19
...
...
@@ -103,33 +103,49 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
# -----------------------------
# Create a list of possible runtime
set
(
CHAMELEON_SCHED_list
"STARPU"
"QUARK"
)
set
(
CHAMELEON_SCHED_list
"
PARSEC"
"
STARPU"
"QUARK"
)
# Initially StarPU runtime is enabled
# Initially PaRSEC runtime is enabled
option
(
CHAMELEON_SCHED_PARSEC
"Enable PaRSEC scheduler as the default runtime
(Conflict with other CHAMELEON_SCHED_* options)"
OFF
)
option
(
CHAMELEON_SCHED_STARPU
"Enable StarPU scheduler as the default runtime
(Conflict with other CHAMELEON_SCHED_* options)"
O
N
)
(Conflict with other CHAMELEON_SCHED_* options)"
O
FF
)
option
(
CHAMELEON_SCHED_QUARK
"Enable Quark scheduler as the default runtime
(Conflict with other CHAMELEON_SCHED_* options)"
OFF
)
# For now, we are able to compile only one runtime at a time, so we disable combinations of runtimes
if
(
CHAMELEON_SCHED_QUARK
)
set
(
CHAMELEON_SCHED_STARPU OFF
)
set
(
CHAMELEON_SCHED_PARSEC OFF
)
elseif
(
CHAMELEON_SCHED_STARPU
)
set
(
CHAMELEON_SCHED_QUARK OFF
)
set
(
CHAMELEON_SCHED_PARSEC OFF
)
elseif
(
CHAMELEON_SCHED_PARSEC
)
set
(
CHAMELEON_SCHED_QUARK OFF
)
set
(
CHAMELEON_SCHED_STARPU OFF
)
endif
()
# Set default to StarPU if nothing specific is required by the user
if
(
NOT CHAMELEON_SCHED_STARPU AND NOT CHAMELEON_SCHED_PARSEC AND NOT CHAMELEON_SCHED_QUARK
)
set
(
CHAMELEON_SCHED_STARPU ON
)
endif
()
if
(
CHAMELEON_SCHED_STARPU
)
message
(
"--
${
BoldGreen
}
CHAMELEON_SCHED_STARPU is set to ON: CHAMELEON uses StarPU runtime
${
ColourReset
}
"
)
message
(
"--
${
BoldGreen
}
To use CHAMELEON with QUARK runtime: set CHAMELEON_SCHED_QUARK"
"to ON (CHAMELEON_SCHED_STARPU will be disabled)
${
ColourReset
}
"
)
message
(
"--
${
BoldGreen
}
CHAMELEON_SCHED_STARPU is set to ON: CHAMELEON uses StarPU runtime
\n
"
" To use CHAMELEON with Quark runtime: set CHAMELEON_SCHED_QUARK to ON
\n
"
" To use CHAMELEON with PaRSEC runtime: set CHAMELEON_SCHED_PARSEC to ON
\n
"
" (CHAMELEON_SCHED_STARPU will be disabled)
${
ColourReset
}
"
)
elseif
(
CHAMELEON_SCHED_QUARK
)
message
(
"--
${
BoldGreen
}
CHAMELEON_SCHED_QUARK is set to ON: CHAMELEON uses QUARK runtime
${
ColourReset
}
"
)
message
(
"--
${
BoldGreen
}
To use CHAMELEON with StarPU runtime: set CHAMELEON_SCHED_STARPU"
"to ON (CHAMELEON_SCHED_QUARK will be disabled)
${
ColourReset
}
"
)
endif
()
if
(
CHAMELEON_USE_MAGMA
)
set
(
CHAMELEON_USE_CUDA ON
)
message
(
"--
${
BoldGreen
}
CHAMELEON_SCHED_QUARK is set to ON: CHAMELEON uses Quark runtime
\n
"
" To use CHAMELEON with StarPU runtime: set CHAMELEON_SCHED_STARPU to ON
\n
"
" To use CHAMELEON with PaRSEC runtime: set CHAMELEON_SCHED_PARSEC to ON
\n
"
" (CHAMELEON_SCHED_QUARK will be disabled)
${
ColourReset
}
"
)
elseif
(
CHAMELEON_SCHED_PARSEC
)
message
(
"--
${
BoldGreen
}
CHAMELEON_SCHED_PARSEC is set to ON: CHAMELEON uses PaRSEC runtime
\n
"
" To use CHAMELEON with StarPU runtime: set CHAMELEON_SCHED_STARPU to ON
\n
"
" To use CHAMELEON with Quark runtime: set CHAMELEON_SCHED_QUARK to ON
\n
"
" (CHAMELEON_SCHED_PARSEC will be disabled)
${
ColourReset
}
"
)
endif
()
# Check that one, and only one, SCHED option is set to ON
...
...
@@ -146,54 +162,44 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
"the user should activate one (and only one) runtime. "
)
endif
()
# Warning if not coherent options
if
(
CHAMELEON_USE_MPI AND NOT CHAMELEON_SCHED_STARPU
)
message
(
WARNING
"You have activated MPI but CHAMELEON_SCHED_STARPU is OFF.
\n
"
"You should use StarPU Runtime system if you want to benefit from MPI.
\n
"
"Use -DCHAMELEON_SCHED_QUARK=OFF -DCHAMELEON_SCHED_STARPU=ON at cmake
\n
"
"configure to do so."
)
# Use intermediate variable since cmake_dependent_option doesn't have OR conditions
set
(
CHAMELEON_ENABLE_MPI OFF CACHE BOOL
"Tells if MPI might be supported by the runtime"
)
if
(
CHAMELEON_SCHED_PARSEC OR CHAMELEOM_SCHED_STARPU
)
set
(
CHAMELEON_ENABLE_MPI ON
)
endif
()
if
(
CHAMELEON_USE_CUDA AND NOT CHAMELEON_SCHED_STARPU
)
message
(
WARNING
"You have activated CUDA but CHAMELEON_SCHED_STARPU is OFF.
\n
"
"You should use StarPU Runtime system if you want to benefit from GPUs.
\n
"
"Use -DCHAMELEON_SCHED_QUARK=OFF -DCHAMELEON_SCHED_STARPU=ON at cmake
\n
"
"configure to do so."
)
endif
()
if
(
CHAMELEON_USE_MAGMA AND NOT CHAMELEON_SCHED_STARPU
)
message
(
WARNING
"You have activated MAGMA but CHAMELEON_SCHED_STARPU is OFF.
\n
"
"You should use StarPU Runtime system if you want to benefit from GPUs.
\n
"
"Use -DCHAMELEON_SCHED_QUARK=OFF -DCHAMELEON_SCHED_STARPU=ON at cmake
\n
"
"configure to do so."
)
# Use intermediate variable since cmake_dependent_option doesn't have OR conditions
set
(
CHAMELEON_ENABLE_CUDA OFF CACHE BOOL
"Tells if CUDA might be supported by the runtime"
)
if
(
CHAMELEON_SCHED_PARSEC OR CHAMELEOM_SCHED_STARPU
)
set
(
CHAMELEON_ENABLE_CUDA ON
)
endif
()
# Additional options
# ------------------
# Enable the distributed interface (allowed only when StarPU is enabled)
# Enable the distributed interface (allowed only when StarPU
or PaRSEC
is enabled)
# TODO: Default should be changed to ON/OFF when it will be ok
cmake_dependent_option
(
CHAMELEON_USE_MPI
"Enable distributed memory through MPI"
OFF
"CHAMELEON_
SCHED_STARPU
"
OFF
)
if
(
NOT CHAMELEON_USE_MPI
)
message
(
"--
${
BoldGreen
}
CHAMELEON_USE_MPI is set to OFF, turn it ON to use MPI (
only with StarPU
)
${
ColourReset
}
"
)
"CHAMELEON_
ENABLE_MPI
"
OFF
)
if
(
CHAMELEON_ENABLE_MPI AND
NOT CHAMELEON_USE_MPI
)
message
(
"--
${
BoldGreen
}
CHAMELEON_USE_MPI is set to OFF, turn it ON to use MPI (
unsupported by Quark
)
${
ColourReset
}
"
)
endif
()
# Enable Cuda kernels if StarPU (only if StarPU runtime is enabled)
# Enable Cuda kernels if StarPU (only if StarPU
or PaRSEC
runtime is enabled)
# TODO: Default should be changed to ON/OFF when it will be ok
cmake_dependent_option
(
CHAMELEON_USE_CUDA
"Enable CUDA kernels"
OFF
"CHAMELEON_
SCHED_STARPU
"
OFF
)
if
(
NOT CHAMELEON_USE_CUDA
)
message
(
"--
${
BoldGreen
}
CHAMELEON_USE_CUDA is set to OFF, turn it ON to use CUDA (
only with StarPU
)
${
ColourReset
}
"
)
"CHAMELEON_
ENABLE_CUDA
"
OFF
)
if
(
CHAMELEON_ENABLE_CUDA AND
NOT CHAMELEON_USE_CUDA
)
message
(
"--
${
BoldGreen
}
CHAMELEON_USE_CUDA is set to OFF, turn it ON to use CUDA (
unsupported by Quark
)
${
ColourReset
}
"
)
endif
()
# Enable MAGMA advanced kernels if CUDA is enabled
cmake_dependent_option
(
CHAMELEON_USE_MAGMA
"Enable MAGMA Cuda kernels"
OFF
"CHAMELEON_USE_CUDA"
OFF
)
if
(
NOT CHAMELEON_USE_MAGMA
)
if
(
CHAMELEON_USE_CUDA AND
NOT CHAMELEON_USE_MAGMA
)
message
(
"--
${
BoldGreen
}
CHAMELEON_USE_MAGMA is set to OFF, turn it ON to use MAGMA (only with StarPU)
${
ColourReset
}
"
)
endif
()
...
...
@@ -681,8 +687,8 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
Print_Find_Library_Status
(
starpu
${
starpu_lib
}
)
endif
()
endforeach
()
endif
()
endif
()
endif
()
endif
()
else
(
MORSE_VERBOSE_FIND_PACKAGE
)
message
(
WARNING
"StarPU library has not been found and MORSE_VERBOSE_FIND_PACKAGE is set to OFF"
"Try to activate MORSE_VERBOSE_FIND_PACKAGE option (-DMORSE_VERBOSE_FIND_PACKAGE=ON) to get some hints for the detection"
)
...
...
@@ -702,7 +708,89 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
endif
(
CHAMELEON_SCHED_STARPU
)
# try to find quark runtime
if
(
CHAMELEON_SCHED_PARSEC
)
# create list of components in order to make a single call to find_package(starpu...)
set
(
PARSEC_COMPONENT_LIST
"HWLOC"
)
if
(
CHAMELEON_USE_MPI
)
list
(
APPEND PARSEC_COMPONENT_LIST
"MPI"
)
endif
()
if
(
CHAMELEON_USE_CUDA
)
list
(
APPEND PARSEC_COMPONENT_LIST
"CUDA"
)
endif
()
# TODO: Add a CHAMELEON_WITH_PROFILING option that enables Fxt for StarPU, or PAPI for PaRSEC
#if(CHAMELEON_WITH_PROFILING)
# list(APPEND PARSEC_COMPONENT_LIST "PAPI")
#endif()
find_package
(
PARSEC COMPONENTS
${
PARSEC_COMPONENT_LIST
}
)
# Add definition and include_dir if found
if
(
PARSEC_FOUND
)
message
(
"--
${
Blue
}
Add definition CHAMELEON_SCHED_PARSEC"
" - Activate PaRSEC in Chameleon
${
ColourReset
}
"
)
add_definitions
(
-DCHAMELEON_SCHED_PARSEC
)
# TODO: remove that
include_directories
(
${
PARSEC_INCLUDE_DIRS_DEP
}
)
include_directories
(
${
PARSEC_INCLUDE_DIRS
}
/daguepp
)
set
(
CMAKE_REQUIRED_INCLUDES
"
${
PARSEC_INCLUDE_DIRS_DEP
}
"
)
if
(
PARSEC_LINKER_FLAGS
)
list
(
APPEND CMAKE_EXE_LINKER_FLAGS
"
${
PARSEC_LINKER_FLAGS
}
"
)
endif
()
foreach
(
libdir
${
PARSEC_LIBRARY_DIRS_DEP
}
)
list
(
APPEND CMAKE_REQUIRED_FLAGS
"-L
${
libdir
}
"
)
endforeach
()
string
(
REPLACE
";"
" "
CMAKE_REQUIRED_FLAGS
"
${
CMAKE_REQUIRED_FLAGS
}
"
)
set
(
CMAKE_REQUIRED_LIBRARIES
"
${
PARSEC_LIBRARIES_DEP
}
"
)
if
(
HWLOC_FOUND AND HWLOC_LIBRARY_DIRS
)
# the RPATH to be used when installing
list
(
APPEND CMAKE_INSTALL_RPATH
"
${
HWLOC_LIBRARY_DIRS
}
"
)
endif
()
if
(
PARSEC_FOUND AND PARSEC_LIBRARY_DIRS_DEP
)
# the RPATH to be used when installing
list
(
APPEND CMAKE_INSTALL_RPATH
"
${
PARSEC_LIBRARY_DIRS_DEP
}
"
)
endif
()
else
(
PARSEC_FOUND
)
if
(
MORSE_VERBOSE_FIND_PACKAGE
)
if
(
NOT HWLOC_FOUND OR NOT HWLOC_LIBRARIES
)
if
(
NOT HWLOC_hwloc.h_DIRS
)
Print_Find_Header_Status
(
hwloc hwloc.h
)
endif
()
if
(
NOT HWLOC_hwloc_LIBRARY
)
Print_Find_Library_Status
(
hwloc libhwloc
)
endif
()
endif
()
if
(
(
NOT PARSEC_FOUND
)
OR
(
NOT PARSEC_LIBRARIES_DEP
)
)
foreach
(
parsec_hdr
${
PARSEC_hdrs_to_find
}
)
if
(
NOT PARSEC_
${
parsec_hdr
}
_INCLUDE_DIRS
)
Print_Find_Header_Status
(
parsec
${
parsec_hdr
}
)
endif
()
endforeach
()
if
(
PARSEC_VERSION_STRING
)
foreach
(
parsec_lib
${
PARSEC_libs_to_find
}
)
if
(
NOT PARSEC_
${
parsec_lib
}
_LIBRARY
)
Print_Find_Library_Status
(
parsec
${
parsec_lib
}
)
endif
()
endforeach
()
endif
()
endif
()
else
(
MORSE_VERBOSE_FIND_PACKAGE
)
message
(
WARNING
"PaRSEC library has not been found and MORSE_VERBOSE_FIND_PACKAGE is set to OFF"
"Try to activate MORSE_VERBOSE_FIND_PACKAGE option (-DMORSE_VERBOSE_FIND_PACKAGE=ON) to get some hints for the detection"
)
endif
(
MORSE_VERBOSE_FIND_PACKAGE
)
if
(
NOT HWLOC_FOUND OR NOT HWLOC_LIBRARIES
)
message
(
FATAL_ERROR
"hwloc library is required but has not been found"
)
endif
()
if
(
(
NOT PARSEC_FOUND
)
OR
(
NOT PARSEC_LIBRARIES_DEP
)
)
message
(
FATAL_ERROR
"PaRSEC library is required but has not been found"
)
endif
()
endif
(
PARSEC_FOUND
)
endif
(
CHAMELEON_SCHED_PARSEC
)
# try to find quark runtime
if
(
CHAMELEON_SCHED_QUARK
)
find_package
(
QUARK COMPONENTS HWLOC
)
...
...
@@ -773,6 +861,12 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
${
STARPU_SHM_LIBRARIES
}
)
endif
()
elseif
(
CHAMELEON_SCHED_PARSEC
)
list
(
APPEND CHAMELEON_DEP
-lchameleon_parsec
${
PARSEC_LIBRARIES_DEP
}
)
link_directories
(
${
PARSEC_LIBRARY_DIRS_DEP
}
)
elseif
(
CHAMELEON_SCHED_QUARK
)
list
(
APPEND CHAMELEON_DEP
-lchameleon_quark
...
...
compute/pzlange.c
View file @
bf115f19
...
...
@@ -158,10 +158,7 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
}
RUNTIME_sequence_wait
(
morse
,
sequence
);
*
result
=
*
(
double
*
)
VECNORMS_STEP1
->
get_blkaddr
(
VECNORMS_STEP1
,
A
->
myrank
/
A
->
q
,
A
->
myrank
%
A
->
q
);
MORSE_Desc_Destroy
(
&
(
VECNORMS_STEP1
)
);
MORSE_Desc_Destroy
(
&
(
VECNORMS_STEP2
)
);
MORSE_Desc_Destroy
(
&
(
RESULT
)
);
break
;
/*
...
...
@@ -278,10 +275,7 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
}
RUNTIME_sequence_wait
(
morse
,
sequence
);
*
result
=
*
(
double
*
)
VECNORMS_STEP1
->
get_blkaddr
(
VECNORMS_STEP1
,
A
->
myrank
/
A
->
q
,
A
->
myrank
%
A
->
q
);
MORSE_Desc_Destroy
(
&
(
VECNORMS_STEP1
)
);
MORSE_Desc_Destroy
(
&
(
VECNORMS_STEP2
)
);
MORSE_Desc_Destroy
(
&
(
RESULT
)
);
break
;
/*
...
...
@@ -349,9 +343,6 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
RUNTIME_sequence_wait
(
morse
,
sequence
);
*
result
=
*
(
double
*
)
VECNORMS_STEP1
->
get_blkaddr
(
VECNORMS_STEP1
,
A
->
myrank
/
A
->
q
,
A
->
myrank
%
A
->
q
);
MORSE_Desc_Destroy
(
&
(
VECNORMS_STEP1
)
);
MORSE_Desc_Destroy
(
&
(
RESULT
)
);
break
;
/*
...
...
@@ -413,10 +404,12 @@ void morse_pzlange(MORSE_enum norm, MORSE_desc_t *A, double *result,
}
RUNTIME_sequence_wait
(
morse
,
sequence
);
*
result
=
*
(
double
*
)
VECNORMS_STEP1
->
get_blkaddr
(
VECNORMS_STEP1
,
A
->
myrank
/
A
->
q
,
A
->
myrank
%
A
->
q
);
MORSE_Desc_Destroy
(
&
(
VECNORMS_STEP1
)
);
MORSE_Desc_Destroy
(
&
(
RESULT
)
);
}
*
result
=
*
(
double
*
)
VECNORMS_STEP1
->
get_blkaddr
(
VECNORMS_STEP1
,
A
->
myrank
/
A
->
q
,
A
->
myrank
%
A
->
q
);
MORSE_Desc_Destroy
(
&
(
VECNORMS_STEP1
)
);
MORSE_Desc_Destroy
(
&
(
RESULT
)
);
RUNTIME_options_ws_free
(
&
options
);
RUNTIME_options_finalize
(
&
options
,
morse
);
MORSE_TASK_dataflush_all
();
...
...
compute/pzplgsy.c
View file @
bf115f19
...
...
@@ -50,11 +50,11 @@ void morse_pzplgsy( MORSE_Complex64_t bump, MORSE_desc_t *A, unsigned long long
for
(
m
=
0
;
m
<
A
->
mt
;
m
++
)
{
tempmm
=
m
==
A
->
mt
-
1
?
A
->
m
-
m
*
A
->
mb
:
A
->
mb
;
ldam
=
BLKLDD
(
A
,
m
);
for
(
n
=
0
;
n
<
A
->
nt
;
n
++
)
{
tempnn
=
n
==
A
->
nt
-
1
?
A
->
n
-
n
*
A
->
nb
:
A
->
nb
;
MORSE_TASK_zplgsy
(
MORSE_TASK_zplgsy
(
&
options
,
bump
,
tempmm
,
tempnn
,
A
(
m
,
n
),
ldam
,
A
->
m
,
m
*
A
->
mb
,
n
*
A
->
nb
,
seed
);
...
...
compute/pzplrnt.c
View file @
bf115f19
...
...
@@ -54,7 +54,7 @@ void morse_pzplrnt( MORSE_desc_t *A, unsigned long long int seed,
for
(
n
=
0
;
n
<
A
->
nt
;
n
++
)
{
tempnn
=
n
==
A
->
nt
-
1
?
A
->
n
-
n
*
A
->
nb
:
A
->
nb
;
MORSE_TASK_zplrnt
(
MORSE_TASK_zplrnt
(
&
options
,
tempmm
,
tempnn
,
A
(
m
,
n
),
ldam
,
A
->
m
,
m
*
A
->
mb
,
n
*
A
->
nb
,
seed
);
...
...
compute/pztile.c
View file @
bf115f19
...
...
@@ -77,7 +77,7 @@ void morse_pzlapack_to_tile(MORSE_Complex64_t *Af77, int lda, MORSE_desc_t *dA,
}
}
RUNTIME_
barrier
(
mors
e
);
RUNTIME_
sequence_wait
(
morse
,
sequenc
e
);
RUNTIME_options_finalize
(
&
options
,
morse
);
MORSE_TASK_dataflush_all
();
RUNTIME_desc_getoncpu
(
&
dB
);
...
...
@@ -133,7 +133,7 @@ void morse_pztile_to_lapack(MORSE_desc_t *dA, MORSE_Complex64_t *Af77, int lda,
}
}
RUNTIME_
barrier
(
mors
e
);
RUNTIME_
sequence_wait
(
morse
,
sequenc
e
);
RUNTIME_options_finalize
(
&
options
,
morse
);
MORSE_TASK_dataflush_all
();
RUNTIME_desc_getoncpu
(
&
dB
);
...
...
@@ -174,7 +174,7 @@ void morse_pztile_zero(MORSE_desc_t *dA, MORSE_sequence_t *sequence, MORSE_reque
}
}
RUNTIME_
barrier
(
mors
e
);
RUNTIME_
sequence_wait
(
morse
,
sequenc
e
);
RUNTIME_options_finalize
(
&
options
,
morse
);
MORSE_TASK_dataflush_all
();
}
compute/zplghe.c
View file @
bf115f19
...
...
@@ -37,7 +37,7 @@
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] N
...
...
@@ -104,17 +104,16 @@ int MORSE_zplghe( double bump, int N,
morse_error
(
"MORSE_zplghe"
,
"morse_tune() failed"
);
return
status
;
}
/* Set NT */
NB
=
MORSE_NB
;
morse_sequence_create
(
morse
,
&
sequence
);
morse_zdesc_alloc
(
descA
,
NB
,
NB
,
LDA
,
N
,
0
,
0
,
N
,
N
,
morse_desc_mat_free
(
&
descA
));
/* Call the tile interface */
MORSE_zplghe_Tile_Async
(
bump
,
&
descA
,
seed
,
sequence
,
&
request
);
morse_sequence_wait
(
morse
,
sequence
);
morse_zooptile2lap
(
descA
,
A
,
NB
,
NB
,
LDA
,
N
,
sequence
,
&
request
);
morse_sequence_wait
(
morse
,
sequence
);
morse_desc_mat_free
(
&
descA
);
...
...
@@ -138,7 +137,7 @@ int MORSE_zplghe( double bump, int N,
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] A
...
...
compute/zplgsy.c
View file @
bf115f19
...
...
@@ -37,7 +37,7 @@
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] N
...
...
@@ -104,17 +104,16 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
morse_error
(
"MORSE_zplgsy"
,
"morse_tune() failed"
);
return
status
;
}
/* Set NT */
NB
=
MORSE_NB
;
morse_sequence_create
(
morse
,
&
sequence
);
morse_zdesc_alloc
(
descA
,
NB
,
NB
,
LDA
,
N
,
0
,
0
,
N
,
N
,
morse_desc_mat_free
(
&
descA
));
/* Call the tile interface */
MORSE_zplgsy_Tile_Async
(
bump
,
&
descA
,
seed
,
sequence
,
&
request
);
morse_sequence_wait
(
morse
,
sequence
);
morse_zooptile2lap
(
descA
,
A
,
NB
,
NB
,
LDA
,
N
,
sequence
,
&
request
);
morse_sequence_wait
(
morse
,
sequence
);
morse_desc_mat_free
(
&
descA
);
...
...
@@ -138,7 +137,7 @@ int MORSE_zplgsy( MORSE_Complex64_t bump, int N,
*******************************************************************************
*
* @param[in] bump
* The value to add to the diagonal to be sure
* The value to add to the diagonal to be sure
* to have a positive definite matrix.
*
* @param[in] A
...
...
compute/zplrnt.c
View file @
bf115f19
...
...
@@ -107,7 +107,7 @@ int MORSE_zplrnt( int M, int N,
morse_error
(
"MORSE_zplrnt"
,
"morse_tune() failed"
);
return
status
;
}
/* Set NT */
NB
=
MORSE_NB
;
morse_sequence_create
(
morse
,
&
sequence
);
...
...
@@ -116,8 +116,7 @@ int MORSE_zplrnt( int M, int N,
/* Call the tile interface */
MORSE_zplrnt_Tile_Async
(
&
descA
,
seed
,
sequence
,
&
request
);
morse_sequence_wait
(
morse
,
sequence
);
morse_zooptile2lap
(
descA
,
A
,
NB
,
NB
,
LDA
,
N
,
sequence
,
&
request
);
morse_zooptile2lap
(
descA
,
A
,
NB
,
NB
,
LDA
,
N
,
sequence
,
&
request
);
morse_sequence_wait
(
morse
,
sequence
);
morse_desc_mat_free
(
&
descA
);
...
...
@@ -213,7 +212,7 @@ int MORSE_zplrnt_Tile( MORSE_desc_t *A,
******************************************************************************/
int
MORSE_zplrnt_Tile_Async
(
MORSE_desc_t
*
A
,
unsigned
long
long
int
seed
,
MORSE_sequence_t
*
sequence
,
MORSE_sequence_t
*
sequence
,
MORSE_request_t
*
request
)
{
MORSE_context_t
*
morse
;
...
...
compute/ztile.c
View file @
bf115f19
...
...
@@ -82,7 +82,7 @@ int MORSE_zLapack_to_Tile(MORSE_Complex64_t *Af77, int LDA, MORSE_desc_t *A)
morse_pzlapack_to_tile
(
Af77
,
LDA
,
A
,
sequence
,
&
request
);
RUNTIME_
barrier
(
mors
e
);
RUNTIME_
sequence_wait
(
morse
,
sequenc
e
);
RUNTIME_desc_getoncpu
(
A
);
status
=
sequence
->
status
;
...
...
@@ -207,7 +207,7 @@ int MORSE_zTile_to_Lapack(MORSE_desc_t *A, MORSE_Complex64_t *Af77, int LDA)
morse_sequence_create
(
morse
,
&
sequence
);
morse_pztile_to_lapack
(
A
,
Af77
,
LDA
,
sequence
,
&
request
);
RUNTIME_
barrier
(
mors
e
);
RUNTIME_
sequence_wait
(
morse
,
sequenc
e
);
RUNTIME_desc_getoncpu
(
A
);
status
=
sequence
->
status
;
morse_sequence_destroy
(
morse
,
sequence
);
...
...
control/descriptor.c
View file @
bf115f19
...
...
@@ -52,7 +52,7 @@ MORSE_desc_t morse_desc_init(MORSE_enum dtyp, int mb, int nb, int bsiz,
// Matrix properties
desc
.
dtyp
=
dtyp
;
// seems useless
//
desc.styp = MorseCCRB;
desc
.
styp
=
MorseCCRB
;
desc
.
mb
=
mb
;
desc
.
nb
=
nb
;
desc
.
bsiz
=
bsiz
;
...
...
@@ -137,7 +137,7 @@ MORSE_desc_t morse_desc_init_diag(MORSE_enum dtyp, int mb, int nb, int bsiz,
// Matrix properties
desc
.
dtyp
=
dtyp
;
// seems useless
//
desc.styp = MorseCCRB;
desc
.
styp
=
MorseCCRB
;
desc
.
mb
=
mb
;
desc
.
nb
=
nb
;
desc
.
bsiz
=
bsiz
;
...
...
@@ -225,7 +225,7 @@ MORSE_desc_t morse_desc_init_user(MORSE_enum dtyp, int mb, int nb, int bsiz,
// Matrix properties
desc
.
dtyp
=
dtyp
;
// seems useless
//desc.styp = MorseCCRB
desc
.
styp
=
MorseCCRB
;
desc
.
mb
=
mb
;
desc
.
nb
=
nb
;
desc
.
bsiz
=
bsiz
;
...
...
example/basic_zposv/CMakeLists.txt
View file @
bf115f19
...
...
@@ -59,6 +59,12 @@ if(CHAMELEON_SCHED_STARPU)
)
endif
()
link_directories
(
${
STARPU_LIBRARY_DIRS
}
)
elseif
(
CHAMELEON_SCHED_PARSEC
)
list
(
APPEND libs_for_examples
chameleon_parsec
${
PARSEC_LIBRARIES_DEP
}
)
link_directories
(
${
PARSEC_LIBRARY_DIRS_DEP
}
)
elseif
(
CHAMELEON_SCHED_QUARK
)
list
(
APPEND libs_for_examples
chameleon_quark
...
...
example/basic_zposv/CTestLists.cmake
View file @
bf115f19
...
...
@@ -2,7 +2,7 @@
# Check Example basic_zposv
#
set
(
TESTLIST
set
(
TESTLIST
posv_morse_functions
posv_users_functions
)
...
...
example/lapack_to_morse/CMakeLists.txt
View file @
bf115f19
...
...
@@ -54,6 +54,12 @@ if(CHAMELEON_SCHED_STARPU)
)
endif
()
link_directories
(
${
STARPU_LIBRARY_DIRS
}
)
elseif
(
CHAMELEON_SCHED_PARSEC
)
list
(
APPEND libs_for_ltm
chameleon_parsec
${
PARSEC_LIBRARIES_DEP
}
)
link_directories
(
${
PARSEC_LIBRARY_DIRS_DEP
}
)
elseif
(
CHAMELEON_SCHED_QUARK
)
list
(
APPEND libs_for_ltm
chameleon_quark
...
...
include/morse_struct.h
View file @
bf115f19
...
...
@@ -36,6 +36,7 @@
* - StarPU
**/
typedef
enum
morse_sched_e
{
RUNTIME_SCHED_PARSEC
,
RUNTIME_SCHED_QUARK
,
RUNTIME_SCHED_STARPU
,
}
MORSE_sched_t
;
...
...
runtime/CMakeLists.txt
View file @
bf115f19
...
...
@@ -30,6 +30,8 @@
# ----------------------------
if
(
CHAMELEON_SCHED_QUARK
)
add_subdirectory
(
quark
)
elseif
(
CHAMELEON_SCHED_PARSEC
)
add_subdirectory
(
parsec
)
elseif
(
CHAMELEON_SCHED_STARPU
)
add_subdirectory
(
starpu
)
endif
()
...
...
runtime/parsec/CMakeLists.txt
0 → 100644
View file @
bf115f19
###
#
# @copyright (c) 2009-2015 The University of Tennessee and The University
# of Tennessee Research Foundation.
# All rights reserved.
# @copyright (c) 2012-2015 Inria. All rights reserved.
# @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
#
###
#
# @file CMakeLists.txt
#
# @project CHAMELEON
# CHAMELEON 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.
#
# @version 0.9.0
# @author Cedric Castagnede
# @author Emmanuel Agullo
# @author Mathieu Faverge
# @author Florent Pruvost
# @date 13-07-2012
#
###
# check if magma_dgetrf_incpiv_gpu is accessible in libmagma and activate it in chameleon
if
(
CBLAS_FOUND AND LAPACKE_FOUND AND LAPACK_FOUND AND CUDA_FOUND AND CUDA_CUBLAS_LIBRARIES AND MAGMA_FOUND
)
set
(
CMAKE_REQUIRED_LIBRARIES
"
${
CBLAS_LIBRARIES
}
;
${
LAPACKE_LIBRARIES
}
;
${
LAPACK_SEQ_LIBRARIES
}
;
${
CUDA_LIBRARIES
}
;
${
CUDA_CUBLAS_LIBRARIES
}
;
${
MAGMA_LIBRARIES
}
;
${
COREBLAS_LIBRARIES
}
"
)
unset
(
MAGMA_DGETRF_INCPIV_GPU_FOUND CACHE
)
check_function_exists
(
magma_dgetrf_incpiv_gpu MAGMA_DGETRF_INCPIV_GPU_FOUND
)
if
(
MAGMA_DGETRF_INCPIV_GPU_FOUND
)
message
(
STATUS
"Set HAVE_MAGMA_GETRF_INCPIV_GPU"
)
add_definitions
(
-DHAVE_MAGMA_GETRF_INCPIV_GPU
)
endif
()
endif
()