[Openmp-commits] [openmp] [OpenMP] Start organizing PluginManager, PluginAdaptors (PR #73875)
Johannes Doerfert via Openmp-commits
openmp-commits at lists.llvm.org
Thu Nov 30 13:47:37 PST 2023
================
@@ -0,0 +1,226 @@
+//===-- PluginManager.h - Plugin loading and communication API --*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+//
+// Declarations for managing devices that are handled by RTL plugins.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef OMPTARGET_PLUGIN_MANAGER_H
+#define OMPTARGET_PLUGIN_MANAGER_H
+
+#include "Shared/APITypes.h"
+
+#include "device.h"
+
+#include "llvm/ADT/DenseSet.h"
+#include "llvm/ADT/SmallVector.h"
+#include "llvm/Support/DynamicLibrary.h"
+
+#include <list>
+#include <mutex>
+
+struct PluginAdaptorTy {
+ typedef int32_t(init_plugin_ty)();
+ typedef int32_t(is_valid_binary_ty)(void *);
+ typedef int32_t(is_valid_binary_info_ty)(void *, void *);
+ typedef int32_t(is_data_exchangable_ty)(int32_t, int32_t);
+ typedef int32_t(number_of_devices_ty)();
+ typedef int32_t(init_device_ty)(int32_t);
+ typedef __tgt_target_table *(load_binary_ty)(int32_t, void *);
+ typedef void *(data_alloc_ty)(int32_t, int64_t, void *, int32_t);
+ typedef int32_t(data_submit_ty)(int32_t, void *, void *, int64_t);
+ typedef int32_t(data_submit_async_ty)(int32_t, void *, void *, int64_t,
+ __tgt_async_info *);
+ typedef int32_t(data_retrieve_ty)(int32_t, void *, void *, int64_t);
+ typedef int32_t(data_retrieve_async_ty)(int32_t, void *, void *, int64_t,
+ __tgt_async_info *);
+ typedef int32_t(data_exchange_ty)(int32_t, void *, int32_t, void *, int64_t);
+ typedef int32_t(data_exchange_async_ty)(int32_t, void *, int32_t, void *,
+ int64_t, __tgt_async_info *);
+ typedef int32_t(data_delete_ty)(int32_t, void *, int32_t);
+ typedef int32_t(launch_kernel_ty)(int32_t, void *, void **, ptrdiff_t *,
+ const KernelArgsTy *, __tgt_async_info *);
+ typedef int64_t(init_requires_ty)(int64_t);
+ typedef int32_t(synchronize_ty)(int32_t, __tgt_async_info *);
+ typedef int32_t(query_async_ty)(int32_t, __tgt_async_info *);
+ typedef int32_t(supports_empty_images_ty)();
+ typedef void(print_device_info_ty)(int32_t);
+ typedef void(set_info_flag_ty)(uint32_t);
+ typedef int32_t(create_event_ty)(int32_t, void **);
+ typedef int32_t(record_event_ty)(int32_t, void *, __tgt_async_info *);
+ typedef int32_t(wait_event_ty)(int32_t, void *, __tgt_async_info *);
+ typedef int32_t(sync_event_ty)(int32_t, void *);
+ typedef int32_t(destroy_event_ty)(int32_t, void *);
+ typedef int32_t(release_async_info_ty)(int32_t, __tgt_async_info *);
+ typedef int32_t(init_async_info_ty)(int32_t, __tgt_async_info **);
+ typedef int64_t(init_device_into_ty)(int64_t, __tgt_device_info *,
+ const char **);
+ typedef int32_t(data_lock_ty)(int32_t, void *, int64_t, void **);
+ typedef int32_t(data_unlock_ty)(int32_t, void *);
+ typedef int32_t(data_notify_mapped_ty)(int32_t, void *, int64_t);
+ typedef int32_t(data_notify_unmapped_ty)(int32_t, void *);
+ typedef int32_t(set_device_offset_ty)(int32_t);
+ typedef int32_t(activate_record_replay_ty)(int32_t, uint64_t, void *, bool,
+ bool, uint64_t &);
+
+ int32_t Idx = -1; // RTL index, index is the number of devices
+ // of other RTLs that were registered before,
+ // i.e. the OpenMP index of the first device
+ // to be registered with this RTL.
+ int32_t NumberOfDevices = -1; // Number of devices this RTL deals with.
+
+ std::unique_ptr<llvm::sys::DynamicLibrary> LibraryHandler;
+
+#ifdef OMPTARGET_DEBUG
----------------
jdoerfert wrote:
I'll put it on my list to look.
https://github.com/llvm/llvm-project/pull/73875
More information about the Openmp-commits
mailing list