[llvm-branch-commits] [mlir] 740950c - Revert "[mlir:JitRunner] Use custom shared library init/destroy functions if available"
Eugene Zhulenev via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jan 8 07:51:19 PST 2021
Author: Eugene Zhulenev
Date: 2021-01-08T07:46:35-08:00
New Revision: 740950cf1cda4e5ccecf3781b7b64c9a9a72b168
URL: https://github.com/llvm/llvm-project/commit/740950cf1cda4e5ccecf3781b7b64c9a9a72b168
DIFF: https://github.com/llvm/llvm-project/commit/740950cf1cda4e5ccecf3781b7b64c9a9a72b168.diff
LOG: Revert "[mlir:JitRunner] Use custom shared library init/destroy functions if available"
This reverts commit 84dc9b451bfd62474f44dd1af0e4955a0110d523.
Fix Windows breakage: http://lab.llvm.org:8011/#/builders/13/builds/3658/steps/6/logs/stdio
Differential Revision: https://reviews.llvm.org/D94309
Added:
Modified:
mlir/lib/ExecutionEngine/AsyncRuntime.cpp
mlir/lib/ExecutionEngine/CMakeLists.txt
mlir/lib/ExecutionEngine/JitRunner.cpp
Removed:
################################################################################
diff --git a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp
index 080be9ca029a..45bdcb3733b8 100644
--- a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp
+++ b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp
@@ -24,8 +24,6 @@
#include <thread>
#include <vector>
-#include "llvm/ADT/StringMap.h"
-
using namespace mlir::runtime;
//===----------------------------------------------------------------------===//
@@ -111,17 +109,9 @@ class RefCounted {
} // namespace
// Returns the default per-process instance of an async runtime.
-static std::unique_ptr<AsyncRuntime> &getDefaultAsyncRuntimeInstance() {
+static AsyncRuntime *getDefaultAsyncRuntimeInstance() {
static auto runtime = std::make_unique<AsyncRuntime>();
- return runtime;
-}
-
-static void resetDefaultAsyncRuntime() {
- return getDefaultAsyncRuntimeInstance().reset();
-}
-
-static AsyncRuntime *getDefaultAsyncRuntime() {
- return getDefaultAsyncRuntimeInstance().get();
+ return runtime.get();
}
// Async token provides a mechanism to signal asynchronous operation completion.
@@ -194,19 +184,19 @@ extern "C" void mlirAsyncRuntimeDropRef(RefCountedObjPtr ptr, int32_t count) {
// Creates a new `async.token` in not-ready state.
extern "C" AsyncToken *mlirAsyncRuntimeCreateToken() {
- AsyncToken *token = new AsyncToken(getDefaultAsyncRuntime());
+ AsyncToken *token = new AsyncToken(getDefaultAsyncRuntimeInstance());
return token;
}
// Creates a new `async.value` in not-ready state.
extern "C" AsyncValue *mlirAsyncRuntimeCreateValue(int32_t size) {
- AsyncValue *value = new AsyncValue(getDefaultAsyncRuntime(), size);
+ AsyncValue *value = new AsyncValue(getDefaultAsyncRuntimeInstance(), size);
return value;
}
// Create a new `async.group` in empty state.
extern "C" AsyncGroup *mlirAsyncRuntimeCreateGroup() {
- AsyncGroup *group = new AsyncGroup(getDefaultAsyncRuntime());
+ AsyncGroup *group = new AsyncGroup(getDefaultAsyncRuntimeInstance());
return group;
}
@@ -352,55 +342,4 @@ extern "C" void mlirAsyncRuntimePrintCurrentThreadId() {
std::cout << "Current thread id: " << thisId << std::endl;
}
-//===----------------------------------------------------------------------===//
-// MLIR Runner (JitRunner) dynamic library integration.
-//===----------------------------------------------------------------------===//
-
-// Export symbols for the MLIR runner integration. All other symbols are hidden.
-#define API __attribute__((visibility("default")))
-
-extern "C" API void __mlir_runner_init(llvm::StringMap<void *> &exportSymbols) {
- auto exportSymbol = [&](llvm::StringRef name, auto ptr) {
- assert(exportSymbols.count(name) == 0 && "symbol already exists");
- exportSymbols[name] = reinterpret_cast<void *>(ptr);
- };
-
- exportSymbol("mlirAsyncRuntimeAddRef",
- &mlir::runtime::mlirAsyncRuntimeAddRef);
- exportSymbol("mlirAsyncRuntimeDropRef",
- &mlir::runtime::mlirAsyncRuntimeDropRef);
- exportSymbol("mlirAsyncRuntimeExecute",
- &mlir::runtime::mlirAsyncRuntimeExecute);
- exportSymbol("mlirAsyncRuntimeGetValueStorage",
- &mlir::runtime::mlirAsyncRuntimeGetValueStorage);
- exportSymbol("mlirAsyncRuntimeCreateToken",
- &mlir::runtime::mlirAsyncRuntimeCreateToken);
- exportSymbol("mlirAsyncRuntimeCreateValue",
- &mlir::runtime::mlirAsyncRuntimeCreateValue);
- exportSymbol("mlirAsyncRuntimeEmplaceToken",
- &mlir::runtime::mlirAsyncRuntimeEmplaceToken);
- exportSymbol("mlirAsyncRuntimeEmplaceValue",
- &mlir::runtime::mlirAsyncRuntimeEmplaceValue);
- exportSymbol("mlirAsyncRuntimeAwaitToken",
- &mlir::runtime::mlirAsyncRuntimeAwaitToken);
- exportSymbol("mlirAsyncRuntimeAwaitValue",
- &mlir::runtime::mlirAsyncRuntimeAwaitValue);
- exportSymbol("mlirAsyncRuntimeAwaitTokenAndExecute",
- &mlir::runtime::mlirAsyncRuntimeAwaitTokenAndExecute);
- exportSymbol("mlirAsyncRuntimeAwaitValueAndExecute",
- &mlir::runtime::mlirAsyncRuntimeAwaitValueAndExecute);
- exportSymbol("mlirAsyncRuntimeCreateGroup",
- &mlir::runtime::mlirAsyncRuntimeCreateGroup);
- exportSymbol("mlirAsyncRuntimeAddTokenToGroup",
- &mlir::runtime::mlirAsyncRuntimeAddTokenToGroup);
- exportSymbol("mlirAsyncRuntimeAwaitAllInGroup",
- &mlir::runtime::mlirAsyncRuntimeAwaitAllInGroup);
- exportSymbol("mlirAsyncRuntimeAwaitAllInGroupAndExecute",
- &mlir::runtime::mlirAsyncRuntimeAwaitAllInGroupAndExecute);
- exportSymbol("mlirAsyncRuntimePrintCurrentThreadId",
- &mlir::runtime::mlirAsyncRuntimePrintCurrentThreadId);
-}
-
-extern "C" API void __mlir_runner_destroy() { resetDefaultAsyncRuntime(); }
-
#endif // MLIR_ASYNCRUNTIME_DEFINE_FUNCTIONS
diff --git a/mlir/lib/ExecutionEngine/CMakeLists.txt b/mlir/lib/ExecutionEngine/CMakeLists.txt
index 7d86811fe4fd..47dbe45d8138 100644
--- a/mlir/lib/ExecutionEngine/CMakeLists.txt
+++ b/mlir/lib/ExecutionEngine/CMakeLists.txt
@@ -111,5 +111,4 @@ add_mlir_library(mlir_async_runtime
mlir_c_runner_utils_static
${LLVM_PTHREAD_LIB}
)
-set_property(TARGET mlir_async_runtime PROPERTY CXX_VISIBILITY_PRESET hidden)
target_compile_definitions(mlir_async_runtime PRIVATE mlir_async_runtime_EXPORTS)
diff --git a/mlir/lib/ExecutionEngine/JitRunner.cpp b/mlir/lib/ExecutionEngine/JitRunner.cpp
index d2a9336030e3..c7548b0d8a85 100644
--- a/mlir/lib/ExecutionEngine/JitRunner.cpp
+++ b/mlir/lib/ExecutionEngine/JitRunner.cpp
@@ -155,59 +155,17 @@ static Error compileAndExecute(Options &options, ModuleOp module,
if (auto clOptLevel = getCommandLineOptLevel(options))
jitCodeGenOptLevel =
static_cast<llvm::CodeGenOpt::Level>(clOptLevel.getValue());
-
- // If shared library implements custom mlir-runner library init and destroy
- // functions, we'll use them to register the library with the execution
- // engine. Otherwise we'll pass library directly to the execution engine.
SmallVector<StringRef, 4> libs(options.clSharedLibs.begin(),
options.clSharedLibs.end());
-
- // Libraries that we'll pass to the ExecutionEngine for loading.
- SmallVector<StringRef, 4> executionEngineLibs;
-
- using MlirRunnerInitFn = void (*)(llvm::StringMap<void *> &);
- using MlirRunnerDestroyFn = void (*)();
-
- llvm::StringMap<void *> exportSymbols;
- SmallVector<MlirRunnerDestroyFn> destroyFns;
-
- // Handle libraries that do support mlir-runner init/destroy callbacks.
- for (auto libPath : libs) {
- auto lib = llvm::sys::DynamicLibrary::getPermanentLibrary(libPath.data());
- void *initSym = lib.getAddressOfSymbol("__mlir_runner_init");
- void *destroySim = lib.getAddressOfSymbol("__mlir_runner_destroy");
-
- // Library does not support mlir runner, load it with ExecutionEngine.
- if (!initSym || !destroySim) {
- executionEngineLibs.push_back(libPath);
- continue;
- }
-
- auto initFn = reinterpret_cast<MlirRunnerInitFn>(initSym);
- initFn(exportSymbols);
-
- auto destroyFn = reinterpret_cast<MlirRunnerDestroyFn>(destroySim);
- destroyFns.push_back(destroyFn);
- }
-
- // Build a runtime symbol map from the config and exported symbols.
- auto runtimeSymbolMap = [&](llvm::orc::MangleAndInterner interner) {
- auto symbolMap = config.runtimeSymbolMap ? config.runtimeSymbolMap(interner)
- : llvm::orc::SymbolMap();
- for (auto &exportSymbol : exportSymbols)
- symbolMap[interner(exportSymbol.getKey())] =
- llvm::JITEvaluatedSymbol::fromPointer(exportSymbol.getValue());
- return symbolMap;
- };
-
auto expectedEngine = mlir::ExecutionEngine::create(
module, config.llvmModuleBuilder, config.transformer, jitCodeGenOptLevel,
- executionEngineLibs);
+ libs);
if (!expectedEngine)
return expectedEngine.takeError();
auto engine = std::move(*expectedEngine);
- engine->registerSymbols(runtimeSymbolMap);
+ if (config.runtimeSymbolMap)
+ engine->registerSymbols(config.runtimeSymbolMap);
auto expectedFPtr = engine->lookup(entryPoint);
if (!expectedFPtr)
@@ -221,9 +179,6 @@ static Error compileAndExecute(Options &options, ModuleOp module,
void (*fptr)(void **) = *expectedFPtr;
(*fptr)(args);
- // Run all dynamic library destroy callbacks to prepare for the shutdown.
- llvm::for_each(destroyFns, [](MlirRunnerDestroyFn destroy) { destroy(); });
-
return Error::success();
}
More information about the llvm-branch-commits
mailing list