This is the mail archive of the
elfutils-devel@sourceware.org
mailing list for the elfutils project.
[Bug libdw/22252] New: Parallel parsing of CU's DIEs from libdw
- From: "woodard at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: elfutils-devel at sourceware dot org
- Date: Wed, 04 Oct 2017 18:22:55 +0000
- Subject: [Bug libdw/22252] New: Parallel parsing of CU's DIEs from libdw
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=22252
Bug ID: 22252
Summary: Parallel parsing of CU's DIEs from libdw
Product: elfutils
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: libdw
Assignee: unassigned at sourceware dot org
Reporter: woodard at redhat dot com
CC: elfutils-devel at sourceware dot org
Target Milestone: ---
To speed up the processing of large ELF files which are common in HPC please
resolve the data races which prevent parallel parsing of CU's DIEs within ELF
files. We'd like to do something like:
for(Dwarf_Off cu_off = 0;
dwarf_next_unit(dbg(), cu_off, &next_cu_header, &cu_header_length,
NULL, &abbrev_offset, &addr_size, &offset_size,
&type_signaturep, NULL) == 0;
cu_off = next_cu_header)
{
if(!dwarf_offdie_types(dbg(), cu_off + cu_header_length,
¤t_cu_die))
continue;
// Modified for parallelism: rather than a single DwarfWalker holding state,
// create a new context and clone before we spawn a thread
push();
DwarfWalker mod_walker(*this);
pop();
bool ret = cilk_spawn mod_walker.parseModule(false, fixUnknownMod);
// bool ret = parseModule(false, fixUnknownMod);
if(!ret) {
cilk_sync;
return false;
}
compile_offset = next_cu_header;
}
cilk_sync;
Code similar to this is being worked on for dyninst http://www.dyninst.org/
--
You are receiving this mail because:
You are on the CC list for the bug.