Skip to content

Commit e5e538a

Browse files
committed
device-ir: rename APIs (C/S suffix), add docs, add scalar IR tests
1 parent de06640 commit e5e538a

10 files changed

Lines changed: 2569 additions & 382 deletions

File tree

bindings/ir/flagcx_device_scalar_ir.h

Lines changed: 602 additions & 0 deletions
Large diffs are not rendered by default.

bindings/ir/flagcx_device_scalar_ir_impl.h

Lines changed: 880 additions & 0 deletions
Large diffs are not rendered by default.

bindings/ir/flagcx_device_wrapper.h

Lines changed: 333 additions & 140 deletions
Large diffs are not rendered by default.

bindings/ir/flagcx_device_wrapper_impl.h

Lines changed: 175 additions & 173 deletions
Large diffs are not rendered by default.

bindings/ir/public_symbols.txt

Lines changed: 106 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,124 @@
1-
flagcxCoopAnyInitBlock
2-
flagcxCoopAnyInitLanes
3-
flagcxCoopAnyInitThread
4-
flagcxCoopAnyInitTileSpan
5-
flagcxCoopAnyInitWarp
1+
flagcxCoopAnyInitBlockC
2+
flagcxCoopAnyInitLanesC
3+
flagcxCoopAnyInitThreadC
4+
flagcxCoopAnyInitTileSpanC
5+
flagcxCoopAnyInitWarpC
66
flagcxCoopSizeC
7+
flagcxCoopSizeExS
8+
flagcxCoopSizeS
79
flagcxCoopSyncC
10+
flagcxCoopSyncExS
11+
flagcxCoopSyncS
812
flagcxCoopThreadRankC
13+
flagcxCoopThreadRankExS
14+
flagcxCoopThreadRankS
915
flagcxDataTypeSizeDevice
1016
flagcxDevCommGetIntraRank
1117
flagcxDevCommGetIntraSize
1218
flagcxDevCommGetRank
1319
flagcxDevCommGetSize
14-
flagcxDevNetFlush
15-
flagcxDevNetGet
20+
flagcxDevNetFlushC
21+
flagcxDevNetFlushS
22+
flagcxDevNetGetC
23+
flagcxDevNetGetFromCommS
24+
flagcxDevNetGetS
1625
flagcxDevNetIncreaseSignalShadow
1726
flagcxDevNetInitC
18-
flagcxDevNetPut
19-
flagcxDevNetPutValue
20-
flagcxDevNetPutValue_RCtrInc
21-
flagcxDevNetPutValue_RSigAdd
22-
flagcxDevNetPutValue_RSigInc
23-
flagcxDevNetPut_LCtrInc
24-
flagcxDevNetPut_LSigAdd
25-
flagcxDevNetPut_LSigInc
26-
flagcxDevNetPut_RCtrInc
27-
flagcxDevNetPut_RCtrInc_LCtrInc
28-
flagcxDevNetPut_RCtrInc_LSigAdd
29-
flagcxDevNetPut_RCtrInc_LSigInc
30-
flagcxDevNetPut_RSigAdd
31-
flagcxDevNetPut_RSigAdd_LCtrInc
32-
flagcxDevNetPut_RSigAdd_LSigAdd
33-
flagcxDevNetPut_RSigAdd_LSigInc
34-
flagcxDevNetPut_RSigInc
35-
flagcxDevNetPut_RSigInc_LCtrInc
36-
flagcxDevNetPut_RSigInc_LSigAdd
37-
flagcxDevNetPut_RSigInc_LSigInc
38-
flagcxDevNetReadCounter
39-
flagcxDevNetReadSignal
40-
flagcxDevNetRecv
27+
flagcxDevNetPutC
28+
flagcxDevNetPutS
29+
flagcxDevNetPutS_LCtrInc
30+
flagcxDevNetPutS_LSigAdd
31+
flagcxDevNetPutS_LSigInc
32+
flagcxDevNetPutS_RCtrInc
33+
flagcxDevNetPutS_RCtrInc_LCtrInc
34+
flagcxDevNetPutS_RCtrInc_LSigAdd
35+
flagcxDevNetPutS_RCtrInc_LSigInc
36+
flagcxDevNetPutS_RSigAdd
37+
flagcxDevNetPutS_RSigAdd_LCtrInc
38+
flagcxDevNetPutS_RSigAdd_LSigAdd
39+
flagcxDevNetPutS_RSigAdd_LSigInc
40+
flagcxDevNetPutS_RSigInc
41+
flagcxDevNetPutS_RSigInc_LCtrInc
42+
flagcxDevNetPutS_RSigInc_LSigAdd
43+
flagcxDevNetPutS_RSigInc_LSigInc
44+
flagcxDevNetPutValueC
45+
flagcxDevNetPutValueS
46+
flagcxDevNetPutValueS_RCtrInc
47+
flagcxDevNetPutValueS_RSigAdd
48+
flagcxDevNetPutValueS_RSigInc
49+
flagcxDevNetPutValue_RCtrIncC
50+
flagcxDevNetPutValue_RSigAddC
51+
flagcxDevNetPutValue_RSigIncC
52+
flagcxDevNetPut_LCtrIncC
53+
flagcxDevNetPut_LSigAddC
54+
flagcxDevNetPut_LSigIncC
55+
flagcxDevNetPut_RCtrIncC
56+
flagcxDevNetPut_RCtrInc_LCtrIncC
57+
flagcxDevNetPut_RCtrInc_LSigAddC
58+
flagcxDevNetPut_RCtrInc_LSigIncC
59+
flagcxDevNetPut_RSigAddC
60+
flagcxDevNetPut_RSigAdd_LCtrIncC
61+
flagcxDevNetPut_RSigAdd_LSigAddC
62+
flagcxDevNetPut_RSigAdd_LSigIncC
63+
flagcxDevNetPut_RSigIncC
64+
flagcxDevNetPut_RSigInc_LCtrIncC
65+
flagcxDevNetPut_RSigInc_LSigAddC
66+
flagcxDevNetPut_RSigInc_LSigIncC
67+
flagcxDevNetReadCounterC
68+
flagcxDevNetReadCounterS
69+
flagcxDevNetReadSignalC
70+
flagcxDevNetReadSignalS
71+
flagcxDevNetRecvC
72+
flagcxDevNetRecvS
4173
flagcxDevNetResetCounter
4274
flagcxDevNetResetSignal
43-
flagcxDevNetSend
44-
flagcxDevNetSignalCtrInc
45-
flagcxDevNetSignalSigAdd
46-
flagcxDevNetSignalSigInc
47-
flagcxDevNetTerm
48-
flagcxDevNetWait
49-
flagcxDevNetWaitCounter
50-
flagcxDevNetWaitSignal
51-
flagcxDevNetWaitSignalMeetShadow
75+
flagcxDevNetSendC
76+
flagcxDevNetSendS
77+
flagcxDevNetSignalCtrIncC
78+
flagcxDevNetSignalCtrIncS
79+
flagcxDevNetSignalSigAddC
80+
flagcxDevNetSignalSigAddS
81+
flagcxDevNetSignalSigIncC
82+
flagcxDevNetSignalSigIncS
83+
flagcxDevNetTermC
84+
flagcxDevNetTermS
85+
flagcxDevNetWaitC
86+
flagcxDevNetWaitCounterC
87+
flagcxDevNetWaitCounterS
88+
flagcxDevNetWaitS
89+
flagcxDevNetWaitSignalC
90+
flagcxDevNetWaitSignalMeetShadowC
91+
flagcxDevNetWaitSignalMeetShadowS
92+
flagcxDevNetWaitSignalS
5293
flagcxGetIntraPointerC
94+
flagcxGetIntraPointerS
5395
flagcxGetLocalPointerC
96+
flagcxGetLocalPointerS
5497
flagcxGetMulticastPointerC
98+
flagcxGetMulticastPointerS
5599
flagcxGetPeerPointerC
56-
flagcxGetTeamInter
57-
flagcxGetTeamIntra
58-
flagcxGetTeamWorld
59-
flagcxInterBarrierSessionInit
60-
flagcxInterBarrierSessionSync
61-
flagcxIntraBarrierSessionArrive
62-
flagcxIntraBarrierSessionInit
63-
flagcxIntraBarrierSessionSync
64-
flagcxIntraBarrierSessionWait
100+
flagcxGetPeerPointerS
101+
flagcxGetTeamInterC
102+
flagcxGetTeamIntraC
103+
flagcxGetTeamWorldC
104+
flagcxInterBarrierArriveS
105+
flagcxInterBarrierSessionInitC
106+
flagcxInterBarrierSessionSyncC
107+
flagcxInterBarrierSyncS
108+
flagcxInterBarrierWaitS
109+
flagcxIntraBarrierArriveS
110+
flagcxIntraBarrierSessionArriveC
111+
flagcxIntraBarrierSessionInitC
112+
flagcxIntraBarrierSessionSyncC
113+
flagcxIntraBarrierSessionWaitC
114+
flagcxIntraBarrierSyncS
115+
flagcxIntraBarrierWaitS
65116
flagcxTeamRankToIntraC
117+
flagcxTeamRankToIntraS
66118
flagcxTeamRankToWorldC
67-
flagcxWorldBarrierSessionInit
68-
flagcxWorldBarrierSessionSync
119+
flagcxTeamRankToWorldS
120+
flagcxWorldBarrierArriveS
121+
flagcxWorldBarrierSessionInitC
122+
flagcxWorldBarrierSessionSyncC
123+
flagcxWorldBarrierSyncS
124+
flagcxWorldBarrierWaitS

flagcx/adaptor/include/device_api/flagcx_device_core.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
#include "device_utils.h"
2020
#include "flagcx.h"
2121

22+
// Scalar enum types for IR/Triton integration (shared with native path).
23+
#include "flagcx_device_enums.h"
24+
2225
// Device traits — provides DeviceAPI with all type/function dispatch.
2326
#include "comm_traits.h"
2427

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*************************************************************************
2+
* Copyright (c) 2026 BAAI. All rights reserved.
3+
*
4+
* FlagCX Device API Enums — Scalar enum types for IR/Triton integration.
5+
*
6+
* These enums encode cooperative group kind and team kind as plain
7+
* integers, enabling LLVM IR callers (e.g. Triton) to express these
8+
* concepts without instantiating C++ structs.
9+
*
10+
* Safe to include from: CUDA device code, host code, LLVM bitcode builds.
11+
************************************************************************/
12+
13+
#ifndef FLAGCX_DEVICE_ENUMS_H_
14+
#define FLAGCX_DEVICE_ENUMS_H_
15+
16+
#include <stdint.h>
17+
18+
/* ================================================================
19+
* Cooperative Group Kind
20+
*
21+
* Identifies the cooperation scope for collective device operations.
22+
* Used by the scalar IR API in place of struct-based cooperative groups.
23+
* ================================================================ */
24+
typedef enum {
25+
FLAGCX_COOP_THREAD = 0, /* Single thread (no cooperation) */
26+
FLAGCX_COOP_WARP = 1, /* Full warp (FLAGCX_SIMT_WIDTH threads) */
27+
FLAGCX_COOP_BLOCK = 2, /* Entire CTA */
28+
FLAGCX_COOP_TILE_SPAN = 3, /* Consecutive tile span (needs t0, nTiles, id) */
29+
FLAGCX_COOP_LANES = 4, /* Arbitrary lane bitmask */
30+
} flagcxCoopKind_t;
31+
32+
/* ================================================================
33+
* Team Kind
34+
*
35+
* Identifies the team scope within a communicator.
36+
* Used by the scalar IR API in place of struct-based teams.
37+
* ================================================================ */
38+
typedef enum {
39+
FLAGCX_TEAM_INTRA = 0, /* Intra-node ranks */
40+
FLAGCX_TEAM_INTER = 1, /* Inter-node representatives */
41+
FLAGCX_TEAM_WORLD = 2, /* All ranks */
42+
} flagcxTeamKind_t;
43+
44+
#endif /* FLAGCX_DEVICE_ENUMS_H_ */

0 commit comments

Comments
 (0)