Gentoo Archives: gentoo-commits

From: Haelwenn Monnier <contact@×××××××××.me>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/proj/guru:master commit in: sys-cluster/parsec/
Date: Sun, 29 Aug 2021 17:06:03
Message-Id: 1630197212.bdd19219f3b1afc909f18bdc48c7f948ddb50fbc.lanodan@gentoo
1 commit: bdd19219f3b1afc909f18bdc48c7f948ddb50fbc
2 Author: Alessandro Barbieri <lssndrbarbieri <AT> gmail <DOT> com>
3 AuthorDate: Sat Aug 28 03:19:30 2021 +0000
4 Commit: Haelwenn Monnier <contact <AT> hacktivis <DOT> me>
5 CommitDate: Sun Aug 29 00:33:32 2021 +0000
6 URL: https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=bdd19219
7
8 sys-cluster/parsec: initial import
9
10 Signed-off-by: Alessandro Barbieri <lssndrbarbieri <AT> gmail.com>
11
12 sys-cluster/parsec/Manifest | 1 +
13 sys-cluster/parsec/metadata.xml | 49 +++++++++++
14 sys-cluster/parsec/parsec-3.0.2012.ebuild | 130 ++++++++++++++++++++++++++++++
15 3 files changed, 180 insertions(+)
16
17 diff --git a/sys-cluster/parsec/Manifest b/sys-cluster/parsec/Manifest
18 new file mode 100644
19 index 000000000..6f06e9d61
20 --- /dev/null
21 +++ b/sys-cluster/parsec/Manifest
22 @@ -0,0 +1 @@
23 +DIST parsec-3.0.2012.tar.bz2 735621 BLAKE2B a17a5d6a6c0c0859a4836bc43603181d5468b8b56ffbd3e8263a9e9fe5224bbbfeda3c11ba2271cf3b7ceb3cf6920ce34d79bda23cdec88e410c5235eb5a28df SHA512 34b322338e41b405e918f6ade308c22f77446668fec1ba0600b03131b9ee4e4108ee921e70c857ea47fae5573d1c921fa12d33ddfccaa7ccdbe480e612e9161d
24
25 diff --git a/sys-cluster/parsec/metadata.xml b/sys-cluster/parsec/metadata.xml
26 new file mode 100644
27 index 000000000..79382d06a
28 --- /dev/null
29 +++ b/sys-cluster/parsec/metadata.xml
30 @@ -0,0 +1,49 @@
31 +<?xml version="1.0" encoding="UTF-8"?>
32 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
33 +<pkgmetadata>
34 + <maintainer type="person">
35 + <email>lssndrbarbieri@×××××.com</email>
36 + <name>Alessandro Barbieri</name>
37 + </maintainer>
38 + <upstream>
39 + <bugs-to>https://bitbucket.org/icldistcomp/parsec/issues</bugs-to>
40 + <remote-id type="bitbucket">icldistcomp/parsec</remote-id>
41 + </upstream>
42 + <longdescription lang="en">
43 +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.
44 +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.
45 +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.
46 +</longdescription>
47 + <use>
48 + <!--<flag name="cuda">Enable GPU support using CUDA kernels</flag>-->
49 + <flag name="devel-headers">Install additional headers in include/parsec allowing external compilation</flag>
50 + <flag name="home-config-files">Should the runtime check for the parameter configuration file in the user home (\$HOME/.parsec/mca-params.conf)</flag>
51 + <!--<flag name="opencl">Enable GPU support using OpenCL kernels</flag>-->
52 + <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>
53 + <flag name="parsec-debug-history">Keep a summarized history of critical events in memory that can be dumped in gdb when deadlock occur</flag>
54 + <flag name="parsec-debug-mem-addr">Enable the memory access checker</flag>
55 + <flag name="parsec-debug-mem-leak">Enable only the memory leak checker</flag>
56 + <flag name="parsec-debug-mem-race">Enable the memory thread-race checker</flag>
57 + <flag name="parsec-debug-noisier">Enable chatterbox-like verbose debugging (may impact performance)</flag>
58 + <flag name="parsec-debug-paranoid">Enable extra paranoid checks (may impact performance)</flag>
59 + <flag name="parsec-dist-collectives">Use optimized asynchronous operations where collective communication pattern is detected</flag>
60 + <flag name="parsec-dist-priorities">Favor the communications that unlock the most prioritary tasks</flag>
61 + <flag name="parsec-dist-thread">Use an extra thread to progress the data movements</flag>
62 + <flag name="parsec-prof-active-arena-set">Enable the profiling of active arena set to track memory usage of parsec handles</flag>
63 + <flag name="parsec-prof-btf">Force PaRSEC Binary Tracing Format to be the profiling system</flag>
64 + <flag name="parsec-prof-dry-body">Disable calls to the actual bodies, no computation is performed</flag>
65 + <flag name="parsec-prof-dry-dep">Disable calls to the actual data transport, remote dependencies are notified, but no data movement takes place</flag>
66 + <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>
67 + <flag name="parsec-prof-grapher">Enable the generation of the dot graph representation during execution</flag>
68 + <flag name="parsec-prof-mmap">Use MMAP to create the profile files</flag>
69 + <flag name="parsec-prof-otf2">Force otf2 to be the profiling system</flag>
70 + <flag name="parsec-prof-pins">Enable the use of the PaRSEC callback instrumentation system</flag>
71 + <flag name="parsec-prof-ptg">Generate Profiling traces for the internal_init tasks in the PTG interface</flag>
72 + <flag name="parsec-prof-rusage">Print the rusage per execution unit for each progress</flag>
73 + <flag name="parsec-prof-scheduling-events">Enable the tracing of fine-grained scheduling details during execution</flag>
74 + <!--<flag name="parsec-prof-tau">Experimental usage of TAU profiling framework</flag>-->
75 + <flag name="parsec-prof-thread">Use a Helper Thread to create the profile files</flag>
76 + <flag name="sim">Enable the computation of the critical path, through simulation</flag>
77 + <flag name="tools">Build the helper tools such as the pre-compilers, profiling manipulation and so on</flag>
78 + </use>
79 +</pkgmetadata>
80
81 diff --git a/sys-cluster/parsec/parsec-3.0.2012.ebuild b/sys-cluster/parsec/parsec-3.0.2012.ebuild
82 new file mode 100644
83 index 000000000..e53053f51
84 --- /dev/null
85 +++ b/sys-cluster/parsec/parsec-3.0.2012.ebuild
86 @@ -0,0 +1,130 @@
87 +# Copyright 1999-2021 Gentoo Authors
88 +# Distributed under the terms of the GNU General Public License v2
89 +
90 +EAPI="7"
91 +
92 +DOCS_BUILDER="doxygen"
93 +DOCS_DIR="docs/doxygen"
94 +
95 +inherit cmake fortran-2 docs
96 +
97 +DESCRIPTION="Parallel Runtime Scheduler and Execution Controller for micro-tasks on distributed heterogeneous systems"
98 +HOMEPAGE="https://bitbucket.org/icldistcomp/parsec"
99 +SRC_URI="https://bitbucket.org/icldistcomp/parsec/get/${P}.tar.bz2"
100 +
101 +LICENSE="BSD"
102 +SLOT="0"
103 +KEYWORDS="~amd64"
104 +IUSE_PARSEC_DEBUG="
105 + parsec-debug-history
106 + parsec-debug-mem-addr
107 + parsec-debug-mem-leak
108 + parsec-debug-mem-race
109 + parsec-debug-noisier
110 + parsec-debug-paranoid
111 +"
112 +IUSE_PARSEC_DIST="
113 + +parsec-dist-collectives
114 + +parsec-dist-priorities
115 + +parsec-dist-thread
116 +"
117 +IUSE_PARSEC_PROF="
118 + parsec-prof-active-arena-set
119 + parsec-prof-btf
120 + parsec-prof-dry-body
121 + parsec-prof-dry-dep
122 + parsec-prof-dry-run
123 + parsec-prof-grapher
124 + +parsec-prof-mmap
125 + parsec-prof-otf2
126 + parsec-prof-pins
127 + parsec-prof-ptg
128 + parsec-prof-rusage
129 + parsec-prof-scheduling-events
130 + +parsec-prof-thread
131 +"
132 +IUSE_EXPAND="PARSEC_DEBUG PARSEC_DIST PARSEC_PROF"
133 +IUSE="${IUSE_PARSEC_DEBUG} ${IUSE_PARSEC_DIST} ${IUSE_PARSEC_PROF} +cxx +devel-headers fortran +home-config-files +mpi +sched-deps-mask sim test +tools"
134 +
135 +#TODO: gd vite
136 +RDEPEND="
137 + dev-util/valgrind
138 + sys-apps/hwloc
139 + sys-cluster/temanejo
140 + mpi? ( virtual/mpi )
141 + parsec-prof-otf2? ( sys-cluster/otf2 )
142 + parsec-prof-pins? ( dev-libs/papi )
143 +"
144 +DEPEND="${RDEPEND}"
145 +BDEPEND="
146 + sys-devel/bison
147 + sys-devel/flex
148 +"
149 +
150 +RESTRICT="!test? ( test )"
151 +REQUIRED_USE="
152 + ?? ( mpi sim )
153 + ?? ( parsec-debug-mem-addr parsec-debug-mem-leak parsec-debug-mem-race )
154 + ?? ( parsec-prof-btf parsec-prof-otf2 )
155 +"
156 +
157 +pkg_setup() {
158 + fortran-2_pkg_setup
159 +}
160 +
161 +src_configure() {
162 + local trace="Auto"
163 + use parsec-prof-btf && trace="PaRSEC Binary Tracing Format"
164 + use parsec-prof-otf2 && trace="OTF2"
165 +
166 + local mycmakeargs=(
167 + -DBUILD_SHARED_LIBS=ON
168 + -DPARSEC_GPU_CUDA_ALLOC_PER_TILE=OFF
169 + -DPARSEC_GPU_WITH_CUDA=OFF
170 + -DPARSEC_GPU_WITH_OPENCL=OFF
171 + -DPARSEC_PROF_TAU=OFF
172 +
173 + -DBUILD_TOOLS=$(usex tools)
174 + -DPARSEC_DEBUG_HISTORY=$(usex parsec-debug-history)
175 + -DPARSEC_DEBUG=$(usex debug)
176 + -DPARSEC_DEBUG_MEM_ADDR=$(usex parsec-debug-mem-addr)
177 + -DPARSEC_DEBUG_MEM_LEAK=$(usex parsec-debug-mem-leak)
178 + -DPARSEC_DEBUG_MEM_RACE=$(usex parsec-debug-mem-race)
179 + -DPARSEC_DEBUG_NOISIER=$(usex parsec-debug-noisier)
180 + -DPARSEC_DEBUG_PARANOID=$(usex parsec-debug-paranoid)
181 + -DPARSEC_DIST_COLLECTIVES=$(usex parsec-dist-collectives)
182 + -DPARSEC_DIST_PRIORITIES=$(usex parsec-dist-priorities)
183 + -DPARSEC_DIST_THREAD=$(usex parsec-dist-thread)
184 + -DPARSEC_DIST_WITH_MPI=$(usex mpi)
185 + -DPARSEC_SCHED_DEPS_MASK=$(usex sched-deps-mask)
186 + -DPARSEC_SIM=$(usex sim)
187 + -DPARSEC_PROF_DRY_BODY=$(usex parser-prof-dry-body)
188 + -DPARSEC_PROF_DRY_DEP=$(usex parser-prof-dry-dep)
189 + -DPARSEC_PROF_DRY_RUN=$(usex parser-prof-dry-run)
190 + -DPARSEC_PROF_GRAPHER=$(usex parser-prof-grapher)
191 + -DPARSEC_PROF_PINS=$(usex parser-prof-pins)
192 + -DPARSEC_PROF_RUSAGE_EU=$(usex parser-prof-rusage)
193 + -DPARSEC_PROF_TRACE=$(usex profile)
194 + -DPARSEC_PROF_TRACE_ACTIVE_ARENA_SET=$(usex parser-prof-active-arena-set)
195 + -DPARSEC_PROF_TRACE_PTG_INTERNAL_INIT=$(usex parser-prof-ptg)
196 + -DPARSEC_PROF_TRACE_SCHEDULING_EVENTS=$(usex parser-prof-scheduling-events)
197 + -DPARSEC_PROF_TRACE_SYSTEM=${trace}
198 + -DPARSEC_PROFILING_USE_HELPER_THREAD=$(usex parser-prof-thread)
199 + -DPARSEC_PROFILING_USE_MMAP=$(usex parser-prof-mmap)
200 + -DPARSEC_WANT_HOME_CONFIG_FILES=$(usex home-config-files)
201 + -DPARSEC_WITH_DEVEL_HEADERS=$(usex devel-headers)
202 + -DSUPPORT_CXX=$(usex cxx)
203 + -DSUPPORT_FORTRAN=$(usex fortran)
204 + )
205 + cmake_src_configure
206 +}
207 +
208 +src_compile() {
209 + cmake_src_compile
210 + docs_compile
211 +}
212 +
213 +src_install() {
214 + cmake_src_install
215 + einstalldocs
216 +}