git: 3f14cf845a56 - main - math/ntpoly: adding a library for computing the functions of sparse matrices

From: Thierry Thomas <thierry_at_FreeBSD.org>
Date: Mon, 17 Oct 2022 17:38:34 UTC
The branch main has been updated by thierry:

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

commit 3f14cf845a561b47fd1f5bc109612588c6abf7c1
Author:     Thierry Thomas <thierry@FreeBSD.org>
AuthorDate: 2022-10-17 17:36:45 +0000
Commit:     Thierry Thomas <thierry@FreeBSD.org>
CommitDate: 2022-10-17 17:36:45 +0000

    math/ntpoly: adding a library for computing the functions of sparse matrices
---
 math/Makefile         |   1 +
 math/ntpoly/Makefile  |  62 +++++++++++++++++++++++
 math/ntpoly/distinfo  |   3 ++
 math/ntpoly/pkg-descr |   3 ++
 math/ntpoly/pkg-plist | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 206 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index b0342747c9a8..db2287a2a58f 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -514,6 +514,7 @@
     SUBDIR += ngraph
     SUBDIR += nlopt
     SUBDIR += ntl
+    SUBDIR += ntpoly
     SUBDIR += numdiff
     SUBDIR += obake
     SUBDIR += ocaml-num
diff --git a/math/ntpoly/Makefile b/math/ntpoly/Makefile
new file mode 100644
index 000000000000..edc58425933c
--- /dev/null
+++ b/math/ntpoly/Makefile
@@ -0,0 +1,62 @@
+PORTNAME=	NTPoly
+PORTVERSION=	2.7.1
+DISTVERSIONPREFIX=	v
+CATEGORIES=	math
+MASTER_SITES=	https://github.com/william-dawson/${PORTNAME}/archive/refs/tags/
+DISTNAME=	${PORTNAME:tl}-${DISTVERSIONPREFIX}${DISTVERSION}
+
+MAINTAINER=	thierry@FreeBSD.org
+COMMENT=	Library for computing the functions of sparse matrices
+WWW=		https://github.com/kimwalisch/primecount
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	swig>0:devel/swig
+TEST_DEPENDS=	${PYNUMPY}	\
+		bash:shells/bash	\
+		${PYTHON_PKGNAMEPREFIX}mpi4py>0:net/py-mpi4py@${PY_FLAVOR}	\
+		${PYTHON_PKGNAMEPREFIX}scipy>0:science/py-scipy@${PY_FLAVOR}
+
+#USE_GITHUB=	yes
+#GH_ACCOUNT=	william-dawson
+
+USES=		blaslapack:openblas cmake fortran mpi python
+WRKSRC=		${WRKDIR}/${PORTNAME}-${PORTNAME:tl}-${DISTVERSIONPREFIX}${DISTVERSION}
+FFLAGS+=	-fopenmp -fallow-argument-mismatch
+CXXFLAGS+=	-fopenmp
+CMAKE_ARGS=	-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN}
+CMAKE_ON=	BUILD_SHARED_LIBS
+USE_LDCONFIG=	yes
+
+TOOLCHAIN=	${WRKSRC}/Targets/${OPSYS}.cmake
+
+NTPLIBS=	${PORTNAME} ${PORTNAME}CPP ${PORTNAME}Wrapper
+
+pre-configure:
+	${ECHO_CMD} 'set(CMAKE_SYSTEM_NAME ${OPSYS})' > ${TOOLCHAIN}
+	${ECHO_CMD} 'set(CMAKE_C_COMPILER ${MPICC})' >> ${TOOLCHAIN}
+	${ECHO_CMD} 'set(CMAKE_Fortran_COMPILER ${MPIFC})' >> ${TOOLCHAIN}
+	${ECHO_CMD} 'set(CMAKE_CXX_COMPILER ${MPICXX})' >> ${TOOLCHAIN}
+	${ECHO_CMD} 'set(TOOLCHAIN_LIBS "${BLASLIB}")' >> ${TOOLCHAIN}
+	${ECHO_CMD} 'set(F_TOOLCHAINFLAGS_RELEASE "${FFLAGS}")' >> ${TOOLCHAIN}
+	${ECHO_CMD} 'set(CXX_TOOLCHAINFLAGS_DEBUG "${CXXFLAGS}")' >> ${TOOLCHAIN}
+	${ECHO_CMD} 'set(F_TOOLCHAINFLAGS_DEBUG "${FFLAGS}")' >> ${TOOLCHAIN}
+	${ECHO_CMD} 'set(TARGET_SUPPORTS_SHARED_LIBS Yes)' >> ${TOOLCHAIN}
+
+post-install:
+.for l in ${NTPLIBS}
+	${MV} ${STAGEDIR}${PREFIX}/lib/lib${l}.so	\
+		${STAGEDIR}${PREFIX}/lib/lib${l}.so.0
+	${RLN} ${STAGEDIR}${PREFIX}/lib/lib${l}.so.0	\
+		${STAGEDIR}${PREFIX}/lib/lib${l}.so
+.endfor
+
+do-test:
+	@${ECHO_MSG} "/!\\ WARNING /!\\"
+	@${ECHO_MSG} "net/py-mpi4py must be built against MPICH!"
+	cd ${BUILD_WRKSRC} && \
+	${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} ${ALL_TARGET} && \
+	${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} test
+
+.include <bsd.port.mk>
diff --git a/math/ntpoly/distinfo b/math/ntpoly/distinfo
new file mode 100644
index 000000000000..ff65e443cf0b
--- /dev/null
+++ b/math/ntpoly/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1665940022
+SHA256 (ntpoly-v2.7.1.tar.gz) = c15d9f51ac054b4ef0565ce5c4c8589c10bdbab4dc3442ebd109691e2bbfc7e2
+SIZE (ntpoly-v2.7.1.tar.gz) = 281935
diff --git a/math/ntpoly/pkg-descr b/math/ntpoly/pkg-descr
new file mode 100644
index 000000000000..ab83cc600003
--- /dev/null
+++ b/math/ntpoly/pkg-descr
@@ -0,0 +1,3 @@
+NTPoly is a massively parallel library for computing the functions of sparse,
+Hermitian matrices based on polynomial expansions. For sufficiently sparse
+matrices, most of the matrix functions in NTPoly can be computed in linear time.
diff --git a/math/ntpoly/pkg-plist b/math/ntpoly/pkg-plist
new file mode 100644
index 000000000000..8e2138c7244f
--- /dev/null
+++ b/math/ntpoly/pkg-plist
@@ -0,0 +1,137 @@
+include/Analysis.h
+include/Analysis_c.h
+include/CMakeLists.txt
+include/ChebyshevSolvers.h
+include/ChebyshevSolvers_c.h
+include/DensityMatrixSolvers.h
+include/DensityMatrixSolvers_c.h
+include/EigenBounds.h
+include/EigenBounds_c.h
+include/ExponentialSolvers.h
+include/ExponentialSolvers_c.h
+include/GeometryOptimization.h
+include/GeometryOptimization_c.h
+include/HermiteSolvers.h
+include/HermiteSolvers_c.h
+include/InverseSolvers.h
+include/InverseSolvers_c.h
+include/LinearSolvers.h
+include/LinearSolvers_c.h
+include/LoadBalancer.h
+include/LoadBalancer_c.h
+include/Logging.h
+include/Logging_c.h
+include/MatrixConversion.h
+include/MatrixConversion_c.h
+include/MatrixMapper.h
+include/MatrixMemoryPool.h
+include/MatrixMemoryPool_c.h
+include/PMatrixMemoryPool.h
+include/PMatrixMemoryPool_c.h
+include/PSMatrix.h
+include/PSMatrix_c.h
+include/Permutation.h
+include/Permutation_c.h
+include/Polynomial.h
+include/Polynomial_c.h
+include/ProcessGrid.h
+include/ProcessGrid_c.h
+include/RootSolvers.h
+include/RootSolvers_c.h
+include/SMatrix.h
+include/SMatrix_c.h
+include/SignSolvers.h
+include/SignSolvers_c.h
+include/SolverBase.h
+include/SolverParameters.h
+include/SolverParameters_c.h
+include/SquareRootSolvers.h
+include/SquareRootSolvers_c.h
+include/TrigonometrySolvers.h
+include/TrigonometrySolvers_c.h
+include/Triplet.h
+include/TripletList.h
+include/TripletList_c.h
+include/Wrapper.h
+include/analysismodule.mod
+include/analysismodule_wrp.mod
+include/chebyshevsolversmodule.mod
+include/chebyshevsolversmodule_wrp.mod
+include/choleskymodule.mod
+include/datatypesmodule.mod
+include/densitymatrixsolversmodule.mod
+include/densitymatrixsolversmodule_wrp.mod
+include/dmatrixmodule.mod
+include/eigenboundsmodule.mod
+include/eigenboundsmodule_wrp.mod
+include/errormodule.mod
+include/exponentialsolversmodule.mod
+include/exponentialsolversmodule_wrp.mod
+include/gemmtasksmodule.mod
+include/geometryoptimizationmodule.mod
+include/geometryoptimizationmodule_wrp.mod
+include/hermitesolversmodule.mod
+include/hermitesolversmodule_wrp.mod
+include/inversesolversmodule.mod
+include/inversesolversmodule_wrp.mod
+include/linearsolversmodule.mod
+include/linearsolversmodule_wrp.mod
+include/loadbalancermodule.mod
+include/loadbalancermodule_wrp.mod
+include/loggingmodule.mod
+include/loggingmodule_wrp.mod
+include/matrixconversionmodule.mod
+include/matrixconversionmodule_wrp.mod
+include/matrixmapsmodule.mod
+include/matrixmarketmodule.mod
+include/matrixmemorypoolmodule.mod
+include/matrixmemorypoolmodule_wrp.mod
+include/matrixreducemodule.mod
+include/ntmpimodule.mod
+include/permutationmodule.mod
+include/permutationmodule_wrp.mod
+include/pmatrixmemorypoolmodule.mod
+include/pmatrixmemorypoolmodule_wrp.mod
+include/polynomialsolversmodule.mod
+include/polynomialsolversmodule_wrp.mod
+include/processgridmodule.mod
+include/processgridmodule_wrp.mod
+include/psmatrixalgebramodule.mod
+include/psmatrixalgebramodule_wrp.mod
+include/psmatrixmodule.mod
+include/psmatrixmodule_wrp.mod
+include/rootsolversmodule.mod
+include/rootsolversmodule_wrp.mod
+include/signsolversmodule.mod
+include/signsolversmodule_wrp.mod
+include/smatrixalgebramodule.mod
+include/smatrixalgebramodule_wrp.mod
+include/smatrixmodule.mod
+include/smatrixmodule_wrp.mod
+include/solverparametersmodule.mod
+include/solverparametersmodule_wrp.mod
+include/squarerootsolversmodule.mod
+include/squarerootsolversmodule_wrp.mod
+include/svectormodule.mod
+include/timermodule.mod
+include/trigonometrysolversmodule.mod
+include/trigonometrysolversmodule_wrp.mod
+include/tripletlistmodule.mod
+include/tripletlistmodule_wrp.mod
+include/tripletmodule.mod
+include/wrappermodule.mod
+lib/cmake/NTPoly/NTPolyConfig-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/NTPoly/NTPolyConfig.cmake
+lib/cmake/NTPolyCPP/NTPolyCPPConfig-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/NTPolyCPP/NTPolyCPPConfig.cmake
+lib/cmake/NTPolyWrapper/NTPolyWrapperConfig-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/NTPolyWrapper/NTPolyWrapperConfig.cmake
+lib/libNTPoly.so
+lib/libNTPoly.so.0
+lib/libNTPolyCPP.so
+lib/libNTPolyCPP.so.0
+lib/libNTPolyWrapper.so
+lib/libNTPolyWrapper.so.0
+libdata/pkgconfig/NTPoly.pc
+libdata/pkgconfig/NTPolyCPP.pc
+libdata/pkgconfig/NTPolyWrapper.pc