From nobody Tue Jul 12 04:10:10 2022 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 1258383899E; Tue, 12 Jul 2022 04:10:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LhnN26MqKz3lKF; Tue, 12 Jul 2022 04:10:10 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657599010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Oy0O0MCQf+4IyWcuu+gjk2qVpwpgSRK6HJ/w7J6lVKk=; b=GIwQ4RTCPUiEWjLlN0hnf/T+sVmXphBrE+0fNW+MWGQIrAfez16zUSvL3O8GS/MyQrPRz5 rJqOWEeyi/ttI3fTqgXUzmv9pDvUQS2eHonCA5NEUFiq2ArpHof9RbgflN7nRjUSPQVZ6G 9JmE7nKvNWD0ngVd/GrT+DlcSWNTWdB5V1Xk1fFQBlSAkKg2tw2OTXdmofLW5Vc1GSHuAP wsOhPYGwyGOvTZ3rcJfOFnJxPMwliQk9ODesDEVR2hNYcMw0tBUW07NjkSiOlahZNyE5f1 Oj2JJ2ZLjpMOgVKs2G1b/4YlZJ+9ztdtlXHT47R000xGp8DpT1MxkCISJBUBkQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4LhnN25MMXzVj0; Tue, 12 Jul 2022 04:10:10 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 26C4AAhM073966; Tue, 12 Jul 2022 04:10:10 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 26C4AAsW073963; Tue, 12 Jul 2022 04:10:10 GMT (envelope-from git) Date: Tue, 12 Jul 2022 04:10:10 GMT Message-Id: <202207120410.26C4AAsW073963@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Yuri Victorovich Subject: git: cb7c5aa4d712 - main - math/cosma: New port: Distributed communication-optimal matrix multiplication algorithm List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: yuri X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: cb7c5aa4d71204749cf8287cb61ad694d0db7404 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1657599010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Oy0O0MCQf+4IyWcuu+gjk2qVpwpgSRK6HJ/w7J6lVKk=; b=cMhn3qcxUTDOjIN+UGifj08gux4bX8/Extyxe72L2pAdEtzu3V07NvYOV9JJ+Rs6LOxyNF v0JWeUegKKw4jVpmS+Ew1muwPoBRrjj6fh+nx7XcF5py4kCsv09sx63cCND4K3AR5HVoLm MWAiD2rQ4mba6EXMzGJRkZOU3ykXF3lvEOc2QKnhg9ZkC5WWFmoWQAEVoxw++SY6sDhljB eQnHmgmDdqjsCYZhc5joGTWZuhqRvNxeCl7yMOqCxEgOztdQfCF0sSDYLlU+aG208nSYaS BkDzibEDPDfoxuBztI1pP6oAV6kwj/wGvktj0eQGoHqMUdlwnH8qE7K1D8wmbw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1657599010; a=rsa-sha256; cv=none; b=Z794zXOzM1YxqaEpKH+nZYYIr8SURvri/CfMApW49bAH3GtsIIe+9FODIdLcVIHGKph4Xk oLzua0EiB1sE9aUgQarOzOxMyZwCWRCyqMs7uBa2ahiaEDlXUaRZycODjISm2dSKBTQS9B nxHOnkLz3szojwIEM8zbg+8UFHcgL6rOQhboxpOVRBo1paio6+jFLgCuc3F+sT9fnGrwJP Yuo5Q4CFWQPR4oW4a9xyOphKUpie69/5puHS6hO7JEhm8vAoSnssPa3jB8VAQo4H/bgEU/ q5CRz4VSeEK8f7adwzzjzp5tu2GH8nSRAU1Oeev8qTYzrTMk3C4/gSQXisPM5Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by yuri: URL: https://cgit.FreeBSD.org/ports/commit/?id=cb7c5aa4d71204749cf8287cb61ad694d0db7404 commit cb7c5aa4d71204749cf8287cb61ad694d0db7404 Author: Yuri Victorovich AuthorDate: 2022-07-12 03:43:15 +0000 Commit: Yuri Victorovich 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 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