Skip to content

Commit 7bff4af

Browse files
committed
Merge branch 'main' into Hygon-pr
# Conflicts: # .github/configs/hygon.yml # .github/scripts/set_env/hygon.sh # .github/workflows/unit-test-hygon.yml
2 parents 3df2db9 + 54b156e commit 7bff4af

12 files changed

Lines changed: 2939 additions & 7 deletions

File tree

.github/configs/hygon.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ container_options: >-
2121
--group-add video
2222
-e PLATFORM=hygon
2323
-e FLAGCX_ADAPTOR=du
24-
2524
set_env: .github/scripts/set_env/hygon.sh
2625

2726
unit_test_suites:

.github/scripts/set_env/hygon.sh

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ FLAGCX_CI_COMMON_MAKE_ARGS=(
3434
CCL_HOME="$CUDA_PATH"
3535
)
3636

37-
FLAGCX_CI_PROJECT_MAKE_ARGS=("${FLAGCX_CI_COMMON_MAKE_ARGS[@]}")
37+
# The DU makefile does not currently pull the default device-api backend into
38+
# libflagcx.so by itself, so CI passes it through as an extra source.
39+
FLAGCX_CI_PROJECT_MAKE_ARGS=(
40+
"${FLAGCX_CI_COMMON_MAKE_ARGS[@]}"
41+
PLATFORM_EXTRA_SRCS=flagcx/adaptor/device_api/default_dev_api_backend.cc
42+
)
3843
FLAGCX_CI_TEST_MAKE_ARGS=("${FLAGCX_CI_COMMON_MAKE_ARGS[@]}")
3944

4045
FLAGCX_CI_INTRA_NP=8

.github/workflows/unit-test-hygon.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ concurrency:
1313
jobs:
1414
hygon_unit_tests:
1515
name: Hygon DCU unit tests
16-
uses: ./.github/workflows/unit_tests_common.yml
16+
uses: ./.github/workflows/unit_tests_platform_common.yml
1717
with:
1818
platform: hygon
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
name: Common Platform Unit Tests
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
platform:
7+
description: Platform configuration name
8+
required: true
9+
type: string
10+
11+
jobs:
12+
checkout_and_config:
13+
name: Load platform configuration
14+
runs-on: ubuntu-latest
15+
outputs:
16+
display_name: ${{ steps.config.outputs.display_name }}
17+
ci_image: ${{ steps.config.outputs.ci_image }}
18+
runs_on: ${{ steps.config.outputs.runs_on }}
19+
container_volumes: ${{ steps.config.outputs.container_volumes }}
20+
container_options: ${{ steps.config.outputs.container_options }}
21+
set_env: ${{ steps.config.outputs.set_env }}
22+
unit_test_suites: ${{ steps.config.outputs.unit_test_suites }}
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@v7
26+
with:
27+
repository: ${{ github.event.pull_request.head.repo.full_name || github.repository }}
28+
ref: ${{ github.event.pull_request.head.ref || github.ref }}
29+
persist-credentials: false
30+
31+
- name: Load platform configuration
32+
id: config
33+
env:
34+
FLAGCX_CI_PLATFORM: ${{ inputs.platform }}
35+
run: ruby .github/scripts/ci/load_platform_config.rb "$FLAGCX_CI_PLATFORM"
36+
37+
unit_tests:
38+
name: Unit tests
39+
needs: checkout_and_config
40+
uses: ./.github/workflows/unit_tests_common.yml
41+
with:
42+
platform: ${{ inputs.platform }}
43+
display_name: ${{ needs.checkout_and_config.outputs.display_name }}
44+
runs_on: ${{ needs.checkout_and_config.outputs.runs_on }}
45+
image: ${{ needs.checkout_and_config.outputs.ci_image }}
46+
container_volumes: ${{ needs.checkout_and_config.outputs.container_volumes }}
47+
container_options: ${{ needs.checkout_and_config.outputs.container_options }}
48+
set_env: ${{ needs.checkout_and_config.outputs.set_env }}
49+
suites: ${{ needs.checkout_and_config.outputs.unit_test_suites }}

Makefile

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ USE_TSM ?= 0
1919
USE_MPI ?= 0
2020
USE_UCX ?= 0
2121
USE_IBUC ?= 0
22+
USE_ACCL_BAREX ?= 0
2223
USE_ENFLAME ?= 0
2324
USE_SUNRISE ?= 0
2425
USE_PPU ?= 0
@@ -215,6 +216,20 @@ ifeq ($(USE_IBUC), 1)
215216
NET_ADAPTOR_FLAG += -DUSE_IBUC
216217
endif
217218

219+
# ACCL (accl::barex) transport for PPU + vsolar hosts lacking peer-mem/DMA-BUF.
220+
# Devel package installs under /usr; select at runtime with FLAGCX_P2P_TRANSPORT=accl.
221+
ifeq ($(USE_ACCL_BAREX), 1)
222+
ACCL_BAREX_HOME ?= /usr
223+
ACCL_BAREX_INCLUDE = $(ACCL_BAREX_HOME)/include
224+
ACCL_BAREX_LIB = $(ACCL_BAREX_HOME)/lib
225+
ACCL_BAREX_LINK = -laccl_barex
226+
NET_ADAPTOR_FLAG += -DUSE_ACCL_BAREX -DCMAKE_INCLUDE=1
227+
else
228+
ACCL_BAREX_INCLUDE = .
229+
ACCL_BAREX_LIB = .
230+
ACCL_BAREX_LINK =
231+
endif
232+
218233
ifeq ($(COMPILE_KERNEL), 1)
219234
COMPILE_KERNEL_FLAG = -DCOMPILE_KERNEL
220235
COMPILE_KERNEL_HOST_FLAG = -DCOMPILE_KERNEL_HOST
@@ -325,7 +340,7 @@ endif
325340
$(LIBDIR)/$(TARGET): $(LIBOBJ) $(DEVOBJS)
326341
@mkdir -p `dirname $@`
327342
@echo "Linking $@"
328-
@$(LINKER) $^ -o $@ -L$(CCL_LIB) -L$(DEVICE_LIB) -L$(HOST_CCL_LIB) -L$(UCX_LIB) -shared -fvisibility=default -Wl,--no-as-needed -Wl,-rpath,$(LIBDIR) -Wl,-rpath,$(CCL_LIB) -Wl,-rpath,$(HOST_CCL_LIB) -Wl,-rpath,$(UCX_LIB) -lpthread -lrt -ldl $(CCL_LINK) $(DEVICE_LINK) $(HOST_CCL_LINK) $(UCX_LINK) -g
343+
@$(LINKER) $^ -o $@ -L$(CCL_LIB) -L$(DEVICE_LIB) -L$(HOST_CCL_LIB) -L$(UCX_LIB) -L$(ACCL_BAREX_LIB) -shared -fvisibility=default -Wl,--no-as-needed -Wl,-rpath,$(LIBDIR) -Wl,-rpath,$(CCL_LIB) -Wl,-rpath,$(HOST_CCL_LIB) -Wl,-rpath,$(UCX_LIB) -Wl,-rpath,$(ACCL_BAREX_LIB) -lpthread -lrt -ldl $(CCL_LINK) $(DEVICE_LINK) $(HOST_CCL_LINK) $(UCX_LINK) $(ACCL_BAREX_LINK) -g
329344

330345
# Copy public headers from flagcx/include/ into the build output tree so they
331346
# sit next to the shared libraries (build/include + build/lib).
@@ -337,7 +352,7 @@ $(BUILD_INCDIR)/%.h: flagcx/include/%.h
337352
$(OBJDIR)/%.o: %.cc
338353
@mkdir -p `dirname $@`
339354
@echo "Compiling $@"
340-
@$(HOST_COMPILER) $< -o $@ $(foreach dir,$(INCLUDEDIR),-I$(dir)) -I$(CCL_INCLUDE) $(addprefix -I,$(DEVICE_INCLUDE)) -I$(HOST_CCL_INCLUDE) -I$(UCX_INCLUDE) $(ADAPTOR_FLAG) $(HOST_CCL_ADAPTOR_FLAG) $(NET_ADAPTOR_FLAG) $(COMPILE_KERNEL_HOST_FLAG) -c -fPIC -fvisibility=default -Wvla -Wno-unused-function -Wno-sign-compare -Wall -MMD -MP -g
355+
@$(HOST_COMPILER) $< -o $@ $(foreach dir,$(INCLUDEDIR),-I$(dir)) -I$(CCL_INCLUDE) $(addprefix -I,$(DEVICE_INCLUDE)) -I$(HOST_CCL_INCLUDE) -I$(UCX_INCLUDE) -I$(ACCL_BAREX_INCLUDE) $(ADAPTOR_FLAG) $(HOST_CCL_ADAPTOR_FLAG) $(NET_ADAPTOR_FLAG) $(COMPILE_KERNEL_HOST_FLAG) -c -fPIC -fvisibility=default -Wvla -Wno-unused-function -Wno-sign-compare -Wall -MMD -MP -g
341356

342357
ifeq ($(COMPILE_KERNEL), 1)
343358
$(OBJDIR)/kernel_dlink.o: $(DEVOBJ)

flagcx/adaptor/adaptor.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ extern struct flagcxNetAdaptor flagcxNetIbuc;
177177
#ifdef USE_UCX
178178
extern struct flagcxNetAdaptor flagcxNetUcx;
179179
#endif
180+
181+
#ifdef USE_ACCL_BAREX
182+
extern struct flagcxNetAdaptor flagcxNetBarex;
183+
#endif
180184
extern struct flagcxNetAdaptor flagcxNetIbP2p;
181185

182186
// Unified network adaptor entry point
@@ -189,6 +193,10 @@ struct flagcxNetAdaptor *getUnifiedNetAdaptor(int netType) {
189193
#elif USE_IBUC
190194
// When IBUC is enabled, use IBUC instead of IBRC
191195
return &flagcxNetIbuc;
196+
#elif USE_ACCL_BAREX
197+
// When ACCL barex is enabled (PPU + vsolar hosts), use it instead
198+
// of IBRC; FLAGCX_BAREX_DISABLE=1 falls back to socket at runtime.
199+
return &flagcxNetBarex;
192200
#else
193201
return &flagcxNetIb;
194202
#endif

0 commit comments

Comments
 (0)