[DynInst_API:] [dyninst/dyninst] f83cf2: Add CodeObject::parse overloads to accept multiple...


Date: Fri, 01 Mar 2024 12:27:34 -0800
From: Kirill Batuzov <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] f83cf2: Add CodeObject::parse overloads to accept multiple...
  Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: f83cf2135a345856317eeaf5212901dac229f579
      https://github.com/dyninst/dyninst/commit/f83cf2135a345856317eeaf5212901dac229f579
  Author: Kirill Batuzov <43408219+batuzovk@xxxxxxxxxxxxxxxxxxxxxxxx>
  Date:   2024-03-01 (Fri, 01 Mar 2024)

  Changed paths:
    M parseAPI/h/CodeObject.h
    M parseAPI/src/CodeObject.C
    M parseAPI/src/Parser.C
    M parseAPI/src/Parser.h

  Log Message:
  -----------
  Add CodeObject::parse overloads to accept multiple targets

Parser::parse_at takes only one target at a time. This has two repercussions:

  1) It can't take full advantage of parallel parsing when there are multiple targets in need of it.

 2)  It still enters and exits OMP parallel loop. This operation has its own performance overhead that
    depends on the host system (number of processors and OMP configuration). This overhead can be very significant.

This change introduces Parser::parse_vec that takes a vector of targets and parses them in parallel.

When there are significant number of parse_at calls, performance gains from migrating to parse_vec can be huge. Parsing what initial parse() missed in libLLVM-12.so.1 with parse_at took nearly 20 minutes on 4-core hyper-threaded
CPU. Doing the same with parse_vec took less than 4 minutes. On 128-bit ARM64 server we've seen even bigger gains
(from around 40 minutes to less than 3).

Co-authored-by: Kirill Batuzov <kirill.batuzov1@xxxxxxxxxx>



To unsubscribe from these emails, change your notification settings at https://github.com/dyninst/dyninst/settings/notifications
[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] f83cf2: Add CodeObject::parse overloads to accept multiple..., Kirill Batuzov <=