Add GPU memory usage tracker (#326)

[ROCm/rccl commit: f60b76c67a]
This commit is contained in:
Wenkai Du
2021-03-06 20:32:30 -08:00
کامیت شده توسط GitHub
والد b7253710ca
کامیت 7374c512d9
3فایلهای تغییر یافته به همراه25 افزوده شده و 1 حذف شده
@@ -37,6 +37,19 @@ static ncclResult_t ncclCalloc(T** ptr, size_t nelem) {
return ncclSuccess;
}
struct __attribute__ ((aligned(64))) allocationTracker {
union {
struct {
uint64_t totalAlloc;
uint64_t totalAllocSize;
};
char align[64];
};
};
static_assert(sizeof(struct allocationTracker) == 64, "allocationTracker must be size of 64 bytes");
#define MAX_ALLOC_TRACK_NGPU 32
extern struct allocationTracker allocTracker[];
template <typename T>
static ncclResult_t ncclCudaCalloc(T** ptr, size_t nelem, bool isFineGrain = false) {
if (isFineGrain)
@@ -44,6 +57,12 @@ static ncclResult_t ncclCudaCalloc(T** ptr, size_t nelem, bool isFineGrain = fal
else
CUDACHECK(hipMalloc(ptr, nelem*sizeof(T)));
CUDACHECK(hipMemset(*ptr, 0, nelem*sizeof(T)));
int dev;
CUDACHECK(hipGetDevice(&dev));
if (dev < MAX_ALLOC_TRACK_NGPU) {
__atomic_fetch_add(&allocTracker[dev].totalAlloc, 1, __ATOMIC_SEQ_CST);
__atomic_fetch_add(&allocTracker[dev].totalAllocSize, nelem*sizeof(T), __ATOMIC_SEQ_CST);
}
return ncclSuccess;
}