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
|
@ -339,6 +339,7 @@ dist_patch_DATA = \
|
||||||
gnu/packages/patches/readline-link-ncurses.patch \
|
gnu/packages/patches/readline-link-ncurses.patch \
|
||||||
gnu/packages/patches/ripperx-libm.patch \
|
gnu/packages/patches/ripperx-libm.patch \
|
||||||
gnu/packages/patches/scheme48-tests.patch \
|
gnu/packages/patches/scheme48-tests.patch \
|
||||||
|
gnu/packages/patches/scotch-test-threading.patch \
|
||||||
gnu/packages/patches/slim-session.patch \
|
gnu/packages/patches/slim-session.patch \
|
||||||
gnu/packages/patches/slim-config.patch \
|
gnu/packages/patches/slim-config.patch \
|
||||||
gnu/packages/patches/slim-sigusr1.patch \
|
gnu/packages/patches/slim-sigusr1.patch \
|
||||||
|
|
|
@ -589,3 +589,80 @@ library routines perform an LU decomposition with partial pivoting and
|
||||||
triangular system solves through forward and back substitution. The library
|
triangular system solves through forward and back substitution. The library
|
||||||
also provides threshold-based ILU factorization preconditioners.")
|
also provides threshold-based ILU factorization preconditioners.")
|
||||||
(license license:bsd-3)))
|
(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)))
|
||||||
|
|
|
@ -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 New Issue