MLIR  16.0.0git
Transforms.h
Go to the documentation of this file.
1 //===- Transforms.h - Async dialect transformation utilities ----*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This header file defines transformations on Async operations.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef MLIR_DIALECT_ASYNC_TRANSFORMS_H_
14 #define MLIR_DIALECT_ASYNC_TRANSFORMS_H_
15 
18 
19 namespace mlir {
20 namespace async {
21 
22 /// Emit the IR to compute the minimum number of iterations of scf.parallel body
23 /// that would be viable for a single parallel task. Allows the user to avoid
24 /// incurring the overheads of spawning costly parallel tasks in absence of
25 /// sufficient amount of parallelizable work.
26 ///
27 /// Must return an index type.
29  std::function<Value(ImplicitLocOpBuilder, scf::ParallelOp)>;
30 
31 /// Add a pattern to the given pattern list to lower scf.parallel to async
32 /// operations.
34  RewritePatternSet &patterns, bool asyncDispatch, int32_t numWorkerThreads,
35  const AsyncMinTaskSizeComputationFunction &computeMinTaskSize);
36 
37 } // namespace async
38 } // namespace mlir
39 
40 #endif // MLIR_DIALECT_ASYNC_TRANSFORMS_H_
Include the generated interface declarations.
std::function< Value(ImplicitLocOpBuilder, scf::ParallelOp)> AsyncMinTaskSizeComputationFunction
Emit the IR to compute the minimum number of iterations of scf.parallel body that would be viable for...
Definition: Transforms.h:29
void populateAsyncParallelForPatterns(RewritePatternSet &patterns, bool asyncDispatch, int32_t numWorkerThreads, const AsyncMinTaskSizeComputationFunction &computeMinTaskSize)
Add a pattern to the given pattern list to lower scf.parallel to async operations.