Fixing potential race-condition in env var parameter macro (#359)
[ROCm/rccl commit: 4f8e788a61]
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
7e30cf002d
Коммит
ffdf00a2fa
@@ -83,9 +83,11 @@ pthread_mutex_t rcclParamMutex##name = PTHREAD_MUTEX_INITIALIZER; \
|
|||||||
int64_t rcclParam##name() { \
|
int64_t rcclParam##name() { \
|
||||||
static_assert(default_value != -1LL, "default value cannot be -1"); \
|
static_assert(default_value != -1LL, "default value cannot be -1"); \
|
||||||
static int64_t value = -1LL; \
|
static int64_t value = -1LL; \
|
||||||
|
int64_t localValue; \
|
||||||
pthread_mutex_lock(&rcclParamMutex##name); \
|
pthread_mutex_lock(&rcclParamMutex##name); \
|
||||||
|
localValue = value; \
|
||||||
char* en = getenv("RCCL_TEST_ENV_VARS"); \
|
char* en = getenv("RCCL_TEST_ENV_VARS"); \
|
||||||
if (value == -1LL || (en && (strcmp(en, "ENABLE") == 0))) { \
|
if (value == -1LL || (en && (strcmp(en, "ENABLE") == 0))){ \
|
||||||
value = default_value; \
|
value = default_value; \
|
||||||
char* str = getenv("RCCL_" env); \
|
char* str = getenv("RCCL_" env); \
|
||||||
if (str && strlen(str) > 0) { \
|
if (str && strlen(str) > 0) { \
|
||||||
@@ -98,9 +100,10 @@ int64_t rcclParam##name() { \
|
|||||||
INFO(NCCL_ALL,"%s set by environment to %lu.", "RCCL_" env, value); \
|
INFO(NCCL_ALL,"%s set by environment to %lu.", "RCCL_" env, value); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
|
localValue = value; \
|
||||||
} \
|
} \
|
||||||
pthread_mutex_unlock(&rcclParamMutex##name); \
|
pthread_mutex_unlock(&rcclParamMutex##name); \
|
||||||
return value; \
|
return localValue; \
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user