Commit 4951edef authored by MARAIT Gilles's avatar MARAIT Gilles
Browse files

Add Paddle, Fabulous, Pastix32 and try to use them for MaPHyS

parent 047ea50c
......@@ -223,6 +223,7 @@ area (CPUs-GPUs, distributed nodes).")
(commit version)
;; We need the submodule in 'cmake_modules/morse'.
(recursive? #t)))
(patches (search-patches "inria/patches/patch_maphys.diff"))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
......@@ -231,14 +232,18 @@ area (CPUs-GPUs, distributed nodes).")
(arguments
'(#:configure-flags '("-DMAPHYS_BUILD_TESTS=ON"
"-DMAPHYS_SDS_MUMPS=ON"
"-DMAPHYS_SDS_PASTIX=ON")
"-DMAPHYS_SDS_PASTIX=ON"
;;"-DCMAKE_EXE_LINKER_FLAGS=-lstdc++" ;;?
;;"-DMAPHYS_ITE_FABULOUS=ON"
"-DMAPHYS_ORDERING_PADDLE=ON"
)
#:phases (modify-phases %standard-phases
(add-before 'check 'prepare-test-environment
(lambda _
;; Allow tests with more MPI processes than available CPU cores,
;; which is not allowed by default by OpenMPI
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "1"))))))
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "1") #t)))))
(inputs `(("hwloc" ,hwloc "lib")
("openmpi" ,openmpi)
......@@ -246,9 +251,11 @@ area (CPUs-GPUs, distributed nodes).")
("scalapack" ,scalapack)
("openblas" ,openblas)
("lapack" ,lapack)
("scotch" ,pt-scotch)
("scotch" ,pt-scotch32)
("mumps" ,mumps-openmpi)
("pastix" ,pastix)
("pastix" ,pastix32)
;;("fabulous" ,fabulous)
("paddle", paddle)
("metis" ,metis)))
(native-inputs `(("gforgran" ,gfortran)
("pkg-config" ,pkg-config)))
......@@ -268,6 +275,84 @@ blocks). This enables it to exploit a large number of processors with a
moderate number of blocks which ensures a reasonable convergence behavior.")
(license license:cecill-c)))
(define-public paddle
(package
(name "paddle")
(version "0.3.3")
(home-page "https://gitlab.inria.fr/solverstack/paddle")
(source (origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit version)
;; We need the submodule in 'cmake_modules/morse'.
(recursive? #t)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"0r93vxl1yr2kppddqmp8qw0d4i5vww7vdrljpgv02z669x085mm6"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"
"-DPADDLE_BUILD_TESTS=ON"
"-DPADDLE_ORDERING_PARMETIS=OFF")
#:phases (modify-phases %standard-phases
(add-before 'configure 'change-directory
(lambda _ (chdir "src") #t))
(add-before 'check 'prepare-test-environment
(lambda _
;; Allow tests with more MPI processes than available CPU cores,
;; which is not allowed by default by OpenMPI
(setenv "OMPI_MCA_rmaps_base_oversubscribe" "1") #t)))))
(inputs `(("openmpi" ,openmpi)
("ssh" ,openssh)
("scotch" ,pt-scotch32)))
(native-inputs `(("gforgran" ,gfortran)
("pkg-config" ,pkg-config)))
(synopsis "Parallel Algebraic Domain Decomposition for Linear systEms")
(description
"This software’s goal is to propose a parallel
algebraic strategy to decompose a sparse linear system Ax=b, enabling
its resolution by a domain decomposition solver. Up to now, Paddle is
implemented for the MaPHyS linear solver.")
(license license:cecill-c)))
(define-public fabulous
(package
(name "fabulous")
(version "1.0")
(home-page "https://gitlab.inria.fr/solverstack/fabulous")
(source (origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit "4a63ab6a357048c96e50954663c54fb1649469a2")
;; We need the submodule in 'cmake_modules/morse'.
(recursive? #t)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1q84a2nnzqvw4gf67rjg9mmy1qfrjpgsz9ffrpnq9j6jyqh9f6ns"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags '("-DFABULOUS_BUILD_C_API=ON"
"-DFABULOUS_BUILD_Fortran_API=ON"
"-DCMAKE_EXE_LINKER_FLAGS=-lstdc++"
"-DFABULOUS_LAPACKE_NANCHECK=OFF"
"-DFABULOUS_USE_CHAMELEON=OFF"
"-DBUILD_SHARED_LIBS=ON"
"-DFABULOUS_BUILD_EXAMPLES=ON"
"-DFABULOUS_BUILD_TESTS=ON")
#:tests? #f))
(inputs `(("openblas" ,openblas)
("lapack" ,lapack)))
(native-inputs `(("gforgran" ,gfortran)
("pkg-config" ,pkg-config)))
(synopsis "Fast Accurate Block Linear krylOv Solver")
(description
"Library implementing Block-GMres with Inexact Breakdown and Deflated Restarting")
(license license:cecill-c)))
(define-public maphys++
(package
(name "maphys++")
......
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 194334c..f6cd151 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -263,6 +263,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
if (PASTIX_INCLUDE_DIRS)
include_directories( ${PASTIX_INCLUDE_DIRS} )
+ message(STATUS "PASTIX include directories found: ${PASTIX_LIBRARY_DIRS}")
endif()
if (PASTIX_LIBRARY_DIRS)
list(REMOVE_DUPLICATES PASTIX_LIBRARY_DIRS)
@@ -423,11 +424,11 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
# MaPHyS depends on Paddle
#----------------------------
if (MAPHYS_ORDERING_PADDLE)
- if (NOT PADDLE_LIBRARIES)
- message(FATAL_ERROR "Please specify PADDLE_LIBRARIES")
- endif()
- if (NOT PADDLE_INCLUDE_DIRS)
- message(FATAL_ERROR "Please specify PADDLE_INCLUDE_DIRS")
+ if ((NOT PADDLE_LIBRARIES) OR (NOT PADDLE_INCLUDE_DIRS))
+ if(PKG_CONFIG_FOUND AND PKG_CONFIG_EXECUTABLE)
+ message(STATUS "Looking for PADDLE - found using PkgConfig")
+ pkg_search_module(PADDLE paddle)
+ endif()
endif()
add_definitions(-DHAVE_LIBPADDLE)
if (PADDLE_INCLUDE_DIRS)
@@ -436,15 +437,12 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/")
endforeach()
endif()
if (PADDLE_LIBRARIES)
-
find_package(PTSCOTCH REQUIRED)
-
if(NOT PTSCOTCH_FOUND)
message(FATAL_ERROR "PTSCOTCH is required by PADDLE but was not found. "
"Please provide a PTSCOTCH library in your environment or "
"configure with -DMAPHYS_ORDERING_PADDLE=OFF. ")
endif()
-
list(REMOVE_DUPLICATES PADDLE_LIBRARIES)
list(APPEND MAPHYS_EXTRA_LIBRARIES ${PADDLE_LIBRARIES} ${PTSCOTCH_LIBRARIES})
clean_liblist(PADDLE_LIBRARIES MAPHYS_EXTRA_LINK_FLAGS)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment