[all-commits] [llvm/llvm-project] 8ef460: [llvm-reduce] Add parallel chunk processing.

Florian Hahn via All-commits all-commits at lists.llvm.org
Wed Nov 24 01:24:18 PST 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8ef460fc5137816c0bcc9ec471e7d60d3cc2f5ee
      https://github.com/llvm/llvm-project/commit/8ef460fc5137816c0bcc9ec471e7d60d3cc2f5ee
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2021-11-24 (Wed, 24 Nov 2021)

  Changed paths:
    M llvm/test/tools/llvm-reduce/operands-skip.ll
    M llvm/tools/llvm-reduce/CMakeLists.txt
    M llvm/tools/llvm-reduce/deltas/Delta.cpp

  Log Message:
  -----------
  [llvm-reduce] Add parallel chunk processing.

This patch adds parallel processing of chunks. When reducing very large
inputs, e.g. functions with 500k basic blocks, processing chunks in
parallel can significantly speed up the reduction.

To allow modifying clones of the original module in parallel, each clone
needs their own LLVMContext object. To achieve this, each job parses the
input module with their own LLVMContext. In case a job successfully
reduced the input, it serializes the result module as bitcode into a
result array.

To ensure parallel reduction produces the same results as serial
reduction, only the first successfully reduced result is used, and
results of other successful jobs are dropped. Processing resumes after
the chunk that was successfully reduced.

The number of threads to use can be configured using the -j option.
It defaults to 1, which means serial processing.

Reviewed By: Meinersbur

Differential Revision: https://reviews.llvm.org/D113857




More information about the All-commits mailing list