Merge pull request #128015 from cburstedde/package-p4est-sc

This commit is contained in:
Sandro 2021-06-30 03:31:41 +02:00 committed by GitHub
commit 458c985073
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 171 additions and 0 deletions

View File

@ -1701,6 +1701,18 @@
githubId = 3471749;
name = "Claudio Bley";
};
cburstedde = {
email = "burstedde@ins.uni-bonn.de";
github = "cburstedde";
githubId = 109908;
name = "Carsten Burstedde";
keys = [
{
longkeyid = "rsa2048/0x0704CD9E550A6BCD";
fingerprint = "1127 A432 6524 BF02 737B 544E 0704 CD9E 550A 6BCD";
}
];
};
cdepillabout = {
email = "cdep.illabout@gmail.com";
github = "cdepillabout";

View File

@ -0,0 +1,62 @@
{ lib, stdenv, fetchFromGitHub
, autoreconfHook, pkg-config
, p4est-sc-debugEnable ? true, p4est-sc-mpiSupport ? true
, mpi, openmpi, openssh, zlib
}:
let
dbg = if debugEnable then "-dbg" else "";
debugEnable = p4est-sc-debugEnable;
mpiSupport = p4est-sc-mpiSupport;
in
stdenv.mkDerivation {
pname = "p4est-sc${dbg}";
version = "unstable-2021-06-14";
# fetch an untagged snapshot of the prev3-develop branch
src = fetchFromGitHub {
owner = "cburstedde";
repo = "libsc";
rev = "1ae814e3fb1cc5456652e0d77550386842cb9bfb";
sha256 = "14vm0b162jh8399pgpsikbwq4z5lkrw9vfzy3drqykw09n6nc53z";
};
nativeBuildInputs = [ autoreconfHook pkg-config ];
propagatedBuildInputs = [ zlib ]
++ lib.optional mpiSupport mpi
++ lib.optional (mpiSupport && mpi == openmpi) openssh
;
inherit debugEnable mpiSupport;
postPatch = ''
echo "dist_scaclocal_DATA += config/sc_v4l2.m4" >> Makefile.am
'';
preConfigure = ''
echo "2.8.0" > .tarball-version
${if mpiSupport then "unset CC" else ""}
'';
configureFlags = lib.optional debugEnable "--enable-debug"
++ lib.optional mpiSupport "--enable-mpi"
;
makeFlags = [ "V=0" ];
dontDisableStatic = true;
enableParallelBuilding = true;
doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
meta = {
branch = "prev3-develop";
description = "Support for parallel scientific applications";
longDescription = ''
The SC library provides support for parallel scientific applications.
Its main purpose is to support the p4est software library, hence
this package is called p4est-sc, but it works standalone, too.
'';
homepage = "https://www.p4est.org/";
downloadPage = "https://github.com/cburstedde/libsc.git";
license = lib.licenses.lgpl21Plus;
maintainers = [ lib.maintainers.cburstedde ];
};
}

View File

@ -0,0 +1,59 @@
{ lib, stdenv, fetchFromGitHub
, autoreconfHook, pkg-config
, p4est-withMetis ? true, metis
, p4est-sc
}:
let
inherit (p4est-sc) debugEnable mpiSupport;
dbg = if debugEnable then "-dbg" else "";
withMetis = p4est-withMetis;
in
stdenv.mkDerivation {
pname = "p4est${dbg}";
version = "unstable-2021-06-22";
# fetch an untagged snapshot of the prev3-develop branch
src = fetchFromGitHub {
owner = "cburstedde";
repo = "p4est";
rev = "7423ac5f2b2b64490a7a92e5ddcbd251053c4dee";
sha256 = "0vffnf48rzw6d0as4c3x1f31b4kapmdzr1hfj5rz5ngah72gqrph";
};
nativeBuildInputs = [ autoreconfHook pkg-config ];
propagatedBuildInputs = [ p4est-sc ];
buildInputs = lib.optional withMetis metis;
inherit debugEnable mpiSupport withMetis;
patches = [ ./p4est-metis.patch ];
postPatch = ''
sed -i -e "s:\(^\s*ACLOCAL_AMFLAGS.*\)\s@P4EST_SC_AMFLAGS@\s*$:\1 -I ${p4est-sc}/share/aclocal:" Makefile.am
'';
preConfigure = ''
echo "2.8.0" > .tarball-version
${if mpiSupport then "unset CC" else ""}
'';
configureFlags = [ "--with-sc=${p4est-sc}" ]
++ lib.optional withMetis "--with-metis"
++ lib.optional debugEnable "--enable-debug"
++ lib.optional mpiSupport "--enable-mpi"
;
inherit (p4est-sc) makeFlags dontDisableStatic enableParallelBuilding doCheck;
meta = {
branch = "prev3-develop";
description = "Parallel AMR on Forests of Octrees";
longDescription = ''
The p4est software library provides algorithms for parallel AMR.
AMR refers to Adaptive Mesh Refinement, a technique in scientific
computing to cover the domain of a simulation with an adaptive mesh.
'';
homepage = "https://www.p4est.org/";
downloadPage = "https://github.com/cburstedde/p4est.git";
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.cburstedde ];
};
}

View File

@ -0,0 +1,26 @@
diff --git a/src/p4est_connectivity.c b/src/p4est_connectivity.c
index 95339136..c93528f2 100644
--- a/src/p4est_connectivity.c
+++ b/src/p4est_connectivity.c
@@ -3715,6 +3715,7 @@ p4est_connectivity_reorder_newid (sc_MPI_Comm comm, int k,
sc_array_t * newid)
{
const int n = (int) conn->num_trees;
+ int metis_n;
int *xadj;
int *adjncy;
int *part;
@@ -3862,10 +3863,12 @@ p4est_connectivity_reorder_newid (sc_MPI_Comm comm, int k,
P4EST_GLOBAL_INFO ("Entering metis\n");
/* now call metis */
+ metis_n = n;
P4EST_EXECUTE_ASSERT_INT
- (METIS_PartGraphRecursive (&n, &ncon, xadj, adjncy, NULL, NULL,
+ (METIS_PartGraphRecursive (&metis_n, &ncon, xadj, adjncy, NULL, NULL,
NULL, &k, NULL, NULL, NULL, &volume, part),
METIS_OK);
+ P4EST_ASSERT (metis_n == n);
P4EST_GLOBAL_INFO ("Done metis\n");
P4EST_GLOBAL_STATISTICSF ("metis volume %d\n", volume);

View File

@ -29883,6 +29883,18 @@ in
rubiks = callPackage ../development/libraries/science/math/rubiks { };
p4est-sc = callPackage ../development/libraries/science/math/p4est-sc {
p4est-sc-debugEnable = false;
};
p4est-sc-dbg = callPackage ../development/libraries/science/math/p4est-sc { };
p4est = callPackage ../development/libraries/science/math/p4est { };
p4est-dbg = callPackage ../development/libraries/science/math/p4est {
p4est-sc = p4est-sc-dbg;
};
petsc = callPackage ../development/libraries/science/math/petsc { };
parmetis = callPackage ../development/libraries/science/math/parmetis { };