/* * Copyright (c) 2016-2023, NVIDIA CORPORATION. All rights reserved. * * See COPYRIGHT for license information */ #ifndef NCCL_IPCSOCKET_H #define NCCL_IPCSOCKET_H #include "nccl.h" #include #include #include #include #include #include #include #include #include #include #include #define NCCL_IPC_SOCKNAME_LEN 64 struct ncclIpcSocket { int fd; char socketName[NCCL_IPC_SOCKNAME_LEN]; volatile uint32_t* abortFlag; }; ncclResult_t ncclIpcSocketInit(struct ncclIpcSocket *handle, int rank, uint64_t hash, volatile uint32_t* abortFlag); ncclResult_t ncclIpcSocketClose(struct ncclIpcSocket *handle); ncclResult_t ncclIpcSocketGetFd(struct ncclIpcSocket* handle, int* fd); ncclResult_t ncclIpcSocketRecvFd(struct ncclIpcSocket *handle, int *fd); ncclResult_t ncclIpcSocketSendFd(struct ncclIpcSocket *handle, const int fd, int rank, uint64_t hash); ncclResult_t ncclIpcSocketSendMsg(ncclIpcSocket *handle, void *hdr, int hdrLen, const int sendFd, int rank, uint64_t hash); ncclResult_t ncclIpcSocketRecvMsg(ncclIpcSocket *handle, void *hdr, int hdrLen, int *recvFd); #endif /* NCCL_IPCSOCKET_H */