git: cb7c5aa4d712 - main - math/cosma: New port: Distributed communication-optimal matrix multiplication algorithm
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 12 Jul 2022 04:10:10 UTC
The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=cb7c5aa4d71204749cf8287cb61ad694d0db7404 commit cb7c5aa4d71204749cf8287cb61ad694d0db7404 Author: Yuri Victorovich <yuri@FreeBSD.org> AuthorDate: 2022-07-12 03:43:15 +0000 Commit: Yuri Victorovich <yuri@FreeBSD.org> CommitDate: 2022-07-12 04:10:07 +0000 math/cosma: New port: Distributed communication-optimal matrix multiplication algorithm --- math/Makefile | 1 + math/cosma/Makefile | 38 +++++++++++++++++++++++++++ math/cosma/distinfo | 7 +++++ math/cosma/pkg-descr | 17 ++++++++++++ math/cosma/pkg-plist | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 136 insertions(+) diff --git a/math/Makefile b/math/Makefile index 2b4e15180d3a..62c454686a0b 100644 --- a/math/Makefile +++ b/math/Makefile @@ -246,6 +246,7 @@ SUBDIR += concorde SUBDIR += convertall SUBDIR += coq + SUBDIR += cosma SUBDIR += couenne SUBDIR += coxeter3 SUBDIR += cppad diff --git a/math/cosma/Makefile b/math/cosma/Makefile new file mode 100644 index 000000000000..69a25b026351 --- /dev/null +++ b/math/cosma/Makefile @@ -0,0 +1,38 @@ +PORTNAME= cosma +DISTVERSIONPREFIX= v +DISTVERSION= 2.5.1-23 +DISTVERSIONSUFFIX= -ga3101bb +CATEGORIES= math + +MAINTAINER= yuri@FreeBSD.org +COMMENT= Distributed communication-optimal matrix multiplication algorithm + +LICENSE= BSD3CLAUSE +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= openmpi>0:net/openmpi +LIB_DEPENDS= libopenblas.so:math/openblas +RUN_DEPENDS= openmpi>0:net/openmpi + +USES= cmake:testing +USE_LDCONFIG= yes + +USE_GITHUB= yes +GH_ACCOUNT= eth-cscs +GH_PROJECT= COSMA +GH_TUPLE= eth-cscs:COSTA:e48f571:costa/libs/COSTA \ + eth-cscs:Tiled-MM:9e880f9:tiledmm/libs/Tiled-MM + +CMAKE_ON= BUILD_SHARED_LIBS +CMAKE_OFF= COSMA_WITH_TESTS +CMAKE_ARGS= -DCOSMA_BLAS="OPENBLAS" +CMAKE_TESTING_ON= COSMA_WITH_TESTS + +post-install: + @cd ${STAGEDIR}${PREFIX} && \ + ${RMDIR} \ + include/costa/pxtran \ + include/costa/pxtranc \ + include/costa/pxtranu + +.include <bsd.port.mk> diff --git a/math/cosma/distinfo b/math/cosma/distinfo new file mode 100644 index 000000000000..99b8a54db686 --- /dev/null +++ b/math/cosma/distinfo @@ -0,0 +1,7 @@ +TIMESTAMP = 1657596037 +SHA256 (eth-cscs-COSMA-v2.5.1-23-ga3101bb_GH0.tar.gz) = b1f51a3c3c97bef204bbaec633812f6150d4ccc31cfcb3556cbcbbfcc48ad7fe +SIZE (eth-cscs-COSMA-v2.5.1-23-ga3101bb_GH0.tar.gz) = 1654008 +SHA256 (eth-cscs-COSTA-e48f571_GH0.tar.gz) = 254faeaad2a4d1d7e378bf64523afb59cc9bc6f6d6b9a61f97c2818d64e9c4de +SIZE (eth-cscs-COSTA-e48f571_GH0.tar.gz) = 804692 +SHA256 (eth-cscs-Tiled-MM-9e880f9_GH0.tar.gz) = bde0484ec241a393bb0fd82cb1d4ab0421ecbbfa85b50e442bf1c364803070a3 +SIZE (eth-cscs-Tiled-MM-9e880f9_GH0.tar.gz) = 139512 diff --git a/math/cosma/pkg-descr b/math/cosma/pkg-descr new file mode 100644 index 000000000000..d0b682e35293 --- /dev/null +++ b/math/cosma/pkg-descr @@ -0,0 +1,17 @@ +COSMA is a parallel, high-performance, GPU-accelerated, matrix-matrix +multiplication algorithm that is communication-optimal for all +combinations of matrix dimensions, number of processors and memory +sizes, without the need for any parameter tuning. The key idea behind +COSMA is to first derive a tight optimal sequential schedule and only +then parallelize it, preserving I/O optimality between processes. This +stands in contrast with the 2D and 3D algorithms, which fix process +domain decomposition upfront and then map it to the matrix dimensions, +which may result in asymptotically more communication. The final +design of COSMA facilitates the overlap of computation and +communication, ensuring speedups and applicability of modern +mechanisms such as RDMA. COSMA allows to not utilize some processors +in order to optimize the processor grid, which reduces the +communication volume even further and increases the computation volume +per processor. + +WWW: https://github.com/eth-cscs/COSMA diff --git a/math/cosma/pkg-plist b/math/cosma/pkg-plist new file mode 100644 index 000000000000..c15206378e0f --- /dev/null +++ b/math/cosma/pkg-plist @@ -0,0 +1,73 @@ +include/cosma/aligned_allocator.hpp +include/cosma/blacs.hpp +include/cosma/blas.hpp +include/cosma/buffer.hpp +include/cosma/cinterface.hpp +include/cosma/communicator.hpp +include/cosma/context.hpp +include/cosma/cosma_pxgemm.hpp +include/cosma/environment_variables.hpp +include/cosma/gpu/gpu_aware_mpi_utils.hpp +include/cosma/gpu/gpu_runtime_api.hpp +include/cosma/gpu/nccl_mapper.hpp +include/cosma/gpu/nccl_utils.hpp +include/cosma/gpu/utils.hpp +include/cosma/interval.hpp +include/cosma/layout.hpp +include/cosma/local_multiply.hpp +include/cosma/mapper.hpp +include/cosma/math_utils.hpp +include/cosma/matrix.hpp +include/cosma/memory_pool.hpp +include/cosma/mpi_mapper.hpp +include/cosma/multiply.hpp +include/cosma/one_sided_communicator.hpp +include/cosma/pinned_buffers.hpp +include/cosma/profiler.hpp +include/cosma/pxgemm_params.hpp +include/cosma/random_generator.hpp +include/cosma/scalapack.hpp +include/cosma/statistics.hpp +include/cosma/strategy.hpp +include/cosma/timer.hpp +include/cosma/two_sided_communicator.hpp +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/cosma/FindMKL.cmake +lib/cmake/cosma/cosmaConfig.cmake +lib/cmake/cosma/cosmaConfigVersion.cmake +lib/cmake/cosma/cosmaTargets-%%CMAKE_BUILD_TYPE%%.cmake +lib/cmake/cosma/cosmaTargets.cmake +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/libcosma.so +lib/libcosta.so +libdata/pkgconfig/cosma.pc +libdata/pkgconfig/costa.pc