Skip to content

Commit c6c210b

Browse files
jhuber6ronlieb
authored andcommitted
[Libomptarget][NFC] Remove concept of optional plugin functions (llvm#82681)
Summary: Ever since the introduction of the new plugins we haven't exercised the concept of "optional" plugin functions. This is done in perparation for making the plugins use a static interface as it will greatly simplify the implementation if we assert that every function has the entrypoints. Currently some unsupported functions will just return failure or some other default value, so this shouldn't change anything. Change-Id: I6d635e18b80b849f031a6d7c81e8d93919e1645e
1 parent 4cc0d22 commit c6c210b

File tree

5 files changed

+62
-60
lines changed

5 files changed

+62
-60
lines changed

openmp/libomptarget/include/PluginManager.h

+5-3
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ struct PluginAdaptorTy {
6969
/// Access to the shared object file representing the plugin.
7070
std::unique_ptr<llvm::sys::DynamicLibrary> LibraryHandler;
7171

72-
#define PLUGIN_API_HANDLE(NAME, MANDATORY) \
72+
#define PLUGIN_API_HANDLE(NAME) \
7373
using NAME##_ty = decltype(__tgt_rtl_##NAME); \
7474
NAME##_ty *NAME = nullptr;
7575

@@ -114,8 +114,10 @@ struct PluginManager {
114114
// Unregister a shared library from all RTLs.
115115
void unregisterLib(__tgt_bin_desc *Desc);
116116

117-
void addDeviceImage(__tgt_bin_desc &TgtBinDesc, __tgt_device_image &TgtDeviceImage) {
118-
DeviceImages.emplace_back(std::make_unique<DeviceImageTy>(TgtBinDesc, TgtDeviceImage));
117+
void addDeviceImage(__tgt_bin_desc &TgtBinDesc,
118+
__tgt_device_image &TgtDeviceImage) {
119+
DeviceImages.emplace_back(
120+
std::make_unique<DeviceImageTy>(TgtBinDesc, TgtDeviceImage));
119121
}
120122

121123
/// Return the device presented to the user as device \p DeviceNo if it is

openmp/libomptarget/include/Shared/PluginAPI.inc

+53-51
Original file line numberDiff line numberDiff line change
@@ -13,54 +13,56 @@
1313

1414
// No include guards!
1515

16-
PLUGIN_API_HANDLE(init_plugin, true);
17-
PLUGIN_API_HANDLE(is_valid_binary, true);
18-
PLUGIN_API_HANDLE(is_data_exchangable, false);
19-
PLUGIN_API_HANDLE(number_of_devices, true);
20-
PLUGIN_API_HANDLE(init_device, true);
21-
PLUGIN_API_HANDLE(load_binary, true);
22-
PLUGIN_API_HANDLE(get_global, true);
23-
PLUGIN_API_HANDLE(get_function, true);
24-
PLUGIN_API_HANDLE(data_alloc, true);
25-
PLUGIN_API_HANDLE(data_submit, true);
26-
PLUGIN_API_HANDLE(data_submit_async, false);
27-
PLUGIN_API_HANDLE(data_retrieve, true);
28-
PLUGIN_API_HANDLE(data_retrieve_async, false);
29-
PLUGIN_API_HANDLE(data_exchange, false);
30-
PLUGIN_API_HANDLE(data_exchange_async, false);
31-
PLUGIN_API_HANDLE(data_delete, true);
32-
PLUGIN_API_HANDLE(launch_kernel, true);
33-
PLUGIN_API_HANDLE(init_requires, false);
34-
PLUGIN_API_HANDLE(synchronize, false);
35-
PLUGIN_API_HANDLE(query_async, false);
36-
PLUGIN_API_HANDLE(set_info_flag, false);
37-
PLUGIN_API_HANDLE(print_device_info, false);
38-
PLUGIN_API_HANDLE(create_event, false);
39-
PLUGIN_API_HANDLE(record_event, false);
40-
PLUGIN_API_HANDLE(wait_event, false);
41-
PLUGIN_API_HANDLE(sync_event, false);
42-
PLUGIN_API_HANDLE(destroy_event, false);
43-
PLUGIN_API_HANDLE(init_async_info, false);
44-
PLUGIN_API_HANDLE(init_device_info, false);
45-
PLUGIN_API_HANDLE(data_lock, false);
46-
PLUGIN_API_HANDLE(data_unlock, false);
47-
PLUGIN_API_HANDLE(data_notify_mapped, false);
48-
PLUGIN_API_HANDLE(data_notify_unmapped, false);
49-
PLUGIN_API_HANDLE(set_device_offset, false);
50-
PLUGIN_API_HANDLE(initialize_record_replay, false);
51-
PLUGIN_API_HANDLE(check_invalid_image, true);
52-
PLUGIN_API_HANDLE(has_apu_device, true);
53-
PLUGIN_API_HANDLE(has_USM_capable_dGPU, true);
54-
PLUGIN_API_HANDLE(supports_unified_memory, true);
55-
PLUGIN_API_HANDLE(is_fine_grained_memory_enabled, true);
56-
PLUGIN_API_HANDLE(is_system_supporting_managed_memory, true);
57-
PLUGIN_API_HANDLE(number_of_team_procs, true);
58-
PLUGIN_API_HANDLE(launch_kernel_sync, true);
59-
PLUGIN_API_HANDLE(set_coarse_grain_mem_region, true);
60-
PLUGIN_API_HANDLE(prepopulate_page_table, true);
61-
PLUGIN_API_HANDLE(query_coarse_grain_mem_region, true);
62-
PLUGIN_API_HANDLE(enable_access_to_all_agents, false);
63-
PLUGIN_API_HANDLE(release_async_info, false);
64-
PLUGIN_API_HANDLE(activate_record_replay, false);
65-
PLUGIN_API_HANDLE(use_auto_zero_copy, false);
66-
PLUGIN_API_HANDLE(zero_copy_sanity_checks_and_diag, false);
16+
PLUGIN_API_HANDLE(init_plugin);
17+
PLUGIN_API_HANDLE(is_valid_binary);
18+
PLUGIN_API_HANDLE(is_data_exchangable);
19+
PLUGIN_API_HANDLE(number_of_devices);
20+
PLUGIN_API_HANDLE(init_device);
21+
PLUGIN_API_HANDLE(load_binary);
22+
PLUGIN_API_HANDLE(get_global);
23+
PLUGIN_API_HANDLE(get_function);
24+
PLUGIN_API_HANDLE(data_alloc);
25+
PLUGIN_API_HANDLE(data_submit);
26+
PLUGIN_API_HANDLE(data_submit_async);
27+
PLUGIN_API_HANDLE(data_retrieve);
28+
PLUGIN_API_HANDLE(data_retrieve_async);
29+
PLUGIN_API_HANDLE(data_exchange);
30+
PLUGIN_API_HANDLE(data_exchange_async);
31+
PLUGIN_API_HANDLE(data_delete);
32+
PLUGIN_API_HANDLE(launch_kernel);
33+
PLUGIN_API_HANDLE(init_requires);
34+
PLUGIN_API_HANDLE(synchronize);
35+
PLUGIN_API_HANDLE(query_async);
36+
PLUGIN_API_HANDLE(set_info_flag);
37+
PLUGIN_API_HANDLE(print_device_info);
38+
PLUGIN_API_HANDLE(create_event);
39+
PLUGIN_API_HANDLE(record_event);
40+
PLUGIN_API_HANDLE(wait_event);
41+
PLUGIN_API_HANDLE(sync_event);
42+
PLUGIN_API_HANDLE(destroy_event);
43+
PLUGIN_API_HANDLE(init_async_info);
44+
PLUGIN_API_HANDLE(init_device_info);
45+
PLUGIN_API_HANDLE(data_lock);
46+
PLUGIN_API_HANDLE(data_unlock);
47+
PLUGIN_API_HANDLE(data_notify_mapped);
48+
PLUGIN_API_HANDLE(data_notify_unmapped);
49+
PLUGIN_API_HANDLE(set_device_offset);
50+
PLUGIN_API_HANDLE(initialize_record_replay);
51+
PLUGIN_API_HANDLE(use_auto_zero_copy);
52+
PLUGIN_API_HANDLE(check_invalid_image);
53+
PLUGIN_API_HANDLE(has_apu_device);
54+
PLUGIN_API_HANDLE(has_USM_capable_dGPU);
55+
PLUGIN_API_HANDLE(supports_unified_memory);
56+
PLUGIN_API_HANDLE(is_fine_grained_memory_enabled);
57+
PLUGIN_API_HANDLE(is_system_supporting_managed_memory);
58+
PLUGIN_API_HANDLE(number_of_team_procs);
59+
PLUGIN_API_HANDLE(launch_kernel_sync);
60+
PLUGIN_API_HANDLE(set_coarse_grain_mem_region);
61+
PLUGIN_API_HANDLE(prepopulate_page_table);
62+
PLUGIN_API_HANDLE(query_coarse_grain_mem_region);
63+
#if 0 // FIXME: these failt ro resolve
64+
PLUGIN_API_HANDLE(enable_access_to_all_agents);
65+
PLUGIN_API_HANDLE(release_async_info);
66+
PLUGIN_API_HANDLE(activate_record_replay);
67+
#endif
68+
PLUGIN_API_HANDLE(zero_copy_sanity_checks_and_diag);

openmp/libomptarget/src/OpenMP/API.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,10 @@ EXTERN void *llvm_omp_target_alloc_multi_devices(size_t size, int num_devices,
135135
// accessed by any device and host under xnack+ mode
136136
void *ptr =
137137
targetAllocExplicit(size, DeviceNums[0], TARGET_ALLOC_DEFAULT, __func__);
138+
#if 0 // FIXME related to plugin optional
138139
if (Device.RTL->enable_access_to_all_agents)
139140
Device.RTL->enable_access_to_all_agents(ptr, DeviceNums[0]);
141+
#endif
140142
return ptr;
141143
}
142144

openmp/libomptarget/src/PluginManager.cpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,10 @@ PluginAdaptorTy::PluginAdaptorTy(const std::string &Name,
5858

5959
Error PluginAdaptorTy::init() {
6060

61-
#define PLUGIN_API_HANDLE(NAME, MANDATORY) \
61+
#define PLUGIN_API_HANDLE(NAME) \
6262
NAME = reinterpret_cast<decltype(NAME)>( \
6363
LibraryHandler->getAddressOfSymbol(GETNAME(__tgt_rtl_##NAME))); \
64-
if (MANDATORY && !NAME) { \
65-
DP("Invalid plugin as necessary interface is not found.\n"); \
64+
if (!NAME) { \
6665
return createStringError(inconvertibleErrorCode(), \
6766
"Invalid plugin as necessary interface function " \
6867
"(%s) was not found.\n", \

revert_patches.txt

-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,3 @@ revert: breaks MIOpen composableKernel build
22
[clang][Sema] Add -Wswitch-default warning option (#73077)
33
https://ontrack-internal.amd.com/browse/SWDEV-436625
44

5-
revert: breaks offloading
6-
87b410821148 [Libomptarget][NFC] Remove concept of optional plugin functions (#82681)
7-

0 commit comments

Comments
 (0)