@@ -92,6 +92,24 @@ ncclResult_t ncclIbGetProperties(int dev, ncclNetProperties_t* props)
9292 return nccl_p2p_ib_get_properties (ncclIbDevs , dev , props );
9393}
9494
95+ ncclResult_t ncclIbGetProperties_v6 (int dev , ncclNetProperties_v6_t * props_v6 )
96+ {
97+ ncclNetProperties_t props ;
98+ ncclResult_t ret = nccl_p2p_ib_get_properties (ncclIbDevs , dev , & props );
99+ if (ret != ncclSuccess ) return ret ;
100+ props_v6 -> name = props .name ;
101+ props_v6 -> pciPath = props .pciPath ;
102+ props_v6 -> guid = props .guid ;
103+ props_v6 -> ptrSupport = props .ptrSupport ;
104+ props_v6 -> speed = props .speed ;
105+ props_v6 -> latency = props .latency ;
106+ props_v6 -> port = props .port ;
107+ props_v6 -> maxComms = props .maxComms ;
108+ props_v6 -> maxRecvs = props .maxRecvs ;
109+
110+ return ncclSuccess ;
111+ }
112+
95113static ncclResult_t GetSocketAddr (union ncclSocketAddress * addr ) {
96114 memcpy (addr , & ncclIbIfAddr , sizeof (* addr ));
97115 return ncclSuccess ;
@@ -345,7 +363,7 @@ ncclResult_t ncclIbListen(int dev, void* opaqueHandle, void** listenComm) {
345363 return ncclSuccess ;
346364}
347365
348- ncclResult_t ncclIbConnect (int dev , void * opaqueHandle , void * * sendComm ) {
366+ ncclResult_t ncclIbConnect (int dev , void * opaqueHandle , void * * sendComm , ncclNetDeviceHandle_t * * sendDevComm ) {
349367 struct ncclIbHandle * handle = (struct ncclIbHandle * ) opaqueHandle ;
350368 enum ncclSocketState conState ;
351369 struct ncclIbCommStage * stage = & handle -> stage ;
@@ -461,9 +479,14 @@ ncclResult_t ncclIbConnect(int dev, void* opaqueHandle, void** sendComm) {
461479 return ncclSuccess ;
462480}
463481
482+ ncclResult_t ncclIbConnect_v6 (int dev , void * opaqueHandle , void * * sendComm ) {
483+ ncclNetDeviceHandle_v7_t * handle = NULL ;
484+ return ncclIbConnect (dev , opaqueHandle , sendComm , & handle );
485+ }
486+
464487NCCL_PARAM (IbGdrFlushDisable , "GDR_FLUSH_DISABLE" , 0 );
465488
466- ncclResult_t ncclIbAccept (void * listenComm , void * * recvComm ) {
489+ ncclResult_t ncclIbAccept (void * listenComm , void * * recvComm , ncclNetDeviceHandle_t * * recvDevComm ) {
467490 struct ncclIbListenComm * lComm = (struct ncclIbListenComm * )listenComm ;
468491 struct ncclIbCommStage * stage = & lComm -> stage ;
469492 struct ncclIbRecvComm * rComm = (struct ncclIbRecvComm * )stage -> comm ;
@@ -604,6 +627,10 @@ ncclResult_t ncclIbAccept(void* listenComm, void** recvComm) {
604627 stage -> buffer = NULL ;
605628 return ncclSuccess ;
606629}
630+ ncclResult_t ncclIbAccept_v6 (void * listenComm , void * * recvComm ) {
631+ ncclNetDeviceHandle_v7_t * handle = NULL ;
632+ return ncclIbAccept (listenComm , recvComm , & handle );
633+ }
607634
608635ncclResult_t ncclIbGetRequest (struct ncclIbVerbs * verbs , struct ncclIbRequest * * req ) {
609636 for (int i = 0 ; i < MAX_REQUESTS ; i ++ ) {
@@ -1117,8 +1144,8 @@ ncclResult_t ncclIbCloseListen(void* listenComm) {
11171144 return ncclSuccess ;
11181145}
11191146
1120- const ncclNet_v6_t ibPlugin_v6 = {
1121- .name = "IBext " ,
1147+ const ncclNet_v7_t ibPlugin_v7 = {
1148+ .name = "IBext_v7 " ,
11221149 .init = ncclIbInit ,
11231150 .devices = ncclIbDevices ,
11241151 .getProperties = ncclIbGetProperties ,
@@ -1135,17 +1162,20 @@ const ncclNet_v6_t ibPlugin_v6 = {
11351162 .closeSend = ncclIbCloseSend ,
11361163 .closeRecv = ncclIbCloseRecv ,
11371164 .closeListen = ncclIbCloseListen ,
1165+ NULL /* getDeviceMr */ ,
1166+ NULL /* irecvConsumed */
11381167};
11391168
1140- const ncclNet_v5_t ibPlugin_v5 = {
1141- .name = "IBext " ,
1169+ const ncclNet_v6_t ibPlugin_v6 = {
1170+ .name = "IBext_v6 " ,
11421171 .init = ncclIbInit ,
11431172 .devices = ncclIbDevices ,
1144- .getProperties = ncclIbGetProperties ,
1173+ .getProperties = ncclIbGetProperties_v6 ,
11451174 .listen = ncclIbListen ,
1146- .connect = ncclIbConnect ,
1147- .accept = ncclIbAccept ,
1175+ .connect = ncclIbConnect_v6 ,
1176+ .accept = ncclIbAccept_v6 ,
11481177 .regMr = ncclIbRegMr ,
1178+ .regMrDmaBuf = ncclIbRegMrDmaBuf ,
11491179 .deregMr = ncclIbDeregMr ,
11501180 .isend = ncclIbIsend ,
11511181 .irecv = ncclIbIrecv ,
@@ -1156,58 +1186,19 @@ const ncclNet_v5_t ibPlugin_v5 = {
11561186 .closeListen = ncclIbCloseListen ,
11571187};
11581188
1159- static ncclResult_t ncclIbGetProperties_v4 (int dev , ncclNetProperties_v4_t * props ) {
1160- ncclNetProperties_v6_t props_v6 ;
1161- ncclResult_t ret = ncclIbGetProperties (dev , & props_v6 );
1162- if (ret != ncclSuccess ) return ret ;
1163- props -> name = props_v6 .name ;
1164- props -> pciPath = props_v6 .pciPath ;
1165- props -> guid = props_v6 .guid ;
1166- props -> ptrSupport = props_v6 .ptrSupport ;
1167- props -> speed = props_v6 .speed ;
1168- props -> port = props_v6 .port ;
1169- props -> maxComms = props_v6 .maxComms ;
1170- return ncclSuccess ;
1171- }
1172- static ncclResult_t ncclIbIsend_v4 (void * sendComm , void * data , int size , void * mhandle , void * * request ) {
1173- return ncclIbIsend (sendComm , data , size , 0 , mhandle , request );
1174- }
1175- static ncclResult_t ncclIbIrecv_v4 (void * recvComm , void * data , int size , void * mhandle , void * * request ) {
1176- int tag = 0 ;
1177- return ncclIbIrecv (recvComm , 1 , & data , & size , & tag , & mhandle , request );
1178- }
1179- static ncclResult_t ncclIbIflush_v4 (void * recvComm , void * data , int size , void * mhandle , void * * request ) {
1180- return ncclIbIflush (recvComm , 1 , & data , & size , & mhandle , request );
1181- }
1182- static ncclResult_t ncclIbConnect_v4 (int dev , void * handle , void * * sendComm ) {
1183- ncclResult_t ret ;
1184- do {
1185- ret = ncclIbConnect (dev , handle , sendComm );
1186- } while (ret == ncclSuccess && * sendComm == NULL );
1187- return ret ;
1188- }
1189- static ncclResult_t ncclIbAccept_v4 (void * listenComm , void * * recvComm ) {
1190- ncclResult_t ret ;
1191- do {
1192- ret = ncclIbAccept (listenComm , recvComm );
1193- } while (ret == ncclSuccess && * recvComm == NULL );
1194- return ret ;
1195- }
1196-
1197-
1198- const ncclNet_v4_t ibPlugin_v4 = {
1199- .name = "IBext" ,
1189+ const ncclNet_v5_t ibPlugin_v5 = {
1190+ .name = "IBext_v5" ,
12001191 .init = ncclIbInit ,
12011192 .devices = ncclIbDevices ,
1202- .getProperties = ncclIbGetProperties_v4 ,
1193+ .getProperties = ncclIbGetProperties_v6 ,
12031194 .listen = ncclIbListen ,
1204- .connect = ncclIbConnect_v4 ,
1205- .accept = ncclIbAccept_v4 ,
1195+ .connect = ncclIbConnect_v6 ,
1196+ .accept = ncclIbAccept_v6 ,
12061197 .regMr = ncclIbRegMr ,
12071198 .deregMr = ncclIbDeregMr ,
1208- .isend = ncclIbIsend_v4 ,
1209- .irecv = ncclIbIrecv_v4 ,
1210- .iflush = ncclIbIflush_v4 ,
1199+ .isend = ncclIbIsend ,
1200+ .irecv = ncclIbIrecv ,
1201+ .iflush = ncclIbIflush ,
12111202 .test = ncclIbTest ,
12121203 .closeSend = ncclIbCloseSend ,
12131204 .closeRecv = ncclIbCloseRecv ,
0 commit comments