include/nccl_ofi_api.h (50 lines of code) (raw):

/* * Copyright (c) 2017-2022, NVIDIA CORPORATION. All rights reserved. * Copyright (c) 2022-2023 Amazon.com, Inc. or its affiliates. All rights reserved. */ #ifndef NET_OFI_API_H_ #define NET_OFI_API_H_ #include <nccl/err.h> #include <nccl/net.h> struct nccl_ofi_properties; ncclResult_t nccl_net_ofi_init_v2(ncclDebugLogger_t logFunction); ncclResult_t nccl_net_ofi_devices_v2(int *ndev); ncclResult_t nccl_net_ofi_get_properties(int dev, struct nccl_ofi_properties *ofi_properties); ncclResult_t nccl_net_ofi_listen_v2(int dev, void *handle, void **listenComm); ncclResult_t nccl_net_ofi_listen_v5(int dev, void* handle, void **listenComm); // Nvidia introduced the ability to have part of the communication driven by a // cuda kernel, which requires a version-specific device pointer be passed // through the accept/connect APIs. Rather than list all those connect calls // here, we just declare them in the nvidia interface file to keep this list sane. ncclResult_t nccl_net_ofi_connect_v2(int dev, void* handle, void **sendComm); ncclResult_t nccl_net_ofi_connect_v5(int dev, void* handle, void **sendComm); ncclResult_t nccl_net_ofi_accept_v2(void *listenComm, void **recvComm); ncclResult_t nccl_net_ofi_accept_v5(void* listenComm, void** recvComm); ncclResult_t nccl_net_ofi_regMr_v2(void *comm, void *data, int size, int type, void **mhandle); ncclResult_t nccl_net_ofi_regMr_v8(void *comm, void *data, size_t size, int type, void **mhandle); ncclResult_t nccl_net_ofi_regMrDmaBuf_v6(void* comm, void* data, size_t size, int type, uint64_t offset, int fd, void** mhandle); ncclResult_t nccl_net_ofi_deregMr_v2(void *comm, void *mhandle); ncclResult_t nccl_net_ofi_isend_v2(void* sendComm, void* data, int size, void* mhandle, void** request); ncclResult_t nccl_net_ofi_isend_v5(void *sendComm, void* data, int size, int tag, void *mhandle, void** request); ncclResult_t nccl_net_ofi_isend_v9(void *sendComm, void* data, size_t size, int tag, void *mhandle, void** request); ncclResult_t nccl_net_ofi_irecv_v2(void* recvComm, void* data, int size, void* mhandle, void** request); ncclResult_t nccl_net_ofi_irecv_v5(void* recvComm, int n, void** buffers, int* sizes, int *tags, void** mhandles, void** request); ncclResult_t nccl_net_ofi_irecv_v9(void* recvComm, int n, void** buffers, size_t* sizes, int *tags, void** mhandles, void** request); ncclResult_t nccl_net_ofi_test_v2(void *request, int *done, int *size); ncclResult_t nccl_net_ofi_flush_v2(void* recvComm, void* data, int size, void* mhandle); ncclResult_t nccl_net_ofi_iflush_v4(void* recvComm, void* data, int size, void* mhandle, void** request); ncclResult_t nccl_net_ofi_iflush_v5(void* recvComm, int n, void** buffers, int* sizes, void** mhandles, void** request); ncclResult_t nccl_net_ofi_closeSend_v2(void *sendComm); ncclResult_t nccl_net_ofi_closeRecv_v2(void *recvComm); ncclResult_t nccl_net_ofi_closeListen_v2(void *listenComm); ncclResult_t nccl_net_ofi_get_mr_key_v5(void* mhandle, uint64_t* mr_key); ncclResult_t nccl_net_ofi_iwrite_v5(void* sComm, void* src, size_t size, void* mhandle, uint64_t dest, uint64_t mr_key, void** req); ncclResult_t nccl_net_ofi_iwrite_inline_v5(void* sComm, void* src, size_t size, uint64_t dest, uint64_t mr_key, void** req); ncclResult_t nccl_net_ofi_iread_v5(void* rComm, void* dest, size_t size, void* mhandle, uint64_t src, uint64_t mr_key, void** req); #endif // End NET_OFI_API_H_