From 29fffff8d36ab722345c8697ec67c778c315faa7 Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Tue, 2 Feb 2021 20:53:59 +0000 Subject: [PATCH] Revert "Fix namespace for MLIR Async Runtime" This reverts commit b7d80058ff4649d1a15ef930269458dbb17145d9. The mlir-windows buildbot is broken. --- mlir/include/mlir/ExecutionEngine/AsyncRuntime.h | 60 ++++++++++++++++-------- mlir/lib/ExecutionEngine/AsyncRuntime.cpp | 10 ++-- 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/mlir/include/mlir/ExecutionEngine/AsyncRuntime.h b/mlir/include/mlir/ExecutionEngine/AsyncRuntime.h index d5cede3..0fe44cd 100644 --- a/mlir/include/mlir/ExecutionEngine/AsyncRuntime.h +++ b/mlir/include/mlir/ExecutionEngine/AsyncRuntime.h @@ -16,10 +16,21 @@ #include +#ifdef _WIN32 +#ifndef MLIR_ASYNCRUNTIME_EXPORT #ifdef mlir_async_runtime_EXPORTS // We are building this library +#define MLIR_ASYNCRUNTIME_EXPORT __declspec(dllexport) #define MLIR_ASYNCRUNTIME_DEFINE_FUNCTIONS +#else +// We are using this library +#define MLIR_ASYNCRUNTIME_EXPORT __declspec(dllimport) #endif // mlir_async_runtime_EXPORTS +#endif // MLIR_ASYNCRUNTIME_EXPORT +#else +#define MLIR_ASYNCRUNTIME_EXPORT +#define MLIR_ASYNCRUNTIME_DEFINE_FUNCTIONS +#endif // _WIN32 namespace mlir { namespace runtime { @@ -51,67 +62,78 @@ using CoroResume = void (*)(void *); // coroutine resume function using RefCountedObjPtr = void *; // Adds references to reference counted runtime object. -extern "C" void mlirAsyncRuntimeAddRef(RefCountedObjPtr, int32_t); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void + mlirAsyncRuntimeAddRef(RefCountedObjPtr, int32_t); // Drops references from reference counted runtime object. -extern "C" void mlirAsyncRuntimeDropRef(RefCountedObjPtr, int32_t); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void + mlirAsyncRuntimeDropRef(RefCountedObjPtr, int32_t); // Create a new `async.token` in not-ready state. -extern "C" AsyncToken *mlirAsyncRuntimeCreateToken(); +extern "C" MLIR_ASYNCRUNTIME_EXPORT AsyncToken *mlirAsyncRuntimeCreateToken(); // Create a new `async.value` in not-ready state. Size parameter specifies the // number of bytes that will be allocated for the async value storage. Storage // is owned by the `async.value` and deallocated when the async value is // destructed (reference count drops to zero). -extern "C" AsyncValue *mlirAsyncRuntimeCreateValue(int32_t); +extern "C" MLIR_ASYNCRUNTIME_EXPORT AsyncValue * + mlirAsyncRuntimeCreateValue(int32_t); // Create a new `async.group` in empty state. -extern "C" AsyncGroup *mlirAsyncRuntimeCreateGroup(); +extern "C" MLIR_ASYNCRUNTIME_EXPORT AsyncGroup *mlirAsyncRuntimeCreateGroup(); -extern "C" int64_t mlirAsyncRuntimeAddTokenToGroup(AsyncToken *, AsyncGroup *); +extern "C" MLIR_ASYNCRUNTIME_EXPORT int64_t +mlirAsyncRuntimeAddTokenToGroup(AsyncToken *, AsyncGroup *); // Switches `async.token` to ready state and runs all awaiters. -extern "C" void mlirAsyncRuntimeEmplaceToken(AsyncToken *); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void +mlirAsyncRuntimeEmplaceToken(AsyncToken *); // Switches `async.value` to ready state and runs all awaiters. -extern "C" void mlirAsyncRuntimeEmplaceValue(AsyncValue *); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void +mlirAsyncRuntimeEmplaceValue(AsyncValue *); // Blocks the caller thread until the token becomes ready. -extern "C" void mlirAsyncRuntimeAwaitToken(AsyncToken *); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void +mlirAsyncRuntimeAwaitToken(AsyncToken *); // Blocks the caller thread until the value becomes ready. -extern "C" void mlirAsyncRuntimeAwaitValue(AsyncValue *); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void +mlirAsyncRuntimeAwaitValue(AsyncValue *); // Blocks the caller thread until the elements in the group become ready. -extern "C" void mlirAsyncRuntimeAwaitAllInGroup(AsyncGroup *); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void +mlirAsyncRuntimeAwaitAllInGroup(AsyncGroup *); // Returns a pointer to the storage owned by the async value. -extern "C" ValueStorage mlirAsyncRuntimeGetValueStorage(AsyncValue *); +extern "C" MLIR_ASYNCRUNTIME_EXPORT ValueStorage +mlirAsyncRuntimeGetValueStorage(AsyncValue *); // Executes the task (coro handle + resume function) in one of the threads // managed by the runtime. -extern "C" void mlirAsyncRuntimeExecute(CoroHandle, CoroResume); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void mlirAsyncRuntimeExecute(CoroHandle, + CoroResume); // Executes the task (coro handle + resume function) in one of the threads // managed by the runtime after the token becomes ready. -extern "C" void mlirAsyncRuntimeAwaitTokenAndExecute(AsyncToken *, CoroHandle, - CoroResume); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void +mlirAsyncRuntimeAwaitTokenAndExecute(AsyncToken *, CoroHandle, CoroResume); // Executes the task (coro handle + resume function) in one of the threads // managed by the runtime after the value becomes ready. -extern "C" void mlirAsyncRuntimeAwaitValueAndExecute(AsyncValue *, CoroHandle, - CoroResume); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void +mlirAsyncRuntimeAwaitValueAndExecute(AsyncValue *, CoroHandle, CoroResume); // Executes the task (coro handle + resume function) in one of the threads // managed by the runtime after the all members of the group become ready. -extern "C" void +extern "C" MLIR_ASYNCRUNTIME_EXPORT void mlirAsyncRuntimeAwaitAllInGroupAndExecute(AsyncGroup *, CoroHandle, CoroResume); //===----------------------------------------------------------------------===// // Small async runtime support library for testing. //===----------------------------------------------------------------------===// -extern "C" void mlirAsyncRuntimePrintCurrentThreadId(); +extern "C" MLIR_ASYNCRUNTIME_EXPORT void mlirAsyncRuntimePrintCurrentThreadId(); } // namespace runtime } // namespace mlir diff --git a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp index e4d41d6..c5978eb 100644 --- a/mlir/lib/ExecutionEngine/AsyncRuntime.cpp +++ b/mlir/lib/ExecutionEngine/AsyncRuntime.cpp @@ -182,6 +182,8 @@ struct AsyncGroup : public RefCounted { std::vector> awaiters; }; +} // namespace runtime +} // namespace mlir // Adds references to reference counted runtime object. extern "C" void mlirAsyncRuntimeAddRef(RefCountedObjPtr ptr, int32_t count) { @@ -367,11 +369,8 @@ extern "C" void mlirAsyncRuntimePrintCurrentThreadId() { //===----------------------------------------------------------------------===// // Export symbols for the MLIR runner integration. All other symbols are hidden. -#ifdef _WIN32 -#define API __declspec(dllexport) -#else +#ifndef _WIN32 #define API __attribute__((visibility("default"))) -#endif extern "C" API void __mlir_runner_init(llvm::StringMap &exportSymbols) { auto exportSymbol = [&](llvm::StringRef name, auto ptr) { @@ -417,7 +416,6 @@ extern "C" API void __mlir_runner_init(llvm::StringMap &exportSymbols) { extern "C" API void __mlir_runner_destroy() { resetDefaultAsyncRuntime(); } -} // namespace runtime -} // namespace mlir +#endif // _WIN32 #endif // MLIR_ASYNCRUNTIME_DEFINE_FUNCTIONS -- 2.7.4