HIP program state re-initialization logic

This commit is to support kernels dynamically loaded thru means such as
dlopen() after HIP runtime initializes.
This commit is contained in:
Wen-Heng (Jack) Chung
2018-05-18 10:14:46 -05:00
parent bae22822f2
commit 379b7a2241
3 changed files with 124 additions and 32 deletions
+11 -5
View File
@@ -92,13 +92,19 @@ namespace hip_impl
hipStream_t stream,
void** kernarg)
{
const auto it0 = functions().find(function_address);
auto it0 = functions().find(function_address);
if (it0 == functions().cend()) {
throw runtime_error{
"No device code available for function: " +
name(function_address)
};
// Re-init device code maps once again to help locate kernels
// loaded after HIP runtime initialization via means such as
// dlopen().
it0 = functions(true).find(function_address);
if (it0 == functions().cend()) {
throw runtime_error{
"No device code available for function: " +
name(function_address)
};
}
}
auto agent = target_agent(stream);