Fix clang build (#271)
Clang doesn't understand `optimize("O0")`. It has `noopt`, which GCC doesn't understand. Wrap the difference in a macro.
이 커밋은 다음에 포함됨:
1 부모
299c554dcc
커밋
8c564e9b57
1 파일이 변경됨
+9
-1
+9
-1
@@ -124,10 +124,18 @@ ncclResult_t ncclGetUniqueId(ncclUniqueId* out) {
|
||||
}
|
||||
|
||||
// Prevent compiler from optimizing out these operations
|
||||
void __attribute__((optimize("O0"))) commPoison(ncclComm_t comm) {
|
||||
#ifdef __clang__
|
||||
#define NCCL_NO_OPTIMIZE __attribute__((noopt)))
|
||||
#else
|
||||
#define NCCL_NO_OPTIMIZE __attribute__((optimize("O0")))
|
||||
#endif
|
||||
|
||||
void NCCL_NO_OPTIMIZE commPoison(ncclComm_t comm) {
|
||||
comm->rank = comm->cudaDev = comm->busId = comm->nRanks = -1;
|
||||
}
|
||||
|
||||
#undef NCCL_NO_OPTIMIZE
|
||||
|
||||
static ncclResult_t commFree(ncclComm_t comm) {
|
||||
if (comm == NULL)
|
||||
return ncclSuccess;
|
||||
|
||||
새 이슈에서 참조
사용자 차단