Skip to content

Commit e44ca8a

Browse files
committed
Fix several bugs
1 parent 2738cfe commit e44ca8a

7 files changed

Lines changed: 77 additions & 56 deletions

File tree

flagcx/adaptor/device/cuda_adaptor.cc

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,6 @@ flagcxResult_t cudaAdaptorEventQuery(flagcxEvent_t event) {
288288

289289
flagcxResult_t cudaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
290290
size_t *size) {
291-
(*handle) = NULL;
292291
flagcxCalloc(handle, 1);
293292
if (size != NULL) {
294293
*size = sizeof(cudaIpcMemHandle_t);
@@ -298,35 +297,34 @@ flagcxResult_t cudaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
298297

299298
flagcxResult_t cudaAdaptorIpcMemHandleGet(flagcxIpcMemHandle_t handle,
300299
void *devPtr) {
301-
if (devPtr != NULL) {
302-
DEVCHECK(cudaIpcGetMemHandle(&handle->base, devPtr));
300+
if (handle == NULL || devPtr == NULL) {
301+
return flagcxInvalidArgument;
303302
}
303+
DEVCHECK(cudaIpcGetMemHandle(&handle->base, devPtr));
304304
return flagcxSuccess;
305305
}
306306

307307
flagcxResult_t cudaAdaptorIpcMemHandleOpen(flagcxIpcMemHandle_t handle,
308308
void **devPtr) {
309-
if (handle != NULL) {
310-
if (*devPtr != NULL) {
311-
return flagcxInvalidArgument;
312-
}
313-
DEVCHECK(cudaIpcOpenMemHandle(devPtr, handle->base,
314-
cudaIpcMemLazyEnablePeerAccess));
309+
if (handle == NULL || devPtr == NULL || *devPtr != NULL) {
310+
return flagcxInvalidArgument;
315311
}
312+
DEVCHECK(cudaIpcOpenMemHandle(devPtr, handle->base,
313+
cudaIpcMemLazyEnablePeerAccess));
316314
return flagcxSuccess;
317315
}
318316

319317
flagcxResult_t cudaAdaptorIpcMemHandleClose(void *devPtr) {
320-
if (devPtr != NULL) {
321-
DEVCHECK(cudaIpcCloseMemHandle(devPtr));
318+
if (devPtr == NULL) {
319+
return flagcxInvalidArgument;
322320
}
321+
DEVCHECK(cudaIpcCloseMemHandle(devPtr));
323322
return flagcxSuccess;
324323
}
325324

326325
flagcxResult_t cudaAdaptorIpcMemHandleFree(flagcxIpcMemHandle_t handle) {
327326
if (handle != NULL) {
328327
free(handle);
329-
handle = NULL;
330328
}
331329
return flagcxSuccess;
332330
}

flagcx/adaptor/device/ducuda_adaptor.cc

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ flagcxResult_t ducudaAdaptorEventQuery(flagcxEvent_t event) {
233233

234234
flagcxResult_t ducudaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
235235
size_t *size) {
236-
(*handle) = NULL;
237236
flagcxCalloc(handle, 1);
238237
if (size != NULL) {
239238
*size = sizeof(cudaIpcMemHandle_t);
@@ -243,35 +242,34 @@ flagcxResult_t ducudaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
243242

244243
flagcxResult_t ducudaAdaptorIpcMemHandleGet(flagcxIpcMemHandle_t handle,
245244
void *devPtr) {
246-
if (devPtr != NULL) {
247-
DEVCHECK(cudaIpcGetMemHandle(&handle->base, devPtr));
245+
if (handle == NULL || devPtr == NULL) {
246+
return flagcxInvalidArgument;
248247
}
248+
DEVCHECK(cudaIpcGetMemHandle(&handle->base, devPtr));
249249
return flagcxSuccess;
250250
}
251251

252252
flagcxResult_t ducudaAdaptorIpcMemHandleOpen(flagcxIpcMemHandle_t handle,
253253
void **devPtr) {
254-
if (handle != NULL) {
255-
if (*devPtr != NULL) {
256-
return flagcxInvalidArgument;
257-
}
258-
DEVCHECK(cudaIpcOpenMemHandle(devPtr, handle->base,
259-
cudaIpcMemLazyEnablePeerAccess));
254+
if (handle == NULL || devPtr == NULL || *devPtr != NULL) {
255+
return flagcxInvalidArgument;
260256
}
257+
DEVCHECK(cudaIpcOpenMemHandle(devPtr, handle->base,
258+
cudaIpcMemLazyEnablePeerAccess));
261259
return flagcxSuccess;
262260
}
263261

264262
flagcxResult_t ducudaAdaptorIpcMemHandleClose(void *devPtr) {
265-
if (devPtr != NULL) {
266-
DEVCHECK(cudaIpcCloseMemHandle(devPtr));
263+
if (devPtr == NULL) {
264+
return flagcxInvalidArgument;
267265
}
266+
DEVCHECK(cudaIpcCloseMemHandle(devPtr));
268267
return flagcxSuccess;
269268
}
270269

271270
flagcxResult_t ducudaAdaptorIpcMemHandleFree(flagcxIpcMemHandle_t handle) {
272271
if (handle != NULL) {
273272
free(handle);
274-
handle = NULL;
275273
}
276274
return flagcxSuccess;
277275
}

flagcx/adaptor/device/ixcuda_adaptor.cc

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,6 @@ flagcxResult_t ixcudaAdaptorEventQuery(flagcxEvent_t event) {
231231

232232
flagcxResult_t ixcudaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
233233
size_t *size) {
234-
(*handle) = NULL;
235234
flagcxCalloc(handle, 1);
236235
if (size != NULL) {
237236
*size = sizeof(cudaIpcMemHandle_t);
@@ -241,35 +240,34 @@ flagcxResult_t ixcudaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
241240

242241
flagcxResult_t ixcudaAdaptorIpcMemHandleGet(flagcxIpcMemHandle_t handle,
243242
void *devPtr) {
244-
if (devPtr != NULL) {
245-
DEVCHECK(cudaIpcGetMemHandle(&handle->base, devPtr));
243+
if (handle == NULL || devPtr == NULL) {
244+
return flagcxInvalidArgument;
246245
}
246+
DEVCHECK(cudaIpcGetMemHandle(&handle->base, devPtr));
247247
return flagcxSuccess;
248248
}
249249

250250
flagcxResult_t ixcudaAdaptorIpcMemHandleOpen(flagcxIpcMemHandle_t handle,
251251
void **devPtr) {
252-
if (handle != NULL) {
253-
if (*devPtr != NULL) {
254-
return flagcxInvalidArgument;
255-
}
256-
DEVCHECK(cudaIpcOpenMemHandle(devPtr, handle->base,
257-
cudaIpcMemLazyEnablePeerAccess));
252+
if (handle == NULL || devPtr == NULL || *devPtr != NULL) {
253+
return flagcxInvalidArgument;
258254
}
255+
DEVCHECK(cudaIpcOpenMemHandle(devPtr, handle->base,
256+
cudaIpcMemLazyEnablePeerAccess));
259257
return flagcxSuccess;
260258
}
261259

262260
flagcxResult_t ixcudaAdaptorIpcMemHandleClose(void *devPtr) {
263-
if (devPtr != NULL) {
264-
DEVCHECK(cudaIpcCloseMemHandle(devPtr));
261+
if (devPtr == NULL) {
262+
return flagcxInvalidArgument;
265263
}
264+
DEVCHECK(cudaIpcCloseMemHandle(devPtr));
266265
return flagcxSuccess;
267266
}
268267

269268
flagcxResult_t ixcudaAdaptorIpcMemHandleFree(flagcxIpcMemHandle_t handle) {
270269
if (handle != NULL) {
271270
free(handle);
272-
handle = NULL;
273271
}
274272
return flagcxSuccess;
275273
}

flagcx/adaptor/device/maca_adaptor.cc

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,6 @@ flagcxResult_t macaAdaptorEventQuery(flagcxEvent_t event) {
236236

237237
flagcxResult_t macaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
238238
size_t *size) {
239-
(*handle) = NULL;
240239
flagcxCalloc(handle, 1);
241240
if (size != NULL) {
242241
*size = sizeof(mcIpcMemHandle_t);
@@ -246,35 +245,34 @@ flagcxResult_t macaAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
246245

247246
flagcxResult_t macaAdaptorIpcMemHandleGet(flagcxIpcMemHandle_t handle,
248247
void *devPtr) {
249-
if (devPtr != NULL) {
250-
DEVCHECK(mcIpcGetMemHandle(&handle->base, devPtr));
248+
if (handle == NULL || devPtr == NULL) {
249+
return flagcxInvalidArgument;
251250
}
251+
DEVCHECK(mcIpcGetMemHandle(&handle->base, devPtr));
252252
return flagcxSuccess;
253253
}
254254

255255
flagcxResult_t macaAdaptorIpcMemHandleOpen(flagcxIpcMemHandle_t handle,
256256
void **devPtr) {
257-
if (handle != NULL) {
258-
if (*devPtr != NULL) {
259-
return flagcxInvalidArgument;
260-
}
261-
DEVCHECK(
262-
mcIpcOpenMemHandle(devPtr, handle->base, mcIpcMemLazyEnablePeerAccess));
257+
if (handle == NULL || devPtr == NULL || *devPtr != NULL) {
258+
return flagcxInvalidArgument;
263259
}
260+
DEVCHECK(
261+
mcIpcOpenMemHandle(devPtr, handle->base, mcIpcMemLazyEnablePeerAccess));
264262
return flagcxSuccess;
265263
}
266264

267265
flagcxResult_t macaAdaptorIpcMemHandleClose(void *devPtr) {
268-
if (devPtr != NULL) {
269-
DEVCHECK(mcIpcCloseMemHandle(devPtr));
266+
if (devPtr == NULL) {
267+
return flagcxInvalidArgument;
270268
}
269+
DEVCHECK(mcIpcCloseMemHandle(devPtr));
271270
return flagcxSuccess;
272271
}
273272

274273
flagcxResult_t macaAdaptorIpcMemHandleFree(flagcxIpcMemHandle_t handle) {
275274
if (handle != NULL) {
276275
free(handle);
277-
handle = NULL;
278276
}
279277
return flagcxSuccess;
280278
}

flagcx/adaptor/device/mlu_adaptor.cc

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,34 @@ flagcxResult_t mluAdaptorEventQuery(flagcxEvent_t event) {
253253
return res;
254254
}
255255

256+
flagcxResult_t mluAdaptorIpcMemHandleCreate(flagcxIpcMemHandle_t *handle,
257+
size_t *size) {
258+
// to be implemented
259+
return flagcxNotSupported;
260+
}
261+
262+
flagcxResult_t mluAdaptorIpcMemHandleGet(flagcxIpcMemHandle_t handle,
263+
void *devPtr) {
264+
// to be implemented
265+
return flagcxNotSupported;
266+
}
267+
268+
flagcxResult_t mluAdaptorIpcMemHandleOpen(flagcxIpcMemHandle_t handle,
269+
void **devPtr) {
270+
// to be implemented
271+
return flagcxNotSupported;
272+
}
273+
274+
flagcxResult_t mluAdaptorIpcMemHandleClose(void *devPtr) {
275+
// to be implemented
276+
return flagcxNotSupported;
277+
}
278+
279+
flagcxResult_t mluAdaptorIpcMemHandleFree(flagcxIpcMemHandle_t handle) {
280+
// to be implemented
281+
return flagcxNotSupported;
282+
}
283+
256284
struct flagcxDeviceAdaptor mluAdaptor {
257285
"MLU",
258286
// Basic functions
@@ -277,6 +305,10 @@ struct flagcxDeviceAdaptor mluAdaptor {
277305
// Event functions
278306
mluAdaptorEventCreate, mluAdaptorEventDestroy, mluAdaptorEventRecord,
279307
mluAdaptorEventSynchronize, mluAdaptorEventQuery,
308+
// IpcMemHandle functions
309+
mluAdaptorIpcMemHandleCreate, mluAdaptorIpcMemHandleGet,
310+
mluAdaptorIpcMemHandleOpen, mluAdaptorIpcMemHandleClose,
311+
mluAdaptorIpcMemHandleFree,
280312
// Kernel launch
281313
NULL, // flagcxResult_t (*launchKernel)(void *func, unsigned int block_x,
282314
// unsigned int block_y, unsigned int block_z, unsigned int grid_x,

flagcx/service/shmutils.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ flagcxResult_t flagcxShmOpen(char *shmPath, size_t shmPathSize, size_t shmSize,
5656
void *dptr = NULL;
5757
flagcxResult_t ret = flagcxSuccess;
5858
struct shmHandleInternal *tmphandle;
59-
bool create = refcount > 0 ? true : false;
59+
bool create = refcount > 0;
6060
const size_t refSize =
6161
sizeof(int); /* extra sizeof(int) bytes for reference count */
6262
const size_t realShmSize = shmSize + refSize;
@@ -143,8 +143,9 @@ flagcxResult_t flagcxShmClose(flagcxShmHandle_t handle) {
143143
if (tmphandle) {
144144
if (tmphandle->fd >= 0) {
145145
close(tmphandle->fd);
146-
if (tmphandle->shmPath != NULL && tmphandle->refcount != NULL &&
147-
*tmphandle->refcount > 0) {
146+
if (tmphandle->shmPath != NULL &&
147+
(tmphandle->shmPtr == NULL ||
148+
(tmphandle->refcount != NULL && *tmphandle->refcount > 0))) {
148149
if (unlink(tmphandle->shmPath) != 0) {
149150
WARN("unlink shared memory %s failed, error: %s", tmphandle->shmPath,
150151
strerror(errno));

test/perf/test_ipc_sendrecv.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ int main(int argc, char *argv[]) {
6868
void *myShmPtr;
6969
flagcxShmAllocateShareableBuffer(handleSize, &myShmDesc, &myShmPtr, NULL);
7070
memcpy(myShmPtr, (void *)myIpcHandle, handleSize);
71-
printf("proc %d myIpcHandle %s shmPtr %p val %s suffix %s\n", proc,
72-
(char *)myIpcHandle, myShmPtr, (char *)myShmPtr, myShmDesc.shmSuffix);
7371
MPI_Barrier(MPI_COMM_WORLD);
7472

7573
// use MPI_Allgather to collect all shmDescs
@@ -89,9 +87,6 @@ int main(int argc, char *argv[]) {
8987
devHandle->ipcMemHandleCreate(&peerIpcHandle, NULL);
9088
// copy peerShmPtr to peerIpcHandle
9189
memcpy((void *)peerIpcHandle, peerShmPtr, handleSize);
92-
printf("proc %d peerIpcHandle %s shmPtr %p val %s suffix %s\n", proc,
93-
(char *)peerIpcHandle, peerShmPtr, (char *)peerShmPtr,
94-
peerShmDesc.shmSuffix);
9590
MPI_Barrier(MPI_COMM_WORLD);
9691

9792
// open peerIpcHandle
@@ -167,6 +162,7 @@ int main(int argc, char *argv[]) {
167162

168163
// cleanup
169164
flagcxShmIpcClose(&myShmDesc);
165+
flagcxShmIpcClose(&peerShmDesc);
170166
free(allHandles);
171167
devHandle->ipcMemHandleClose(peerbuff);
172168
devHandle->ipcMemHandleFree(myIpcHandle);

0 commit comments

Comments
 (0)