[Common] Use NCCL API to allocate/free memory (#144)

Tá an tiomantas seo le fáil i:
Bertan Dogancay
2025-07-24 11:14:49 -04:00
tiomanta ag GitHub
tuismitheoir a9b1ce0456
tiomantas 645be0eb45
+12
Féach ar an gComhad
@@ -1040,9 +1040,15 @@ testResult_t AllocateBuffs(void **sendbuff, size_t sendBytes, void **recvbuff, s
#endif #endif
} }
else { else {
#if NCCL_VERSION_CODE >= NCCL_VERSION(2,19,0)
NCCLCHECK(ncclMemAlloc(sendbuff, nbytes));
NCCLCHECK(ncclMemAlloc(recvbuff, nbytes));
if (datacheck) NCCLCHECK(ncclMemAlloc(expected, recvBytes));
#else
CUDACHECK(cudaMalloc(sendbuff, nbytes)); CUDACHECK(cudaMalloc(sendbuff, nbytes));
CUDACHECK(cudaMalloc(recvbuff, nbytes)); CUDACHECK(cudaMalloc(recvbuff, nbytes));
if (datacheck) CUDACHECK(cudaMalloc(expected, recvBytes)); if (datacheck) CUDACHECK(cudaMalloc(expected, recvBytes));
#endif
} }
CUDACHECK(hipMemset(*sendbuff, 1, nbytes)); CUDACHECK(hipMemset(*sendbuff, 1, nbytes));
if (datacheck) CUDACHECK(hipMemset(*expected, 1, recvBytes)); if (datacheck) CUDACHECK(hipMemset(*expected, 1, recvBytes));
@@ -1676,9 +1682,15 @@ testResult_t run() {
// Free off CUDA allocated memory // Free off CUDA allocated memory
for (int i=0; i<nGpus*nThreads; i++) { for (int i=0; i<nGpus*nThreads; i++) {
#if NCCL_VERSION_CODE >= NCCL_VERSION(2,19,0)
if (sendbuffs[i]) NCCLCHECK(ncclMemFree((char*)sendbuffs[i]));
if (recvbuffs[i]) NCCLCHECK(ncclMemFree((char*)recvbuffs[i]));
if (datacheck) NCCLCHECK(ncclMemFree(expected[i]));
#else
if (sendbuffs[i]) CUDACHECK(cudaFree((char*)sendbuffs[i])); if (sendbuffs[i]) CUDACHECK(cudaFree((char*)sendbuffs[i]));
if (recvbuffs[i]) CUDACHECK(cudaFree((char*)recvbuffs[i])); if (recvbuffs[i]) CUDACHECK(cudaFree((char*)recvbuffs[i]));
if (datacheck) CUDACHECK(cudaFree(expected[i])); if (datacheck) CUDACHECK(cudaFree(expected[i]));
#endif
} }
CUDACHECK(cudaFreeHost(delta)); CUDACHECK(cudaFreeHost(delta));
#if NCCL_VERSION_CODE >= NCCL_VERSION(2,19,0) #if NCCL_VERSION_CODE >= NCCL_VERSION(2,19,0)