-
Notifications
You must be signed in to change notification settings - Fork 12.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TosaToLinalg: Allow to skip the TOSA validation pass #91742
Conversation
@llvm/pr-subscribers-mlir-linalg Author: Matthias Gehre (mgehre-amd) ChangesFull diff: https://github.com/llvm/llvm-project/pull/91742.diff 2 Files Affected:
diff --git a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h
index 5fd77c8a0211a..e1d0199dac447 100644
--- a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h
+++ b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h
@@ -38,7 +38,7 @@ void addTosaToLinalgPasses(
const TosaToLinalgNamedOptions &tosaToLinalgNamedOptions =
TosaToLinalgNamedOptions(),
// Note: Default to 'none' level unless otherwise specified.
- tosa::TosaValidationOptions const &validationOptions = {
+ std::optional<tosa::TosaValidationOptions> validationOptions = tosa::TosaValidationOptions{
tosa::TosaProfileEnum::Undefined, false, tosa::TosaLevelEnum::None});
/// Populates TOSA to linalg pipelines
diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp
index ad7f6cf84e5ed..8904e3253922c 100644
--- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp
+++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp
@@ -78,7 +78,7 @@ std::unique_ptr<Pass> mlir::tosa::createTosaToLinalg() {
void mlir::tosa::addTosaToLinalgPasses(
OpPassManager &pm, const TosaToLinalgOptions &options,
const TosaToLinalgNamedOptions &tosaToLinalgNamedOptions,
- tosa::TosaValidationOptions const &validationOptions) {
+ std::optional<tosa::TosaValidationOptions> validationOptions) {
// Optional decompositions are designed to benefit linalg.
if (!options.disableTosaDecompositions)
pm.addNestedPass<func::FuncOp>(tosa::createTosaOptionalDecompositions());
@@ -93,7 +93,8 @@ void mlir::tosa::addTosaToLinalgPasses(
pm.addNestedPass<func::FuncOp>(tosa::createTosaLayerwiseConstantFoldPass(
{options.aggressiveReduceConstant}));
pm.addNestedPass<func::FuncOp>(tosa::createTosaMakeBroadcastablePass());
- pm.addPass(tosa::createTosaValidation(validationOptions));
+ if (validationOptions)
+ pm.addPass(tosa::createTosaValidation(*validationOptions));
pm.addNestedPass<func::FuncOp>(tosa::createTosaToLinalg());
}
@@ -110,11 +111,12 @@ void mlir::tosa::registerTosaToLinalgPipelines() {
[](OpPassManager &pm) {
TosaToLinalgOptions tosaToLinalgOptions;
TosaToLinalgNamedOptions tosaToLinalgNamedOptions;
+ TosaValidationOptions validationOptions;
+ validationOptions.profile = tosa::TosaProfileEnum::BaseInference;
+ validationOptions.StrictOperationSpecAlignment = true;
+ validationOptions.level = tosa::TosaLevelEnum::EightK;
tosa::addTosaToLinalgPasses(pm, tosaToLinalgOptions,
tosaToLinalgNamedOptions,
- /* validationOptions = */
- {tosa::TosaProfileEnum::BaseInference,
- /* StrictOperationSpecAlignment = */ true,
- tosa::TosaLevelEnum::EightK});
+ validationOptions);
});
}
|
@llvm/pr-subscribers-mlir Author: Matthias Gehre (mgehre-amd) ChangesFull diff: https://github.com/llvm/llvm-project/pull/91742.diff 2 Files Affected:
diff --git a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h
index 5fd77c8a0211a..e1d0199dac447 100644
--- a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h
+++ b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h
@@ -38,7 +38,7 @@ void addTosaToLinalgPasses(
const TosaToLinalgNamedOptions &tosaToLinalgNamedOptions =
TosaToLinalgNamedOptions(),
// Note: Default to 'none' level unless otherwise specified.
- tosa::TosaValidationOptions const &validationOptions = {
+ std::optional<tosa::TosaValidationOptions> validationOptions = tosa::TosaValidationOptions{
tosa::TosaProfileEnum::Undefined, false, tosa::TosaLevelEnum::None});
/// Populates TOSA to linalg pipelines
diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp
index ad7f6cf84e5ed..8904e3253922c 100644
--- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp
+++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp
@@ -78,7 +78,7 @@ std::unique_ptr<Pass> mlir::tosa::createTosaToLinalg() {
void mlir::tosa::addTosaToLinalgPasses(
OpPassManager &pm, const TosaToLinalgOptions &options,
const TosaToLinalgNamedOptions &tosaToLinalgNamedOptions,
- tosa::TosaValidationOptions const &validationOptions) {
+ std::optional<tosa::TosaValidationOptions> validationOptions) {
// Optional decompositions are designed to benefit linalg.
if (!options.disableTosaDecompositions)
pm.addNestedPass<func::FuncOp>(tosa::createTosaOptionalDecompositions());
@@ -93,7 +93,8 @@ void mlir::tosa::addTosaToLinalgPasses(
pm.addNestedPass<func::FuncOp>(tosa::createTosaLayerwiseConstantFoldPass(
{options.aggressiveReduceConstant}));
pm.addNestedPass<func::FuncOp>(tosa::createTosaMakeBroadcastablePass());
- pm.addPass(tosa::createTosaValidation(validationOptions));
+ if (validationOptions)
+ pm.addPass(tosa::createTosaValidation(*validationOptions));
pm.addNestedPass<func::FuncOp>(tosa::createTosaToLinalg());
}
@@ -110,11 +111,12 @@ void mlir::tosa::registerTosaToLinalgPipelines() {
[](OpPassManager &pm) {
TosaToLinalgOptions tosaToLinalgOptions;
TosaToLinalgNamedOptions tosaToLinalgNamedOptions;
+ TosaValidationOptions validationOptions;
+ validationOptions.profile = tosa::TosaProfileEnum::BaseInference;
+ validationOptions.StrictOperationSpecAlignment = true;
+ validationOptions.level = tosa::TosaLevelEnum::EightK;
tosa::addTosaToLinalgPasses(pm, tosaToLinalgOptions,
tosaToLinalgNamedOptions,
- /* validationOptions = */
- {tosa::TosaProfileEnum::BaseInference,
- /* StrictOperationSpecAlignment = */ true,
- tosa::TosaLevelEnum::EightK});
+ validationOptions);
});
}
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
99fcd75
to
d60cdbe
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
Allow to skip running the TOSA validation pass when spec conformance is not required.