mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
gnu: Add scotch package.
* gnu/packages/maths.scm (scotch): New variable. * gnu/packages/patches/scotch-test-threading.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it.
This commit is contained in:
parent
c711f07c3e
commit
f8ed036a31
3 changed files with 217 additions and 0 deletions
|
@ -339,6 +339,7 @@ dist_patch_DATA = \
|
|||
gnu/packages/patches/readline-link-ncurses.patch \
|
||||
gnu/packages/patches/ripperx-libm.patch \
|
||||
gnu/packages/patches/scheme48-tests.patch \
|
||||
gnu/packages/patches/scotch-test-threading.patch \
|
||||
gnu/packages/patches/slim-session.patch \
|
||||
gnu/packages/patches/slim-config.patch \
|
||||
gnu/packages/patches/slim-sigusr1.patch \
|
||||
|
|
|
@ -589,3 +589,80 @@ (define-public superlu
|
|||
triangular system solves through forward and back substitution. The library
|
||||
also provides threshold-based ILU factorization preconditioners.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public scotch
|
||||
(package
|
||||
(name "scotch")
|
||||
(version "6.0.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gforge.inria.fr/frs/download.php/31831/"
|
||||
"scotch_" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0yfqf9lk7chb3h42777x42x4adx0v3n0b41q0cdqrdmscp4iczp5"))
|
||||
(patches (list (search-patch "scotch-test-threading.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("zlib" ,zlib)
|
||||
("flex" ,flex)
|
||||
("bison" ,bison)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(alist-cons-after
|
||||
'unpack 'chdir-to-src
|
||||
(lambda _ (chdir "src"))
|
||||
(alist-replace
|
||||
'configure
|
||||
(lambda _
|
||||
(call-with-output-file "Makefile.inc"
|
||||
(lambda (port)
|
||||
(format port "
|
||||
EXE =
|
||||
LIB = .a
|
||||
OBJ = .o
|
||||
MAKE = make
|
||||
AR = ar
|
||||
ARFLAGS = -ruv
|
||||
CCS = gcc
|
||||
CCP = mpicc
|
||||
CCD = gcc
|
||||
CPPFLAGS =~{ -D~a~}
|
||||
CFLAGS = -O2 -g $(CPPFLAGS)
|
||||
LDFLAGS = -lz -lm -lrt -lpthread
|
||||
CP = cp
|
||||
LEX = flex -Pscotchyy -olex.yy.c
|
||||
LN = ln
|
||||
MKDIR = mkdir
|
||||
MV = mv
|
||||
RANLIB = ranlib
|
||||
YACC = bison -pscotchyy -y -b y
|
||||
"
|
||||
'("COMMON_FILE_COMPRESS_GZ"
|
||||
"COMMON_PTHREAD"
|
||||
"COMMON_RANDOM_FIXED_SEED"
|
||||
;; TODO: Define once our MPI supports
|
||||
;; MPI_THREAD_MULTIPLE
|
||||
;; "SCOTCH_PTHREAD"
|
||||
;; "SCOTCH_PTHREAD_NUMBER=2"
|
||||
"restrict=__restrict")))))
|
||||
(alist-replace
|
||||
'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(mkdir out)
|
||||
(zero? (system* "make"
|
||||
(string-append "prefix=" out)
|
||||
"install"))))
|
||||
%standard-phases)))))
|
||||
(home-page "http://www.labri.fr/perso/pelegrin/scotch/")
|
||||
(synopsis "Programs and libraries for graph algorithms")
|
||||
(description "SCOTCH is a set of programs and libraries which implement
|
||||
the static mapping and sparse matrix reordering algorithms developed within
|
||||
the SCOTCH project. Its purpose is to apply graph theory, with a divide and
|
||||
conquer approach, to scientific computing problems such as graph and mesh
|
||||
partitioning, static mapping, and sparse matrix ordering, in application
|
||||
domains ranging from structural mechanics to operating systems or
|
||||
bio-chemistry.")
|
||||
;; See LICENSE_en.txt
|
||||
(license license:cecill-c)))
|
||||
|
|
139
gnu/packages/patches/scotch-test-threading.patch
Normal file
139
gnu/packages/patches/scotch-test-threading.patch
Normal file
|
@ -0,0 +1,139 @@
|
|||
* These tests assume threading support, even when the library is compiled
|
||||
without it. Protect these checks.
|
||||
|
||||
* Tests should not require keyboard interaction.
|
||||
|
||||
--- a/src/check/test_scotch_dgraph_band.c 2012-09-27 10:46:42.000000000 -0500
|
||||
+++ b/src/check/test_scotch_dgraph_band.c 2014-05-13 14:36:07.479270243 -0500
|
||||
@@ -99,10 +99,12 @@
|
||||
errorPrint ("main: Cannot initialize (1)");
|
||||
exit (1);
|
||||
}
|
||||
+#ifdef SCOTCH_PTHREAD
|
||||
if (thrdlvlreqval > thrdlvlproval) {
|
||||
errorPrint ("main: Cannot initialize (2)");
|
||||
exit (1);
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (argc != 2) {
|
||||
errorPrint ("main: invalid number of parameters");
|
||||
@@ -115,12 +117,14 @@
|
||||
|
||||
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
|
||||
|
||||
+#ifdef SCOTCH_DEBUG_CHECK2
|
||||
if (proclocnum == 0) { /* Synchronize on keybord input */
|
||||
char c;
|
||||
|
||||
printf ("Waiting for key press...\n");
|
||||
scanf ("%c", &c);
|
||||
}
|
||||
+#endif /* SCOTCH_DEBUG_CHECK2 */
|
||||
|
||||
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
|
||||
errorPrint ("main: cannot communicate");
|
||||
--- a/src/check/test_scotch_dgraph_grow.c 2012-11-30 12:19:33.000000000 -0600
|
||||
+++ b/src/check/test_scotch_dgraph_grow.c 2014-05-13 14:35:31.307269303 -0500
|
||||
@@ -103,10 +103,12 @@
|
||||
errorPrint ("main: Cannot initialize (1)");
|
||||
exit (1);
|
||||
}
|
||||
+#ifdef SCOTCH_PTHREAD
|
||||
if (thrdlvlreqval > thrdlvlproval) {
|
||||
errorPrint ("main: Cannot initialize (2)");
|
||||
exit (1);
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (argc != 2) {
|
||||
errorPrint ("main: invalid number of parameters");
|
||||
@@ -119,12 +121,14 @@
|
||||
|
||||
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
|
||||
|
||||
+#ifdef SCOTCH_DEBUG_CHECK2
|
||||
if (proclocnum == 0) { /* Synchronize on keybord input */
|
||||
char c;
|
||||
|
||||
printf ("Waiting for key press...\n");
|
||||
scanf ("%c", &c);
|
||||
}
|
||||
+#endif /* SCOTCH_DEBUG_CHECK2 */
|
||||
|
||||
if (MPI_Barrier (proccomm) != MPI_SUCCESS) { /* Synchronize for debug */
|
||||
errorPrint ("main: cannot communicate");
|
||||
--- a/src/check/test_scotch_dgraph_redist.c 2012-09-26 11:42:27.000000000 -0500
|
||||
+++ b/src/check/test_scotch_dgraph_redist.c 2014-05-13 14:34:30.323267722 -0500
|
||||
@@ -98,10 +98,12 @@
|
||||
errorPrint ("main: Cannot initialize (1)");
|
||||
exit (1);
|
||||
}
|
||||
+#ifdef SCOTCH_PTHREAD
|
||||
if (thrdlvlreqval > thrdlvlproval) {
|
||||
errorPrint ("main: Cannot initialize (2)");
|
||||
exit (1);
|
||||
}
|
||||
+#endif
|
||||
|
||||
if (argc != 2) {
|
||||
errorPrint ("main: invalid number of parameters");
|
||||
@@ -114,7 +116,6 @@
|
||||
|
||||
fprintf (stderr, "Proc %2d of %2d, pid %d\n", proclocnum, procglbnbr, getpid ());
|
||||
|
||||
-#define SCOTCH_DEBUG_CHECK2
|
||||
#ifdef SCOTCH_DEBUG_CHECK2
|
||||
if (proclocnum == 0) { /* Synchronize on keybord input */
|
||||
char c;
|
||||
--- /tmp/nix-build-scotch-6.0.0.drv-9/scotch_6.0.0/src/check/test_common_thread.c 2012-11-30 11:05:23.000000000 -0600
|
||||
+++ scotch_6.0.0/src/check/test_common_thread.c 2014-05-13 17:26:27.159535244 -0500
|
||||
@@ -90,7 +90,7 @@
|
||||
/* */
|
||||
/*************************/
|
||||
|
||||
-#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
|
||||
+#ifdef SCOTCH_PTHREAD
|
||||
|
||||
static
|
||||
void
|
||||
@@ -161,7 +161,7 @@
|
||||
return (o);
|
||||
}
|
||||
|
||||
-#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
|
||||
+#endif /* SCOTCH_PTHREAD */
|
||||
|
||||
/*********************/
|
||||
/* */
|
||||
@@ -175,14 +175,14 @@
|
||||
char * argv[])
|
||||
{
|
||||
TestThreadGroup groudat;
|
||||
-#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
|
||||
+#ifdef SCOTCH_PTHREAD
|
||||
TestThread * restrict thrdtab;
|
||||
int thrdnbr;
|
||||
-#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
|
||||
+#endif /* SCOTCH_PTHREAD */
|
||||
|
||||
SCOTCH_errorProg (argv[0]);
|
||||
|
||||
-#if ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD))
|
||||
+#ifdef SCOTCH_PTHREAD
|
||||
thrdnbr = SCOTCH_PTHREAD_NUMBER;
|
||||
|
||||
groudat.redusum = COMPVAL (thrdnbr);
|
||||
@@ -197,9 +197,9 @@
|
||||
errorPrint ("main: cannot launch or run threads");
|
||||
return (1);
|
||||
}
|
||||
-#else /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
|
||||
- printf ("Scotch not compiled with either COMMON_PTHREAD or SCOTCH_PTHREAD\n");
|
||||
-#endif /* ((defined COMMON_PTHREAD) || (defined SCOTCH_PTHREAD)) */
|
||||
+#else /* not SCOTCH_PTHREAD */
|
||||
+ printf ("Scotch not compiled with SCOTCH_PTHREAD\n");
|
||||
+#endif /* not SCOTCH_PTHREAD */
|
||||
|
||||
return (0);
|
||||
}
|
Loading…
Reference in a new issue