commit: bdd19219f3b1afc909f18bdc48c7f948ddb50fbc Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com> AuthorDate: Sat Aug 28 03:19:30 2021 +0000 Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me> CommitDate: Sun Aug 29 00:33:32 2021 +0000 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=bdd19219
sys-cluster/parsec: initial import Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com> sys-cluster/parsec/Manifest | 1 + sys-cluster/parsec/metadata.xml | 49 +++++++++++ sys-cluster/parsec/parsec-3.0.2012.ebuild | 130 ++++++++++++++++++++++++++++++ 3 files changed, 180 insertions(+) diff --git a/sys-cluster/parsec/Manifest b/sys-cluster/parsec/Manifest new file mode 100644 index 000000000..6f06e9d61 --- /dev/null +++ b/sys-cluster/parsec/Manifest @@ -0,0 +1 @@ +DIST parsec-3.0.2012.tar.bz2 735621 BLAKE2B a17a5d6a6c0c0859a4836bc43603181d5468b8b56ffbd3e8263a9e9fe5224bbbfeda3c11ba2271cf3b7ceb3cf6920ce34d79bda23cdec88e410c5235eb5a28df SHA512 34b322338e41b405e918f6ade308c22f77446668fec1ba0600b03131b9ee4e4108ee921e70c857ea47fae5573d1c921fa12d33ddfccaa7ccdbe480e612e9161d diff --git a/sys-cluster/parsec/metadata.xml b/sys-cluster/parsec/metadata.xml new file mode 100644 index 000000000..79382d06a --- /dev/null +++ b/sys-cluster/parsec/metadata.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="person"> + <email>lssndrbarbi...@gmail.com</email> + <name>Alessandro Barbieri</name> + </maintainer> + <upstream> + <bugs-to>https://bitbucket.org/icldistcomp/parsec/issues</bugs-to> + <remote-id type="bitbucket">icldistcomp/parsec</remote-id> + </upstream> + <longdescription lang="en"> +PaRSEC is a generic framework for architecture aware scheduling and management of micro-tasks on distributed many-core heterogeneous architectures. Applications we consider can be expressed as a Direct Acyclic Graph of tasks with labeled edges designating data dependencies. PaRSEC assigns computation threads to the cores, overlaps communications and computations and uses a dynamic, fully-distributed scheduler based on architectural features such as NUMA nodes and algorithmic features such as data reuse. +Several high level languages are proposed to expose the DAG from the applications. You can either build the DAG as you go, by using a mechanism called dynamic task generation (DTG), or use the JDF language to expose a compact problem-size independent format that can be queried on-demand to discover data dependencies in a totally distributed fashion. +The framework includes libraries, a runtime system, and development tools to help application developers tackle the difficult task of porting their applications to highly heterogeneous and diverse environment. +</longdescription> + <use> + <!--<flag name="cuda">Enable GPU support using CUDA kernels</flag>--> + <flag name="devel-headers">Install additional headers in include/parsec allowing external compilation</flag> + <flag name="home-config-files">Should the runtime check for the parameter configuration file in the user home (\$HOME/.parsec/mca-params.conf)</flag> + <!--<flag name="opencl">Enable GPU support using OpenCL kernels</flag>--> + <flag name="sched-deps-mask">Use a complete bitmask to track the dependencies, instead of a counter -- increase the debugging features, but limits to a maximum of 30 input dependencies</flag> + <flag name="parsec-debug-history">Keep a summarized history of critical events in memory that can be dumped in gdb when deadlock occur</flag> + <flag name="parsec-debug-mem-addr">Enable the memory access checker</flag> + <flag name="parsec-debug-mem-leak">Enable only the memory leak checker</flag> + <flag name="parsec-debug-mem-race">Enable the memory thread-race checker</flag> + <flag name="parsec-debug-noisier">Enable chatterbox-like verbose debugging (may impact performance)</flag> + <flag name="parsec-debug-paranoid">Enable extra paranoid checks (may impact performance)</flag> + <flag name="parsec-dist-collectives">Use optimized asynchronous operations where collective communication pattern is detected</flag> + <flag name="parsec-dist-priorities">Favor the communications that unlock the most prioritary tasks</flag> + <flag name="parsec-dist-thread">Use an extra thread to progress the data movements</flag> + <flag name="parsec-prof-active-arena-set">Enable the profiling of active arena set to track memory usage of parsec handles</flag> + <flag name="parsec-prof-btf">Force PaRSEC Binary Tracing Format to be the profiling system</flag> + <flag name="parsec-prof-dry-body">Disable calls to the actual bodies, no computation is performed</flag> + <flag name="parsec-prof-dry-dep">Disable calls to the actual data transport, remote dependencies are notified, but no data movement takes place</flag> + <flag name="parsec-prof-dry-run">Disable calls to the actual bodies and do not move the data between nodes, unfold the dependencies only</flag> + <flag name="parsec-prof-grapher">Enable the generation of the dot graph representation during execution</flag> + <flag name="parsec-prof-mmap">Use MMAP to create the profile files</flag> + <flag name="parsec-prof-otf2">Force otf2 to be the profiling system</flag> + <flag name="parsec-prof-pins">Enable the use of the PaRSEC callback instrumentation system</flag> + <flag name="parsec-prof-ptg">Generate Profiling traces for the internal_init tasks in the PTG interface</flag> + <flag name="parsec-prof-rusage">Print the rusage per execution unit for each progress</flag> + <flag name="parsec-prof-scheduling-events">Enable the tracing of fine-grained scheduling details during execution</flag> + <!--<flag name="parsec-prof-tau">Experimental usage of TAU profiling framework</flag>--> + <flag name="parsec-prof-thread">Use a Helper Thread to create the profile files</flag> + <flag name="sim">Enable the computation of the critical path, through simulation</flag> + <flag name="tools">Build the helper tools such as the pre-compilers, profiling manipulation and so on</flag> + </use> +</pkgmetadata> diff --git a/sys-cluster/parsec/parsec-3.0.2012.ebuild b/sys-cluster/parsec/parsec-3.0.2012.ebuild new file mode 100644 index 000000000..e53053f51 --- /dev/null +++ b/sys-cluster/parsec/parsec-3.0.2012.ebuild @@ -0,0 +1,130 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +DOCS_BUILDER="doxygen" +DOCS_DIR="docs/doxygen" + +inherit cmake fortran-2 docs + +DESCRIPTION="Parallel Runtime Scheduler and Execution Controller for micro-tasks on distributed heterogeneous systems" +HOMEPAGE="https://bitbucket.org/icldistcomp/parsec" +SRC_URI="https://bitbucket.org/icldistcomp/parsec/get/${P}.tar.bz2" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~amd64" +IUSE_PARSEC_DEBUG=" + parsec-debug-history + parsec-debug-mem-addr + parsec-debug-mem-leak + parsec-debug-mem-race + parsec-debug-noisier + parsec-debug-paranoid +" +IUSE_PARSEC_DIST=" + +parsec-dist-collectives + +parsec-dist-priorities + +parsec-dist-thread +" +IUSE_PARSEC_PROF=" + parsec-prof-active-arena-set + parsec-prof-btf + parsec-prof-dry-body + parsec-prof-dry-dep + parsec-prof-dry-run + parsec-prof-grapher + +parsec-prof-mmap + parsec-prof-otf2 + parsec-prof-pins + parsec-prof-ptg + parsec-prof-rusage + parsec-prof-scheduling-events + +parsec-prof-thread +" +IUSE_EXPAND="PARSEC_DEBUG PARSEC_DIST PARSEC_PROF" +IUSE="${IUSE_PARSEC_DEBUG} ${IUSE_PARSEC_DIST} ${IUSE_PARSEC_PROF} +cxx +devel-headers fortran +home-config-files +mpi +sched-deps-mask sim test +tools" + +#TODO: gd vite +RDEPEND=" + dev-util/valgrind + sys-apps/hwloc + sys-cluster/temanejo + mpi? ( virtual/mpi ) + parsec-prof-otf2? ( sys-cluster/otf2 ) + parsec-prof-pins? ( dev-libs/papi ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + sys-devel/bison + sys-devel/flex +" + +RESTRICT="!test? ( test )" +REQUIRED_USE=" + ?? ( mpi sim ) + ?? ( parsec-debug-mem-addr parsec-debug-mem-leak parsec-debug-mem-race ) + ?? ( parsec-prof-btf parsec-prof-otf2 ) +" + +pkg_setup() { + fortran-2_pkg_setup +} + +src_configure() { + local trace="Auto" + use parsec-prof-btf && trace="PaRSEC Binary Tracing Format" + use parsec-prof-otf2 && trace="OTF2" + + local mycmakeargs=( + -DBUILD_SHARED_LIBS=ON + -DPARSEC_GPU_CUDA_ALLOC_PER_TILE=OFF + -DPARSEC_GPU_WITH_CUDA=OFF + -DPARSEC_GPU_WITH_OPENCL=OFF + -DPARSEC_PROF_TAU=OFF + + -DBUILD_TOOLS=$(usex tools) + -DPARSEC_DEBUG_HISTORY=$(usex parsec-debug-history) + -DPARSEC_DEBUG=$(usex debug) + -DPARSEC_DEBUG_MEM_ADDR=$(usex parsec-debug-mem-addr) + -DPARSEC_DEBUG_MEM_LEAK=$(usex parsec-debug-mem-leak) + -DPARSEC_DEBUG_MEM_RACE=$(usex parsec-debug-mem-race) + -DPARSEC_DEBUG_NOISIER=$(usex parsec-debug-noisier) + -DPARSEC_DEBUG_PARANOID=$(usex parsec-debug-paranoid) + -DPARSEC_DIST_COLLECTIVES=$(usex parsec-dist-collectives) + -DPARSEC_DIST_PRIORITIES=$(usex parsec-dist-priorities) + -DPARSEC_DIST_THREAD=$(usex parsec-dist-thread) + -DPARSEC_DIST_WITH_MPI=$(usex mpi) + -DPARSEC_SCHED_DEPS_MASK=$(usex sched-deps-mask) + -DPARSEC_SIM=$(usex sim) + -DPARSEC_PROF_DRY_BODY=$(usex parser-prof-dry-body) + -DPARSEC_PROF_DRY_DEP=$(usex parser-prof-dry-dep) + -DPARSEC_PROF_DRY_RUN=$(usex parser-prof-dry-run) + -DPARSEC_PROF_GRAPHER=$(usex parser-prof-grapher) + -DPARSEC_PROF_PINS=$(usex parser-prof-pins) + -DPARSEC_PROF_RUSAGE_EU=$(usex parser-prof-rusage) + -DPARSEC_PROF_TRACE=$(usex profile) + -DPARSEC_PROF_TRACE_ACTIVE_ARENA_SET=$(usex parser-prof-active-arena-set) + -DPARSEC_PROF_TRACE_PTG_INTERNAL_INIT=$(usex parser-prof-ptg) + -DPARSEC_PROF_TRACE_SCHEDULING_EVENTS=$(usex parser-prof-scheduling-events) + -DPARSEC_PROF_TRACE_SYSTEM=${trace} + -DPARSEC_PROFILING_USE_HELPER_THREAD=$(usex parser-prof-thread) + -DPARSEC_PROFILING_USE_MMAP=$(usex parser-prof-mmap) + -DPARSEC_WANT_HOME_CONFIG_FILES=$(usex home-config-files) + -DPARSEC_WITH_DEVEL_HEADERS=$(usex devel-headers) + -DSUPPORT_CXX=$(usex cxx) + -DSUPPORT_FORTRAN=$(usex fortran) + ) + cmake_src_configure +} + +src_compile() { + cmake_src_compile + docs_compile +} + +src_install() { + cmake_src_install + einstalldocs +}