Skip to content

Commit 8171af6

Browse files
gcongiusjeaugey
authored andcommitted
NCCL 2.26.6-1
Fix profiler_v2 compatibility layer * Removing trafficBytes in profiler_v3 breaks casting to ncclProfilerEventDescr_v2_t in the compatibility layer for profiler_v2 interface. This patch fixes the issue by making the conversion between the two descriptors explicit.
1 parent 3000e3c commit 8171af6

File tree

2 files changed

+47
-5
lines changed

2 files changed

+47
-5
lines changed

makefiles/version.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
##### version
22
NCCL_MAJOR := 2
33
NCCL_MINOR := 26
4-
NCCL_PATCH := 5
4+
NCCL_PATCH := 6
55
NCCL_SUFFIX :=
66
PKG_REVISION := 1

src/plugin/profiler/profiler_v2.cc

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,53 @@ static ncclProfiler_t ncclProfiler;
1212
static ncclProfiler_v2_t* ncclProfiler_v2;
1313

1414
static ncclResult_t ncclProfiler_startEvent(void* context, void** eHandle, ncclProfilerEventDescr_t* eDescr) {
15-
if (eDescr->type == ncclProfileKernelCh || eDescr->type == ncclProfileNetPlugin) {
16-
*eHandle = NULL;
17-
return ncclSuccess;
15+
*eHandle = nullptr;
16+
ncclProfilerEventDescr_v2_t eDescr_v2 = { };
17+
eDescr_v2.type = eDescr->type;
18+
eDescr_v2.parentObj = eDescr->parentObj;
19+
eDescr_v2.rank = eDescr->rank;
20+
switch(eDescr->type) {
21+
case ncclProfileGroup: break;
22+
case ncclProfileColl: {
23+
eDescr_v2.coll.name = eDescr->coll.name;
24+
eDescr_v2.coll.commHash = eDescr->coll.commHash;
25+
eDescr_v2.coll.seqNumber = eDescr->coll.seqNumber;
26+
eDescr_v2.coll.func = eDescr->coll.func;
27+
eDescr_v2.coll.sendBuff = eDescr->coll.sendBuff;
28+
eDescr_v2.coll.recvBuff = eDescr->coll.recvBuff;
29+
eDescr_v2.coll.count = eDescr->coll.count;
30+
eDescr_v2.coll.root = eDescr->coll.root;
31+
eDescr_v2.coll.datatype = eDescr->coll.datatype;
32+
eDescr_v2.coll.trafficBytes = 0; // removed in v3
33+
eDescr_v2.coll.nMaxChannels = eDescr->coll.nMaxChannels;
34+
eDescr_v2.coll.nWarps = eDescr->coll.nWarps;
35+
eDescr_v2.coll.algo = eDescr->coll.algo;
36+
eDescr_v2.coll.proto = eDescr->coll.proto;
37+
} break;
38+
case ncclProfileP2p: {
39+
eDescr_v2.p2p.name = eDescr->p2p.name;
40+
eDescr_v2.p2p.commHash = eDescr->p2p.commHash;
41+
eDescr_v2.p2p.func = eDescr->p2p.func;
42+
eDescr_v2.p2p.buff = eDescr->p2p.buff;
43+
eDescr_v2.p2p.count = eDescr->p2p.count;
44+
eDescr_v2.p2p.datatype = eDescr->p2p.datatype;
45+
eDescr_v2.p2p.peer = eDescr->p2p.peer;
46+
} break;
47+
case ncclProfileProxyOp: {
48+
eDescr_v2.proxyOp.pid = eDescr->proxyOp.pid;
49+
eDescr_v2.proxyOp.channelId = eDescr->proxyOp.channelId;
50+
eDescr_v2.proxyOp.peer = eDescr->proxyOp.peer;
51+
eDescr_v2.proxyOp.nSteps = eDescr->proxyOp.nSteps;
52+
eDescr_v2.proxyOp.chunkSize = eDescr->proxyOp.chunkSize;
53+
eDescr_v2.proxyOp.isSend = eDescr->proxyOp.isSend;
54+
} break;
55+
case ncclProfileProxyStep: {
56+
eDescr_v2.proxyStep.step = eDescr->proxyStep.step;
57+
} break;
58+
case ncclProfileProxyCtrl: break;
59+
default: return ncclSuccess;
1860
}
19-
return ncclProfiler_v2->startEvent(context, eHandle, (ncclProfilerEventDescr_v2_t *)eDescr);
61+
return ncclProfiler_v2->startEvent(context, eHandle, &eDescr_v2);
2062
}
2163

2264
static ncclResult_t ncclProfiler_recordEventState(void* eHandle, ncclProfilerEventState_t eState, ncclProfilerEventStateArgs_t* eStateArgs) {

0 commit comments

Comments
 (0)