git: 0a2156ecebc0 - main - math/costa: New port: Distributed Communication-Optimal Shuffle and Transpose Algorithm

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Fri, 26 Aug 2022 18:06:40 UTC
The branch main has been updated by yuri:

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

commit 0a2156ecebc082c4019d5b3a8b1d8b5c85b52d61
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2022-08-26 18:05:49 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2022-08-26 18:06:38 +0000

    math/costa: New port: Distributed Communication-Optimal Shuffle and Transpose Algorithm
---
 math/Makefile        |  1 +
 math/costa/Makefile  | 41 +++++++++++++++++++++++++++++++++++++++++
 math/costa/distinfo  |  3 +++
 math/costa/pkg-descr |  5 +++++
 math/costa/pkg-plist | 35 +++++++++++++++++++++++++++++++++++
 5 files changed, 85 insertions(+)

diff --git a/math/Makefile b/math/Makefile
index 9e44df632a50..008963df91fc 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -248,6 +248,7 @@
     SUBDIR += convertall
     SUBDIR += coq
     SUBDIR += cosma
+    SUBDIR += costa
     SUBDIR += couenne
     SUBDIR += coxeter3
     SUBDIR += cppad
diff --git a/math/costa/Makefile b/math/costa/Makefile
new file mode 100644
index 000000000000..bb2298b1b8ad
--- /dev/null
+++ b/math/costa/Makefile
@@ -0,0 +1,41 @@
+PORTNAME=	costa
+DISTVERSIONPREFIX=	v
+DISTVERSION=	2.1
+CATEGORIES=	math
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Distributed Communication-Optimal Shuffle and Transpose Algorithm
+
+LICENSE=	BSD3CLAUSE
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+LIB_DEPENDS=	libopenblas.so:math/openblas \
+		libscalapack.so:math/scalapack
+
+USES=		cmake:testing pkgconfig
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	eth-cscs
+GH_PROJECT=	COSTA
+
+CMAKE_ON=	BUILD_SHARED_LIBS
+CMAKE_ARGS=	-DCOSTA_SCALAPACK=CUSTOM
+CMAKE_OFF=	COSTA_WITH_TESTS
+CMAKE_TESTING_ON=	COSTA_WITH_TESTS
+
+OPTIONS_SINGLE=		MPI
+OPTIONS_SINGLE_MPI=	MPICH OPENMPI
+OPTIONS_DEFAULT=	MPICH
+
+MPICH_USES=		mpi:mpich
+
+OPENMPI_USES=		mpi:openmpi
+
+post-install: # workaround for https://github.com/eth-cscs/COSTA/issues/9
+	@cd ${STAGEDIR}${PREFIX} && ${RMDIR} \
+		include/costa/pxtran \
+		include/costa/pxtranc \
+		include/costa/pxtranu
+
+.include <bsd.port.mk>
diff --git a/math/costa/distinfo b/math/costa/distinfo
new file mode 100644
index 000000000000..1f6c58c82e01
--- /dev/null
+++ b/math/costa/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1661524865
+SHA256 (eth-cscs-COSTA-v2.1_GH0.tar.gz) = c1e86452415083f7470b292d93ec60708b7c8dbafc2bac383636bb4b28135866
+SIZE (eth-cscs-COSTA-v2.1_GH0.tar.gz) = 804671
diff --git a/math/costa/pkg-descr b/math/costa/pkg-descr
new file mode 100644
index 000000000000..7caa56d5abef
--- /dev/null
+++ b/math/costa/pkg-descr
@@ -0,0 +1,5 @@
+COSTA is a communication-optimal, highly-optimised algorithm for data
+redistribution accross multiple processors, using MPI and OpenMP and
+offering the possibility to transpose and scale some or all data.
+
+WWW: https://github.com/eth-cscs/COSTA
diff --git a/math/costa/pkg-plist b/math/costa/pkg-plist
new file mode 100644
index 000000000000..04d919bd461b
--- /dev/null
+++ b/math/costa/pkg-plist
@@ -0,0 +1,35 @@
+include/costa/blacs.hpp
+include/costa/cinterface/transform.hpp
+include/costa/grid2grid/block.hpp
+include/costa/grid2grid/cantor_mapping.hpp
+include/costa/grid2grid/comm_volume.hpp
+include/costa/grid2grid/communication_data.hpp
+include/costa/grid2grid/grid2D.hpp
+include/costa/grid2grid/grid_cover.hpp
+include/costa/grid2grid/grid_layout.hpp
+include/costa/grid2grid/interval.hpp
+include/costa/grid2grid/memory_utils.hpp
+include/costa/grid2grid/mpi_type_wrapper.hpp
+include/costa/grid2grid/profiler.hpp
+include/costa/grid2grid/ranks_reordering.hpp
+include/costa/grid2grid/scalapack_layout.hpp
+include/costa/grid2grid/threads_workspace.hpp
+include/costa/grid2grid/transform.hpp
+include/costa/grid2grid/transformer.hpp
+include/costa/grid2grid/utils.hpp
+include/costa/layout.hpp
+include/costa/pxgemr2d/costa_pxgemr2d.hpp
+include/costa/pxgemr2d/pxgemr2d_params.hpp
+include/costa/pxtran_op/costa_pxtran_op.hpp
+include/costa/pxtran_op/pxtran_op_params.hpp
+include/costa/random_generator.hpp
+include/costa/scalapack.hpp
+lib/cmake/costa/FindMKL.cmake
+lib/cmake/costa/costaConfig.cmake
+lib/cmake/costa/costaConfigVersion.cmake
+lib/cmake/costa/costaTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/costa/costaTargets.cmake
+lib/libcosta.so
+lib/libcosta_prefixed_scalapack.so
+lib/libcosta_scalapack.so
+libdata/pkgconfig/costa.pc