sys-cluster/parsec: initial import

Signed-off-by: Alessandro Barbieri <lssndrbarbieri@gmail.com>
This commit is contained in:
Alessandro Barbieri
2021-08-28 05:19:30 +02:00
parent af129baecb
commit bdd19219f3
3 changed files with 180 additions and 0 deletions

View File

@@ -0,0 +1 @@
DIST parsec-3.0.2012.tar.bz2 735621 BLAKE2B a17a5d6a6c0c0859a4836bc43603181d5468b8b56ffbd3e8263a9e9fe5224bbbfeda3c11ba2271cf3b7ceb3cf6920ce34d79bda23cdec88e410c5235eb5a28df SHA512 34b322338e41b405e918f6ade308c22f77446668fec1ba0600b03131b9ee4e4108ee921e70c857ea47fae5573d1c921fa12d33ddfccaa7ccdbe480e612e9161d

View File

@@ -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>lssndrbarbieri@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>

View File

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