2ab8a3a750
Add support for alternating rings, allow for cross-nic rings without
cross-rail communication.
Add support for user buffer registration for network send/recv.
Optimize aggregated operations to better utilize all channels.
Add flattening for BCM PCI gen5 switches.
Add support for inter-node NVLink communication
Add support for port fusion in NET/IB.
Add support for ReduceScatter and AllGather using Collnet.
Update net API to v8.
Fix hang during A2A connection.
[ROCm/rccl commit: b6475625fb]
43 řádky
927 B
C
43 řádky
927 B
C
#ifndef NCCL_REGISTER_H_
|
|
#define NCCL_REGISTER_H_
|
|
|
|
enum {
|
|
NET_REG_COMPLETE = 0x01,
|
|
NVLS_REG_COMPLETE = 0x02,
|
|
NVLS_REG_POSSIBLE = 0x04,
|
|
NVLS_REG_NO_SUPPORT = 0x08
|
|
};
|
|
|
|
struct ncclReg {
|
|
// common attributes
|
|
size_t pages;
|
|
int refs;
|
|
uintptr_t addr;
|
|
uint32_t state;
|
|
// net reg
|
|
int nDevs;
|
|
int devs[MAXCHANNELS];
|
|
void** handles;
|
|
// nvls reg
|
|
uintptr_t baseAddr;
|
|
size_t baseSize;
|
|
CUdeviceptr regAddr;
|
|
size_t regSize;
|
|
int dev;
|
|
CUmemGenericAllocationHandle mcHandle;
|
|
uintptr_t caddrs[NCCL_MAX_LOCAL_RANKS]; /* use to check if NVLS buffers match among intra-node ranks */
|
|
};
|
|
|
|
struct ncclRegCache {
|
|
struct ncclReg **slots;
|
|
int capacity, population;
|
|
uintptr_t pageSize;
|
|
void* sComms[MAXCHANNELS];
|
|
void* rComms[MAXCHANNELS];
|
|
};
|
|
|
|
ncclResult_t ncclRegCleanup(struct ncclComm* comm);
|
|
ncclResult_t ncclRegFind(struct ncclComm* comm, const void* data, size_t size, struct ncclReg** reg);
|
|
|
|
#endif
|