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
+}

Reply via email to