-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathMakefile
More file actions
107 lines (91 loc) · 2.79 KB
/
Copy pathMakefile
File metadata and controls
107 lines (91 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
.PHONY : build clean check-infini format install-python test test-front
TYPE ?= Release
TEST ?= ON
PLATFORM ?= CPU
USE_CUDA ?= OFF
USE_ASCEND ?= OFF
USE_CAMBRICON ?= OFF
USE_METAX ?= OFF
USE_MOORE ?= OFF
USE_ILUVATAR ?= OFF
USE_HYGON ?= OFF
USE_KUNLUN ?= OFF
COMM ?= OFF
FORMAT_ORIGIN ?=
CMAKE_OPT = -DCMAKE_BUILD_TYPE=$(TYPE)
CMAKE_OPT += -DBUILD_TEST=$(TEST)
# InfiniCore repo address
INFINICORE_URL = git@github.com:InfiniTensor/InfiniCore.git
INFINICORE_DIR = InfiniCore
CUR_DIR := $(shell pwd)
ifeq ($(PLATFORM), CPU)
XMAKE_PLATFORM_FLAG = --cpu=y
else ifeq ($(PLATFORM), CUDA)
XMAKE_PLATFORM_FLAG = --nv-gpu=y
USE_CUDA = ON
else ifeq ($(PLATFORM), ASCEND)
XMAKE_PLATFORM_FLAG = --ascend-npu=y
USE_ASCEND = ON
else ifeq ($(PLATFORM), CAMBRICON)
XMAKE_PLATFORM_FLAG = --cambricon-mlu=y
USE_CAMBRICON = ON
else ifeq ($(PLATFORM), METAX)
XMAKE_PLATFORM_FLAG = --metax-gpu=y --use-mc=y
USE_METAX = ON
else ifeq ($(PLATFORM), MOORE)
XMAKE_PLATFORM_FLAG = --moore-gpu=y
USE_MOORE = ON
else ifeq ($(PLATFORM), ILUVATAR)
XMAKE_PLATFORM_FLAG = --iluvatar-gpu=y
USE_ILUVATAR = ON
else ifeq ($(PLATFORM), HYGON)
XMAKE_PLATFORM_FLAG = --hygon-dcu=y
USE_HYGON = ON
else ifeq ($(PLATFORM), KUNLUN)
XMAKE_PLATFORM_FLAG = --kunlun-xpu=y
USE_KUNLUN = ON
else
$(error Unknown PLATFORM=$(PLATFORM). Supported: CPU, CUDA, ASCEND, CAMBRICON, METAX, MOORE, ILUVATAR, SUGON, KUNLUN)
endif
CMAKE_OPT += -DUSE_CUDA=$(USE_CUDA)
CMAKE_OPT += -DUSE_ASCEND=$(USE_ASCEND)
CMAKE_OPT += -DUSE_CAMBRICON=$(USE_CAMBRICON)
CMAKE_OPT += -DUSE_METAX=$(USE_METAX)
CMAKE_OPT += -DUSE_MOORE=$(USE_MOORE)
CMAKE_OPT += -DUSE_ILUVATAR=$(USE_ILUVATAR)
CMAKE_OPT += -DUSE_HYGON=$(USE_HYGON)
CMAKE_OPT += -DUSE_KUNLUN=$(USE_KUNLUN)
# communication switch
ifeq ($(COMM), ON)
XMAKE_COMM_FLAG = --ccl=y
else
XMAKE_COMM_FLAG = --ccl=n
endif
XMAKE_FLAGS = $(XMAKE_PLATFORM_FLAG) $(XMAKE_COMM_FLAG)
check-infini:
@if [ -z "$$INFINI_ROOT" ]; then \
echo "[INFO] INFINI_ROOT 未设置,开始拉取 InfiniCore ..."; \
if [ ! -d "$(INFINICORE_DIR)" ]; then \
git clone --recursive $(INFINICORE_URL); \
fi; \
echo "[INFO] 开始安装 InfiniCore (PLATFORM=$(PLATFORM), COMM=$(COMM)) ..."; \
cd $(INFINICORE_DIR) && python scripts/install.py $(XMAKE_FLAGS); \
echo "[INFO] 请手动运行 source ./start.sh 设置环境变量"; \
else \
echo "[INFO] 检测到 INFINI_ROOT=$$INFINI_ROOT"; \
fi
# make build PLATFORM=CPU COMM=OFF
build: check-infini
mkdir -p build/$(TYPE)
cd build/$(TYPE) && cmake $(CMAKE_OPT) ../.. && make -j8
install-python: build
cp build/$(TYPE)/pyinfinitensor*.so python/src/infinitensor
pip install -e python/
clean:
rm -rf build && rm -f python/src/infinitensor/*.so
test:
cd build/$(TYPE) && make test
format:
@python3 format.py $(FORMAT_ORIGIN)
test-front:
pytest python/tests/