Skip to content

Commit 9a08f76

Browse files
committed
[mlir] Make JitRunnerMain main take a DialectRegistry
Historically, JitRunner has been registering all available dialects with the context and depending on them without the real need. Make it take a registry that contains only the dialects that are expected in the input and stop linking in all dialects. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D96436
1 parent 81a9707 commit 9a08f76

File tree

12 files changed

+63
-27
lines changed

12 files changed

+63
-27
lines changed

mlir/include/mlir/ExecutionEngine/JitRunner.h

+7-3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class MangleAndInterner;
3232

3333
namespace mlir {
3434

35+
class DialectRegistry;
3536
class ModuleOp;
3637
struct LogicalResult;
3738

@@ -51,9 +52,12 @@ struct JitRunnerConfig {
5152
runtimesymbolMap = nullptr;
5253
};
5354

54-
// Entry point for all CPU runners. Expects the common argc/argv arguments for
55-
// standard C++ main functions.
56-
int JitRunnerMain(int argc, char **argv, JitRunnerConfig config = {});
55+
/// Entry point for all CPU runners. Expects the common argc/argv arguments for
56+
/// standard C++ main functions. The supplied dialect registry is expected to
57+
/// contain any registers that appear in the input IR, they will be loaded
58+
/// on-demand by the parser.
59+
int JitRunnerMain(int argc, char **argv, const DialectRegistry &registry,
60+
JitRunnerConfig config = {});
5761

5862
} // namespace mlir
5963

mlir/lib/ExecutionEngine/JitRunner.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
#include "mlir/ExecutionEngine/OptUtils.h"
2222
#include "mlir/IR/BuiltinTypes.h"
2323
#include "mlir/IR/MLIRContext.h"
24-
#include "mlir/InitAllDialects.h"
2524
#include "mlir/Parser.h"
2625
#include "mlir/Support/FileUtilities.h"
2726

@@ -299,7 +298,8 @@ Error compileAndExecuteSingleReturnFunction(Options &options, ModuleOp module,
299298

300299
/// Entry point for all CPU runners. Expects the common argc/argv arguments for
301300
/// standard C++ main functions.
302-
int mlir::JitRunnerMain(int argc, char **argv, JitRunnerConfig config) {
301+
int mlir::JitRunnerMain(int argc, char **argv, const DialectRegistry &registry,
302+
JitRunnerConfig config) {
303303
// Create the options struct containing the command line options for the
304304
// runner. This must come before the command line options are parsed.
305305
Options options;
@@ -330,8 +330,7 @@ int mlir::JitRunnerMain(int argc, char **argv, JitRunnerConfig config) {
330330
}
331331
}
332332

333-
MLIRContext context;
334-
registerAllDialects(context);
333+
MLIRContext context(registry);
335334

336335
auto m = parseMLIRInput(options.inputFilename, &context);
337336
if (!m) {

mlir/tools/mlir-cpu-runner/CMakeLists.txt

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@ add_llvm_tool(mlir-cpu-runner
99
mlir-cpu-runner.cpp
1010
)
1111
llvm_update_compile_flags(mlir-cpu-runner)
12-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
1312
target_link_libraries(mlir-cpu-runner PRIVATE
14-
${dialect_libs}
1513
MLIRAnalysis
1614
MLIREDSC
1715
MLIRExecutionEngine
1816
MLIRIR
1917
MLIRJitRunner
2018
MLIRLLVMIR
19+
MLIROpenMP
2120
MLIRParser
2221
MLIRTargetLLVMIR
2322
MLIRSupport

mlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@
1212
//
1313
//===----------------------------------------------------------------------===//
1414

15+
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
16+
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
1517
#include "mlir/ExecutionEngine/JitRunner.h"
1618
#include "mlir/ExecutionEngine/OptUtils.h"
17-
#include "mlir/InitAllDialects.h"
19+
#include "mlir/IR/Dialect.h"
1820
#include "llvm/Support/InitLLVM.h"
1921
#include "llvm/Support/TargetSelect.h"
2022

@@ -25,5 +27,7 @@ int main(int argc, char **argv) {
2527
llvm::InitializeNativeTargetAsmParser();
2628
mlir::initializeLLVMPasses();
2729

28-
return mlir::JitRunnerMain(argc, argv);
30+
mlir::DialectRegistry registry;
31+
registry.insert<mlir::LLVM::LLVMDialect, mlir::omp::OpenMPDialect>();
32+
return mlir::JitRunnerMain(argc, argv, registry);
2933
}

mlir/tools/mlir-cuda-runner/CMakeLists.txt

+5-2
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,20 @@ if(MLIR_CUDA_RUNNER_ENABLED)
4242
${CUDA_RUNTIME_LIBRARY}
4343
)
4444

45-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
4645
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
4746
set(LIBS
48-
${dialect_libs}
4947
${conversion_libs}
5048
MLIRJitRunner
5149
MLIRAnalysis
50+
MLIRAsync
5251
MLIREDSC
5352
MLIRExecutionEngine
53+
MLIRGPU
5454
MLIRIR
55+
MLIRLLVMIR
56+
MLIRNVVMIR
5557
MLIRParser
58+
MLIRStandard
5659
MLIRSupport
5760
MLIRTargetLLVMIR
5861
MLIRTargetNVVMIR

mlir/tools/mlir-cuda-runner/mlir-cuda-runner.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,16 @@
1919
#include "mlir/Conversion/GPUToNVVM/GPUToNVVMPass.h"
2020
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h"
2121
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
22+
#include "mlir/Dialect/Async/IR/Async.h"
2223
#include "mlir/Dialect/Async/Passes.h"
2324
#include "mlir/Dialect/GPU/GPUDialect.h"
2425
#include "mlir/Dialect/GPU/Passes.h"
2526
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
2627
#include "mlir/Dialect/LLVMIR/NVVMDialect.h"
28+
#include "mlir/Dialect/StandardOps/IR/Ops.h"
2729
#include "mlir/ExecutionEngine/JitRunner.h"
2830
#include "mlir/ExecutionEngine/OptUtils.h"
2931
#include "mlir/IR/BuiltinOps.h"
30-
#include "mlir/InitAllDialects.h"
3132
#include "mlir/Pass/Pass.h"
3233
#include "mlir/Pass/PassManager.h"
3334
#include "mlir/Target/NVVMIR.h"
@@ -149,5 +150,10 @@ int main(int argc, char **argv) {
149150
mlir::JitRunnerConfig jitRunnerConfig;
150151
jitRunnerConfig.mlirTransformer = runMLIRPasses;
151152

152-
return mlir::JitRunnerMain(argc, argv, jitRunnerConfig);
153+
mlir::DialectRegistry registry;
154+
registry.insert<mlir::LLVM::LLVMDialect, mlir::NVVM::NVVMDialect,
155+
mlir::async::AsyncDialect, mlir::gpu::GPUDialect,
156+
mlir::StandardOpsDialect>();
157+
158+
return mlir::JitRunnerMain(argc, argv, registry, jitRunnerConfig);
153159
}

mlir/tools/mlir-rocm-runner/CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,8 @@ if(MLIR_ROCM_RUNNER_ENABLED)
6565
${ROCM_RUNTIME_LIBRARY}
6666
)
6767

68-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
6968
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
7069
set(LIBS
71-
${dialect_libs}
7270
${conversion_libs}
7371
lldCommon
7472
lldDriver
@@ -77,9 +75,12 @@ if(MLIR_ROCM_RUNNER_ENABLED)
7775
MLIRAnalysis
7876
MLIREDSC
7977
MLIRExecutionEngine
78+
MLIRGPU
8079
MLIRIR
80+
MLIRLLVMIR
8181
MLIRParser
8282
MLIRROCDLIR
83+
MLIRStandard
8384
MLIRSupport
8485
MLIRTargetLLVMIR
8586
MLIRTargetROCDLIR

mlir/tools/mlir-rocm-runner/mlir-rocm-runner.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
#include "mlir/Dialect/GPU/Passes.h"
2424
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
2525
#include "mlir/Dialect/LLVMIR/ROCDLDialect.h"
26+
#include "mlir/Dialect/StandardOps/IR/Ops.h"
2627
#include "mlir/ExecutionEngine/JitRunner.h"
2728
#include "mlir/ExecutionEngine/OptUtils.h"
2829
#include "mlir/IR/BuiltinOps.h"
29-
#include "mlir/InitAllDialects.h"
3030
#include "mlir/Pass/Pass.h"
3131
#include "mlir/Pass/PassManager.h"
3232
#include "mlir/Support/FileUtilities.h"
@@ -337,5 +337,9 @@ int main(int argc, char **argv) {
337337
mlir::JitRunnerConfig jitRunnerConfig;
338338
jitRunnerConfig.mlirTransformer = runMLIRPasses;
339339

340-
return mlir::JitRunnerMain(argc, argv, jitRunnerConfig);
340+
mlir::DialectRegistry registry;
341+
registry.insert<mlir::LLVM::LLVMDialect, mlir::gpu::GPUDialect,
342+
mlir::ROCDL::ROCDLDialect, mlir::StandardOpsDialect>();
343+
344+
return mlir::JitRunnerMain(argc, argv, registry, jitRunnerConfig);
341345
}

mlir/tools/mlir-spirv-cpu-runner/CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,19 @@ if (MLIR_SPIRV_CPU_RUNNER_ENABLED)
1212
llvm_update_compile_flags(mlir-spirv-cpu-runner)
1313

1414
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
15-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
1615

1716
target_link_libraries(mlir-spirv-cpu-runner PRIVATE
1817
${conversion_libs}
19-
${dialect_libs}
2018
MLIRAnalysis
2119
MLIREDSC
2220
MLIRExecutionEngine
21+
MLIRGPU
2322
MLIRIR
2423
MLIRJitRunner
2524
MLIRLLVMIR
2625
MLIRParser
26+
MLIRSPIRV
27+
MLIRStandard
2728
MLIRTargetLLVMIR
2829
MLIRTransforms
2930
MLIRTranslation

mlir/tools/mlir-spirv-cpu-runner/mlir-spirv-cpu-runner.cpp

+9-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515
#include "mlir/Conversion/GPUToSPIRV/GPUToSPIRVPass.h"
1616
#include "mlir/Conversion/SPIRVToLLVM/SPIRVToLLVMPass.h"
1717
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
18+
#include "mlir/Dialect/GPU/GPUDialect.h"
1819
#include "mlir/Dialect/GPU/Passes.h"
20+
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
21+
#include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h"
1922
#include "mlir/Dialect/SPIRV/IR/SPIRVOps.h"
2023
#include "mlir/Dialect/SPIRV/Transforms/Passes.h"
24+
#include "mlir/Dialect/StandardOps/IR/Ops.h"
2125
#include "mlir/ExecutionEngine/JitRunner.h"
2226
#include "mlir/ExecutionEngine/OptUtils.h"
23-
#include "mlir/InitAllDialects.h"
2427
#include "mlir/Pass/Pass.h"
2528
#include "mlir/Pass/PassManager.h"
2629
#include "mlir/Target/LLVMIR.h"
@@ -90,5 +93,9 @@ int main(int argc, char **argv) {
9093
jitRunnerConfig.mlirTransformer = runMLIRPasses;
9194
jitRunnerConfig.llvmModuleBuilder = convertMLIRModule;
9295

93-
return mlir::JitRunnerMain(argc, argv, jitRunnerConfig);
96+
mlir::DialectRegistry registry;
97+
registry.insert<mlir::LLVM::LLVMDialect, mlir::gpu::GPUDialect,
98+
mlir::spirv::SPIRVDialect, mlir::StandardOpsDialect>();
99+
100+
return mlir::JitRunnerMain(argc, argv, registry, jitRunnerConfig);
94101
}

mlir/tools/mlir-vulkan-runner/CMakeLists.txt

+3-2
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,20 @@ if (MLIR_VULKAN_RUNNER_ENABLED)
5252
${Vulkan_LIBRARY}
5353
)
5454

55-
get_property(dialect_libs GLOBAL PROPERTY MLIR_DIALECT_LIBS)
5655
get_property(conversion_libs GLOBAL PROPERTY MLIR_CONVERSION_LIBS)
5756
set(LIBS
58-
${dialect_libs}
5957
${conversion_libs}
6058
MLIRAnalysis
6159
MLIREDSC
6260
MLIRExecutionEngine
61+
MLIRGPU
6362
MLIRIR
6463
MLIRJitRunner
6564
MLIRLLVMIR
6665
MLIRParser
66+
MLIRSPIRV
6767
MLIRSPIRVTransforms
68+
MLIRStandard
6869
MLIRSupport
6970
MLIRTargetLLVMIR
7071
MLIRTransforms

mlir/tools/mlir-vulkan-runner/mlir-vulkan-runner.cpp

+9-2
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616
#include "mlir/Conversion/GPUToVulkan/ConvertGPUToVulkanPass.h"
1717
#include "mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h"
1818
#include "mlir/Conversion/StandardToSPIRV/StandardToSPIRVPass.h"
19+
#include "mlir/Dialect/GPU/GPUDialect.h"
1920
#include "mlir/Dialect/GPU/Passes.h"
21+
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
22+
#include "mlir/Dialect/SPIRV/IR/SPIRVDialect.h"
2023
#include "mlir/Dialect/SPIRV/IR/SPIRVOps.h"
2124
#include "mlir/Dialect/SPIRV/Transforms/Passes.h"
25+
#include "mlir/Dialect/StandardOps/IR/Ops.h"
2226
#include "mlir/ExecutionEngine/JitRunner.h"
2327
#include "mlir/ExecutionEngine/OptUtils.h"
24-
#include "mlir/InitAllDialects.h"
2528
#include "mlir/Pass/Pass.h"
2629
#include "mlir/Pass/PassManager.h"
2730
#include "llvm/Support/InitLLVM.h"
@@ -61,5 +64,9 @@ int main(int argc, char **argv) {
6164
mlir::JitRunnerConfig jitRunnerConfig;
6265
jitRunnerConfig.mlirTransformer = runMLIRPasses;
6366

64-
return mlir::JitRunnerMain(argc, argv, jitRunnerConfig);
67+
mlir::DialectRegistry registry;
68+
registry.insert<mlir::LLVM::LLVMDialect, mlir::gpu::GPUDialect,
69+
mlir::spirv::SPIRVDialect, mlir::StandardOpsDialect>();
70+
71+
return mlir::JitRunnerMain(argc, argv, registry, jitRunnerConfig);
6572
}

0 commit comments

Comments
 (0)