Files
clang-p2996/mlir/test/lib/Transforms/TestGpuParallelLoopMapping.cpp
Stephan Herhut 7a7eacc797 [MLIR][GPU] Implement a simple greedy loop mapper.
Summary:
The mapper assigns annotations to loop.parallel operations that
are compatible with the loop to gpu mapping pass. The outermost
loop uses the grid dimensions, followed by block dimensions. All
remaining loops are mapped to sequential loops.

Differential Revision: https://reviews.llvm.org/D74963
2020-02-25 11:42:42 +01:00

39 lines
1.3 KiB
C++

//===- TestGPUParallelLoopMapping.cpp - Test pass for GPU loop mapping ----===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This file implements the pass testing the utilities for mapping parallel
// loops to gpu hardware ids.
//
//===----------------------------------------------------------------------===//
#include "mlir/Dialect/GPU/ParallelLoopMapper.h"
#include "mlir/Pass/Pass.h"
using namespace mlir;
namespace {
/// Simple pass for testing the mapping of parallel loops to hardware ids using
/// a greedy mapping stratgegy.
class TestGpuGreedyParallelLoopMappingPass
: public OperationPass<TestGpuGreedyParallelLoopMappingPass, FuncOp> {
void runOnOperation() override {
Operation *op = getOperation();
for (Region &region : op->getRegions())
greedilyMapParallelLoopsToGPU(region);
}
};
} // end namespace
namespace mlir {
void registerTestGpuParallelLoopMappingPass() {
PassRegistration<TestGpuGreedyParallelLoopMappingPass> registration(
"test-gpu-greedy-parallel-loop-mapping",
"Greedily maps all parallel loops to gpu hardware ids.");
}
} // namespace mlir