Skip to content
This repository was archived by the owner on Jan 26, 2026. It is now read-only.

Commit aef6309

Browse files
committed
new LLVM, adding openmp parallelization passes
1 parent 6900bf9 commit aef6309

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,12 @@ target_link_libraries(_ddpt_rt PRIVATE
192192
MLIRMemRefDialect
193193
MLIRMemRefToLLVM
194194
MLIRMemRefTransforms
195+
MLIROpenMPDialect
196+
MLIROpenMPToLLVM
197+
MLIROpenMPToLLVMIRTranslation
195198
MLIRReconcileUnrealizedCasts
196199
MLIRSCFDialect
200+
MLIRSCFToOpenMP
197201
MLIRSCFToControlFlow
198202
MLIRSCFTransforms
199203
MLIRShapeDialect

src/jit/mlir.cpp

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@
7777
#include "mlir/Conversion/ReconcileUnrealizedCasts/ReconcileUnrealizedCasts.h"
7878
#include "mlir/ExecutionEngine/ExecutionEngine.h"
7979
#include "mlir/ExecutionEngine/OptUtils.h"
80+
#include "mlir/Target/LLVMIR/Dialect/Builtin/BuiltinToLLVMIRTranslation.h"
8081
#include "mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h"
82+
#include "mlir/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.h"
8183

8284
#include <llvm/Support/raw_sha1_ostream.h>
8385

@@ -341,9 +343,9 @@ std::vector<intptr_t> JIT::run(::mlir::ModuleOp &module,
341343
}
342344
if (cached) {
343345
module = cached;
344-
std::cerr << "using cached module" << std::endl;
346+
// std::cerr << "using cached module" << std::endl;
345347
} else {
346-
std::cerr << "compiling..." << std::endl;
348+
// std::cerr << "compiling..." << std::endl;
347349
cache.push_back(std::make_pair(cksm, module));
348350
}
349351
}
@@ -404,15 +406,18 @@ static const char *pass_pipeline =
404406
"linalg-bufferize,bufferization-bufferize,linalg-detensorize,tensor-"
405407
"bufferize,finalizing-bufferize,convert-linalg-to-parallel-loops),"
406408
"canonicalize,fold-memref-alias-ops,expand-strided-metadata,convert-"
407-
"math-to-funcs,convert-math-to-libm,lower-affine,convert-scf-to-cf,"
408-
"finalize-memref-to-llvm,convert-func-to-llvm,reconcile-unrealized-"
409+
"math-to-funcs,lower-affine,convert-scf-to-cf,"
410+
"finalize-memref-to-llvm,convert-math-to-llvm,convert-func-to-llvm,"
411+
"reconcile-unrealized-"
409412
"casts";
410413
JIT::JIT()
411414
: _context(::mlir::MLIRContext::Threading::DISABLED), _pm(&_context),
412415
_verbose(false) {
413416
// Register the translation from ::mlir to LLVM IR, which must happen before
414417
// we can JIT-compile.
415418
::mlir::registerLLVMDialectTranslation(_context);
419+
::mlir::registerBuiltinDialectTranslation(_context);
420+
::mlir::registerOpenMPDialectTranslation(_context);
416421
// load the dialects we use
417422
_context.getOrLoadDialect<::mlir::arith::ArithDialect>();
418423
_context.getOrLoadDialect<::mlir::func::FuncDialect>();
@@ -460,6 +465,7 @@ void init() {
460465
// ::mlir::registerAllPasses();
461466
::mlir::registerSCFPasses();
462467
::mlir::registerSCFToControlFlowPass();
468+
::mlir::registerConvertSCFToOpenMPPass();
463469
::mlir::registerShapePasses();
464470
::mlir::registerConvertShapeToStandardPass();
465471
::mlir::tensor::registerTensorPasses();
@@ -476,6 +482,11 @@ void init() {
476482
::mlir::registerCanonicalizerPass();
477483
::mlir::registerConvertAffineToStandardPass();
478484
::mlir::registerFinalizeMemRefToLLVMConversionPass();
485+
::mlir::registerArithToLLVMConversionPass();
486+
::mlir::registerConvertMathToLLVMPass();
487+
::mlir::registerConvertControlFlowToLLVMPass();
488+
::mlir::registerConvertLinalgToLLVMPass();
489+
::mlir::registerConvertOpenMPToLLVMPass();
479490
::mlir::memref::registerMemRefPasses();
480491
::mlir::registerReconcileUnrealizedCastsPass();
481492

test/stencil-2d.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060
print(
6161
"Python version = ", str(sys.version_info.major) + "." + str(sys.version_info.minor)
6262
)
63-
if sys.version_info >= (3, 3):
63+
if sys.version_info >= (33, 3):
6464
from time import process_time as timer
6565
else:
6666
from timeit import default_timer as timer

0 commit comments

Comments
 (0)