Merge remote-tracking branch 'nccl/master' into develop
Этот коммит содержится в:
@@ -154,7 +154,7 @@ static ncclResult_t netIsend(ncclNet_t* net, void* sendComm, void* data, int siz
|
||||
int* done) {
|
||||
if (*done) return ncclSuccess;
|
||||
if (!*sendReq) {
|
||||
NCCLCHECK(net->isend(sendComm, data, (size_t)size, tag, dataHandle, sendReq));
|
||||
NCCLCHECK(net->isend(sendComm, data, (size_t)size, tag, dataHandle, NULL, sendReq));
|
||||
}
|
||||
if (*sendReq) {
|
||||
NCCLCHECK(net->test(*sendReq, done, NULL));
|
||||
@@ -168,8 +168,8 @@ static ncclResult_t netIrecv(ncclNet_t* net, void* recvComm, void* data, int siz
|
||||
int* done) {
|
||||
if (*done) return ncclSuccess;
|
||||
if (!*recvReq) {
|
||||
size_t size64 = size;
|
||||
NCCLCHECK(net->irecv(recvComm, 1, &data, &size64, &tag, &dataHandle, recvReq));
|
||||
size_t size64 = size;
|
||||
NCCLCHECK(net->irecv(recvComm, 1, &data, &size64, &tag, &dataHandle, NULL, recvReq));
|
||||
}
|
||||
if (*recvReq) {
|
||||
NCCLCHECK(net->test(*recvReq, done, NULL));
|
||||
@@ -485,7 +485,7 @@ static ncclResult_t netGetDevice(int rank, struct ncclComm* comm, int* dev) {
|
||||
if (devOOB < 0) {
|
||||
pthread_mutex_lock(&bootstrapNetLock);
|
||||
if (devOOB < 0) {
|
||||
char* userIfEnv = getenv("NCCL_OOB_NET_IFNAME");
|
||||
const char* userIfEnv = ncclGetEnv("NCCL_OOB_NET_IFNAME");
|
||||
if (userIfEnv && strlen(userIfEnv) > 0) {
|
||||
INFO(NCCL_BOOTSTRAP | NCCL_ENV, "NCCL_OOB_NET_IFNAME set to %s", userIfEnv);
|
||||
bool searchNot = userIfEnv && userIfEnv[0] == '^';
|
||||
@@ -541,7 +541,7 @@ static ncclResult_t netRingConnect(ncclNet_t* net, struct bootstrapListen_t* lis
|
||||
do {
|
||||
NCCLCHECK(checkAbort(abortFlag, &abortCounter));
|
||||
if (!*sendComm)
|
||||
NCCLCHECK(net->connect(listen->net.dev, peerHandle, sendComm, sendDevHandle));
|
||||
NCCLCHECK(net->connect(listen->net.dev, NULL, peerHandle, sendComm, sendDevHandle));
|
||||
if (!*recvComm)
|
||||
NCCLCHECK(net->accept(listen->net.comm, recvComm, recvDevHandle));
|
||||
} while (!*sendComm || !*recvComm);
|
||||
@@ -741,6 +741,8 @@ ncclResult_t bootstrapInit(int nHandles, void* handles, struct ncclComm* comm) {
|
||||
rasRanks[rank].pid = getpid();
|
||||
rasRanks[rank].cudaDev = comm->cudaDev;
|
||||
rasRanks[rank].nvmlDev = comm->nvmlDev;
|
||||
rasRanks[rank].hostHash = getHostHash();
|
||||
rasRanks[rank].pidHash = getPidHash();
|
||||
if (ncclRasCommInit(comm, rasRanks+rank) != ncclSuccess) {
|
||||
INFO(NCCL_INIT|NCCL_RAS, "Continuing in spite of a RAS initialization error");
|
||||
// We should still participate in the ringAllInfo below as the peers will be waiting for us.
|
||||
@@ -972,7 +974,7 @@ ncclResult_t bootstrapRecv(void* commState, int peer, int tag, void* data, int s
|
||||
NCCLCHECK(socketAccept(commState, peer, tag, &sock));
|
||||
TRACE(NCCL_BOOTSTRAP, "Receiving tag=%d peer=%d size=%d", tag, peer, size);
|
||||
NCCLCHECKGOTO(socketRecv(&sock, ((char*)data), size), ret, fail);
|
||||
NCCLCHECK(ncclSocketClose(&sock));
|
||||
NCCLCHECKGOTO(ncclSocketClose(&sock, /*wait*/true), ret, fail);
|
||||
return ret;
|
||||
fail:
|
||||
(void)ncclSocketClose(&sock);
|
||||
@@ -1067,7 +1069,7 @@ static ncclResult_t bootstrapP2PBarrier(void* commState, int* ranks, int rank, i
|
||||
* Based on the dissemination algorithm by Debra Hensgen, Raphael Finkel, and Udi Manbet,
|
||||
* "Two Algorithms for Barrier Synchronization," International Journal of Parallel Programming, 17(1):1-17, 1988"
|
||||
*/
|
||||
int data[1];
|
||||
int data[1] = {0};
|
||||
for (int mask = 1; mask < nranks; mask <<= 1) {
|
||||
int src = (rank - mask + nranks) % nranks;
|
||||
int dst = (rank + mask) % nranks;
|
||||
|
||||
Ссылка в новой задаче
Block a user