git: c2fa0cfe1710 - main - math/superlu-dist: New port: Distributed memory, MPI based SuperLU

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sat, 27 Aug 2022 07:37:38 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=c2fa0cfe17101f613e90b97b9384f0a7537cd281

commit c2fa0cfe17101f613e90b97b9384f0a7537cd281
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-08-27 07:36:52 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-08-27 07:37:34 +0000

    math/superlu-dist: New port: Distributed memory, MPI based SuperLU
---
 math/Makefile               |  1 +
 math/superlu-dist/Makefile  | 59 +++++++++++++++++++++++++++++++++++++++++++++
 math/superlu-dist/distinfo  |  5 ++++
 math/superlu-dist/pkg-descr | 12 +++++++++
 math/superlu-dist/pkg-plist | 32 ++++++++++++++++++++++++
 5 files changed, 109 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index 4cff58d2ba9a..ca08e5d54f67 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -1095,6 +1095,7 @@
     SUBDIR += suitesparse-umfpack
     SUBDIR += sundials
     SUBDIR += superlu
+    SUBDIR += superlu-dist
     SUBDIR += symengine
     SUBDIR += symmetrica
     SUBDIR += symphony
diff --git a/math/superlu-dist/Makefile b/math/superlu-dist/Makefile
new file mode 100644
index 000000000000..d06944bcd2d1
--- /dev/null
+++ b/math/superlu-dist/Makefile
@@ -0,0 +1,59 @@
+PORTNAME=	superlu-dist
+DISTVERSIONPREFIX=	v
+DISTVERSION=	8.1.0
+CATEGORIES=	math
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Distributed memory, MPI based SuperLU
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/License.txt
+
+USES=		cmake:testing fortran pkgconfig
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	xiaoyeli
+GH_PROJECT=	superlu_dist
+
+CMAKE_ON=	USE_XSDK_DEFAULTS BUILD_SHARED_LIBS
+CMAKE_OFF=	enable_tests enable_examples TPL_ENABLE_PARMETISLIB
+CMAKE_TESTING_ON=	enable_tests # many tests fail, see https://github.com/xiaoyeli/superlu_dist/issues/113
+
+OPTIONS_DEFINE=		DOCS FORTRAN
+OPTIONS_SINGLE=		BLAS MPI
+OPTIONS_SINGLE_BLAS=	ATLAS GOTOBLAS OPENBLAS REFERENCE
+OPTIONS_SINGLE_MPI=	MPICH OPENMPI
+OPTIONS_DEFAULT=	FORTRAN MPICH REFERENCE
+OPTIONS_SUB=		yes
+
+# all BLAS-related options
+ATLAS_USES=		blaslapack:atlas
+ATLAS_CMAKE_ON=		-DBLA_VENDOR:STRING="ATLAS"
+GOTOBLAS_DESC=		GotoBLAS blas implementation
+GOTOBLAS_USES=		blaslapack:gotoblas
+GOTOBLAS_CMAKE_ON=	-DBLA_VENDOR:STRING="Goto"
+OPENBLAS_USES=		blaslapack:openblas
+OPENBLAS_CMAKE_ON=	-DBLA_VENDOR:STRING="OpenBLAS"
+REFERENCE_DESC=		Reference blas implementation
+REFERENCE_USES=		blaslapack
+REFERENCE_CMAKE_ON=	-DBLA_VENDOR:STRING="Generic"
+
+# other options
+FORTRAN_CMAKE_BOOL=	XSDK_ENABLE_Fortran
+MPICH_USES=		mpi:mpich
+OPENMPI_USES=		mpi:openmpi
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	cd ${WRKSRC}/DOC && ${COPYTREE_SHARE} "ug.pdf" ${STAGEDIR}${DOCSDIR}
+
+post-install-FORTRAN-on:
+	# workaround for https://github.com/xiaoyeli/superlu_dist/issues/112
+	@${RM} -r ${STAGEDIR}${PREFIX}/include/FORTRAN/CMakeFiles
+	# move .mod files to a proper location
+	@cd ${STAGEDIR}${PREFIX}/include && \
+		${MV} FORTRAN/* . && \
+		${RMDIR} FORTRAN
+
+.include <bsd.port.mk>
diff --git a/math/superlu-dist/distinfo b/math/superlu-dist/distinfo
new file mode 100644
index 000000000000..979fbe207708
--- /dev/null
+++ b/math/superlu-dist/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1661580599
+SHA256 (xiaoyeli-superlu_dist-v8.1.0_GH0.tar.gz) = 9308844b99a7e762d5704934f7e9f79daf158b0bfc582994303c2e0b31518b34
+SIZE (xiaoyeli-superlu_dist-v8.1.0_GH0.tar.gz) = 2297109
+SHA256 (xiaoyeli-superlu_dist-v8.1.0_GH0.tar.gz) = 9308844b99a7e762d5704934f7e9f79daf158b0bfc582994303c2e0b31518b34
+SIZE (xiaoyeli-superlu_dist-v8.1.0_GH0.tar.gz) = 2297109
diff --git a/math/superlu-dist/pkg-descr b/math/superlu-dist/pkg-descr
new file mode 100644
index 000000000000..dc9081ff1a4c
--- /dev/null
+++ b/math/superlu-dist/pkg-descr
@@ -0,0 +1,12 @@
+SuperLU_DIST contains a set of subroutines to solve a sparse linear system
+A*X=B. It uses Gaussian elimination with static pivoting (GESP). Static pivoting
+is a technique that combines the numerical stability of partial pivoting with
+the scalability of Cholesky (no pivoting), to run accurately and efficiently on
+large numbers of processors.
+
+SuperLU_DIST is a parallel extension to the serial SuperLU library. It is
+targeted for the distributed memory parallel machines. SuperLU_DIST is
+implemented in ANSI C, with OpenMP for on-node parallelism and MPI for off-node
+communications. We are actively developing GPU acceleration capabilities.
+
+WWW: https://portal.nersc.gov/project/sparse/superlu/
diff --git a/math/superlu-dist/pkg-plist b/math/superlu-dist/pkg-plist
new file mode 100644
index 000000000000..ef969ecbce12
--- /dev/null
+++ b/math/superlu-dist/pkg-plist
@@ -0,0 +1,32 @@
+include/colamd.h
+include/dcomplex.h
+include/dlustruct_gpu.h
+include/gpu_api_utils.h
+include/gpu_wrapper.h
+include/machines.h
+include/psymbfact.h
+include/slustruct_gpu.h
+include/superlu_FCnames.h
+include/superlu_FortranCInterface.h
+include/superlu_ddefs.h
+include/superlu_defs.h
+%%FORTRAN%%include/superlu_dist_config.fh
+include/superlu_dist_config.h
+include/superlu_enum_consts.h
+%%FORTRAN%%include/superlu_mod.mod
+include/superlu_sdefs.h
+include/superlu_zdefs.h
+%%FORTRAN%%include/superlupara_mod.mod
+include/supermatrix.h
+include/util_dist.h
+include/zlustruct_gpu.h
+lib/libsuperlu_dist.a
+lib/libsuperlu_dist.so
+lib/libsuperlu_dist.so.8
+lib/libsuperlu_dist.so.8.1.0
+%%FORTRAN%%lib/libsuperlu_dist_fortran.a
+%%FORTRAN%%lib/libsuperlu_dist_fortran.so
+%%FORTRAN%%lib/libsuperlu_dist_fortran.so.8
+%%FORTRAN%%lib/libsuperlu_dist_fortran.so.8.1.0
+libdata/pkgconfig/superlu_dist.pc
+%%PORTDOCS%%%%DOCSDIR%%/ug.pdf