[Openmp-commits] [PATCH] D106774: [libomptarget][amdgpu] More robust handling of failure to init HSA
Jon Chesterfield via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Sun Jul 25 15:16:24 PDT 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
JonChesterfield marked an inline comment as not done.
Closed by commit rGdd0b463dd9ed: [libomptarget][amdgpu] More robust handling of failure to init HSA (authored by JonChesterfield).
Changed prior to commit:
https://reviews.llvm.org/D106774?vs=361533&id=361548#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106774/new/
https://reviews.llvm.org/D106774
Files:
openmp/libomptarget/plugins/amdgpu/impl/system.cpp
openmp/libomptarget/plugins/amdgpu/src/rtl.cpp
Index: openmp/libomptarget/plugins/amdgpu/src/rtl.cpp
===================================================================
--- openmp/libomptarget/plugins/amdgpu/src/rtl.cpp
+++ openmp/libomptarget/plugins/amdgpu/src/rtl.cpp
@@ -436,13 +436,14 @@
/// Class containing all the device information
class RTLDeviceInfoTy {
std::vector<std::list<FuncOrGblEntryTy>> FuncGblEntries;
+ bool HSAInitializeSucceeded = false;
public:
// load binary populates symbol tables and mutates various global state
// run uses those symbol tables
std::shared_timed_mutex load_run_lock;
- int NumberOfDevices;
+ int NumberOfDevices = 0;
// GPU devices
std::vector<hsa_agent_t> HSAAgents;
@@ -688,7 +689,9 @@
DP("Start initializing HSA-ATMI\n");
hsa_status_t err = core::atl_init_gpu_context();
- if (err != HSA_STATUS_SUCCESS) {
+ if (err == HSA_STATUS_SUCCESS) {
+ HSAInitializeSucceeded = true;
+ } else {
DP("Error when initializing HSA-ATMI\n");
return;
}
@@ -791,6 +794,10 @@
~RTLDeviceInfoTy() {
DP("Finalizing the HSA-ATMI DeviceInfo.\n");
+ if (!HSAInitializeSucceeded) {
+ // Then none of these can have been set up and they can't be torn down
+ return;
+ }
// Run destructors on types that use HSA before
// atmi_finalize removes access to it
deviceStateStore.clear();
Index: openmp/libomptarget/plugins/amdgpu/impl/system.cpp
===================================================================
--- openmp/libomptarget/plugins/amdgpu/impl/system.cpp
+++ openmp/libomptarget/plugins/amdgpu/impl/system.cpp
@@ -356,12 +356,8 @@
DEBUG_PRINT("Initializing HSA...");
hsa_status_t err = hsa_init();
if (err != HSA_STATUS_SUCCESS) {
- printf("[%s:%d] %s failed: %s\n", __FILE__, __LINE__,
- "Initializing the hsa runtime", get_error_string(err));
return err;
}
- if (err != HSA_STATUS_SUCCESS)
- return err;
err = init_compute_and_memory();
if (err != HSA_STATUS_SUCCESS)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106774.361548.patch
Type: text/x-patch
Size: 2011 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210725/554874be/attachment.bin>
More information about the Openmp-commits
mailing list