[all-commits] [llvm/llvm-project] 86ad0a: [mlir:Async] Implement recursive async work splitt...
Eugene Zhulenev via All-commits
all-commits at lists.llvm.org
Fri Jun 25 10:34:53 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 86ad0af87054c3cccd68d32e103a6f1f6c6194c7
https://github.com/llvm/llvm-project/commit/86ad0af87054c3cccd68d32e103a6f1f6c6194c7
Author: Eugene Zhulenev <ezhulenev at google.com>
Date: 2021-06-25 (Fri, 25 Jun 2021)
Changed paths:
M mlir/include/mlir/Dialect/Async/Passes.h
M mlir/include/mlir/Dialect/Async/Passes.td
M mlir/lib/Dialect/Async/Transforms/AsyncParallelFor.cpp
A mlir/test/Dialect/Async/async-parallel-for-async-dispatch.mlir
A mlir/test/Dialect/Async/async-parallel-for-seq-dispatch.mlir
R mlir/test/Dialect/Async/async-parallel-for.mlir
M mlir/test/Integration/Dialect/Async/CPU/microbench-linalg-async-parallel-for.mlir
A mlir/test/Integration/Dialect/Async/CPU/microbench-scf-async-parallel-for.mlir
M mlir/test/Integration/Dialect/Async/CPU/test-async-parallel-for-1d.mlir
M mlir/test/Integration/Dialect/Async/CPU/test-async-parallel-for-2d.mlir
Log Message:
-----------
[mlir:Async] Implement recursive async work splitting for scf.parallel operation (async-parallel-for pass)
Depends On D104780
Recursive work splitting instead of sequential async tasks submission gives ~20%-30% speedup in microbenchmarks.
Algorithm outline:
1. Collapse scf.parallel dimensions into a single dimension
2. Compute the block size for the parallel operations from the 1d problem size
3. Launch parallel tasks
4. Each parallel task reconstructs its own bounds in the original multi-dimensional iteration space
5. Each parallel task computes the original parallel operation body using scf.for loop nest
Reviewed By: herhut
Differential Revision: https://reviews.llvm.org/D104850
More information about the All-commits
mailing list