SWDEV-333073 - HIP_INIT_API to handle no return case

Change-Id: I78d43e88cc196047a4cb5d6fcf756339c0e46e80


[ROCm/clr commit: 1074b22c48]
This commit is contained in:
Sarbojit Sarkar
2022-06-22 11:22:24 +00:00
committed by Sarbojit Sarkar
parent 32a73102ea
commit 86481e460d
3 changed files with 76 additions and 16 deletions
+14 -14
View File
@@ -75,10 +75,10 @@ typedef struct ihipIpcEventHandle_st {
const char* ihipGetErrorName(hipError_t hip_error);
static amd::Monitor g_hipInitlock{"hipInit lock"};
#define HIP_INIT() {\
#define HIP_INIT(noReturn) {\
amd::ScopedLock lock(g_hipInitlock); \
if (!amd::Runtime::initialized()) { \
if (!hip::init()) { \
if (!hip::init() && !noReturn) { \
HIP_RETURN(hipErrorInvalidDevice); \
} \
} \
@@ -108,21 +108,21 @@ static amd::Monitor g_hipInitlock{"hipInit lock"};
ClPrint(amd::LOG_INFO, amd::LOG_API, "%s: Returned %s : %s", \
__func__, ihipGetErrorName(err), ToString( __VA_ARGS__ ).c_str());
#define HIP_INIT_API_NO_RETURN(cid, ...) \
HIP_API_PRINT(__VA_ARGS__) \
amd::Thread* thread = amd::Thread::current(); \
VDI_CHECK_THREAD(thread); \
HIP_INIT_VOID()
#define HIP_INIT_API_INTERNAL(noReturn, cid, ...) \
HIP_API_PRINT(__VA_ARGS__) \
amd::Thread* thread = amd::Thread::current(); \
if (!VDI_CHECK_THREAD(thread) && !noReturn) { \
HIP_RETURN(hipErrorOutOfMemory); \
} \
HIP_INIT(noReturn) \
HIP_CB_SPAWNER_OBJECT(cid);
// This macro should be called at the beginning of every HIP API.
#define HIP_INIT_API(cid, ...) \
HIP_API_PRINT(__VA_ARGS__) \
amd::Thread* thread = amd::Thread::current(); \
if (!VDI_CHECK_THREAD(thread)) { \
HIP_RETURN(hipErrorOutOfMemory); \
} \
HIP_INIT() \
HIP_CB_SPAWNER_OBJECT(cid);
HIP_INIT_API_INTERNAL(0, cid, __VA_ARGS__)
#define HIP_INIT_API_NO_RETURN(cid, ...) \
HIP_INIT_API_INTERNAL(1, cid, __VA_ARGS__)
#define HIP_RETURN_DURATION(ret, ...) \
hip::g_lastError = ret; \
-1
View File
@@ -278,7 +278,6 @@ hipError_t hipGetSymbolSize(size_t* sizePtr, const void* symbol) {
hipError_t ihipCreateGlobalVarObj(const char* name, hipModule_t hmod, amd::Memory** amd_mem_obj,
hipDeviceptr_t* dptr, size_t* bytes) {
HIP_INIT();
/* Get Device Program pointer*/
amd::Program* program = as_amd(reinterpret_cast<cl_program>(hmod));