Skip to content

Commit eb7e92a

Browse files
authored
add riscv spacemit x60 ci (#5852)
1 parent 2a80407 commit eb7e92a

File tree

3 files changed

+136
-4
lines changed

3 files changed

+136
-4
lines changed

.github/workflows/linux-riscv64.yml

+56-4
Original file line numberDiff line numberDiff line change
@@ -96,20 +96,72 @@ jobs:
9696
steps:
9797
- uses: actions/checkout@v4
9898

99-
- name: configure
99+
- name: build
100100
run: |
101101
export RISCV_ROOT_PATH=/data/action/osd/Xuantie-900-gcc-linux-6.6.0-glibc-x86_64-V3.0.1
102102
mkdir build && cd build
103-
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/${{ matrix.cpu }}-v301.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_OPENMP=${{ matrix.OPENMP }} -DNCNN_THREADS=${{ matrix.OPENMP }} -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=${{ matrix.RVV }} -DNCNN_XTHEADVECTOR=${{ matrix.XTHEADVECTOR }} -DNCNN_ZFH=${{ matrix.ZFH }} -DNCNN_ZVFH=${{ matrix.ZVFH }} -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
104-
- name: build
105-
run: cmake --build build -j 8
103+
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/${{ matrix.cpu }}-v301.toolchain.cmake -DCMAKE_BUILD_TYPE=release \
104+
-DNCNN_OPENMP=${{ matrix.OPENMP }} -DNCNN_THREADS=${{ matrix.OPENMP }} \
105+
-DNCNN_RUNTIME_CPU=OFF \
106+
-DNCNN_RVV=${{ matrix.RVV }} \
107+
-DNCNN_XTHEADVECTOR=${{ matrix.XTHEADVECTOR }} \
108+
-DNCNN_ZFH=${{ matrix.ZFH }} \
109+
-DNCNN_ZVFH=${{ matrix.ZVFH }} \
110+
-DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
111+
cmake --build . -j 8
106112
107113
- name: test
108114
run: |
109115
export PATH=/data/action/osd/Xuantie-qemu-x86_64-Ubuntu-20.04-V5.0.4-B20241127-1130/bin:$PATH
110116
cd build
111117
TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;${{ matrix.QEMU_CPU }}" ctest --output-on-failure -j 8
112118
119+
spacemit:
120+
name: spacemit-${{ matrix.cpu }}
121+
runs-on: [self-hosted, linux, ubuntu]
122+
strategy:
123+
fail-fast: false
124+
matrix:
125+
include:
126+
- { cpu: x60, QEMU_CPU: rv64, OPENMP: ON, RVV: ON, XTHEADVECTOR: OFF, ZFH: ON, ZVFH: ON }
127+
128+
steps:
129+
- uses: actions/checkout@v4
130+
131+
- name: build-gcc
132+
run: |
133+
export RISCV_ROOT_PATH=/data/action/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5
134+
mkdir build-gcc && cd build-gcc
135+
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.toolchain.cmake -DCMAKE_BUILD_TYPE=release \
136+
-DNCNN_OPENMP=${{ matrix.OPENMP }} -DNCNN_THREADS=${{ matrix.OPENMP }} \
137+
-DNCNN_RUNTIME_CPU=OFF \
138+
-DNCNN_RVV=${{ matrix.RVV }} \
139+
-DNCNN_XTHEADVECTOR=${{ matrix.XTHEADVECTOR }} \
140+
-DNCNN_ZFH=${{ matrix.ZFH }} \
141+
-DNCNN_ZVFH=${{ matrix.ZVFH }} \
142+
-DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
143+
cmake --build . -j 8
144+
145+
- name: build-llvm
146+
run: |
147+
export RISCV_ROOT_PATH=/data/action/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5
148+
mkdir build-llvm && cd build-llvm
149+
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.llvm.toolchain.cmake -DCMAKE_BUILD_TYPE=release \
150+
-DNCNN_OPENMP=${{ matrix.OPENMP }} -DNCNN_THREADS=${{ matrix.OPENMP }} \
151+
-DNCNN_RUNTIME_CPU=OFF \
152+
-DNCNN_RVV=${{ matrix.RVV }} \
153+
-DNCNN_XTHEADVECTOR=${{ matrix.XTHEADVECTOR }} \
154+
-DNCNN_ZFH=${{ matrix.ZFH }} \
155+
-DNCNN_ZVFH=${{ matrix.ZVFH }} \
156+
-DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON -DNCNN_BUILD_TESTS=ON ..
157+
cmake --build . -j 8
158+
159+
# - name: test-gcc
160+
# run: |
161+
# export PATH=/data/action/osd/spacemit-ai-sdk.v1.1.0/spacemit-qemu/bin:$PATH
162+
# cd build-gcc
163+
# TESTS_EXECUTABLE_LOADER=qemu-riscv64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-cpu;${{ matrix.QEMU_CPU }}" ctest --output-on-failure -j 8
164+
113165
gcc-rvv:
114166
runs-on: [self-hosted, linux, ubuntu]
115167
steps:

toolchains/k1.llvm.toolchain.cmake

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
set(CMAKE_SYSTEM_NAME Linux)
2+
set(CMAKE_SYSTEM_PROCESSOR riscv64)
3+
4+
if(DEFINED ENV{RISCV_ROOT_PATH})
5+
file(TO_CMAKE_PATH $ENV{RISCV_ROOT_PATH} RISCV_ROOT_PATH)
6+
else()
7+
message(FATAL_ERROR "RISCV_ROOT_PATH env must be defined")
8+
endif()
9+
10+
set(RISCV_ROOT_PATH ${RISCV_ROOT_PATH} CACHE STRING "root path to riscv toolchain")
11+
12+
set(CMAKE_C_COMPILER "${RISCV_ROOT_PATH}/bin/clang")
13+
set(CMAKE_CXX_COMPILER "${RISCV_ROOT_PATH}/bin/clang++")
14+
set(CMAKE_SYSROOT "${RISCV_ROOT_PATH}/sysroot")
15+
16+
set(CMAKE_C_COMPILER_TARGET "riscv64-unknown-linux-gnu")
17+
set(CMAKE_CXX_COMPILER_TARGET "riscv64-unknown-linux-gnu")
18+
19+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
20+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
21+
endif()
22+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
23+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
24+
endif()
25+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
26+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
27+
endif()
28+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
29+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
30+
endif()
31+
32+
set(CMAKE_C_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static")
33+
set(CMAKE_CXX_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static")
34+
35+
# cache flags
36+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
37+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
38+
39+
# export RISCV_ROOT_PATH=/home/nihui/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5
40+
# cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.llvm.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_BUILD_TESTS=ON -DNCNN_OPENMP=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_XTHEADVECTOR=OFF -DNCNN_ZFH=ON -DNCNN_ZVFH=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON ..

toolchains/k1.toolchain.cmake

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
set(CMAKE_SYSTEM_NAME Linux)
2+
set(CMAKE_SYSTEM_PROCESSOR riscv64)
3+
4+
if(DEFINED ENV{RISCV_ROOT_PATH})
5+
file(TO_CMAKE_PATH $ENV{RISCV_ROOT_PATH} RISCV_ROOT_PATH)
6+
else()
7+
message(FATAL_ERROR "RISCV_ROOT_PATH env must be defined")
8+
endif()
9+
10+
set(RISCV_ROOT_PATH ${RISCV_ROOT_PATH} CACHE STRING "root path to riscv toolchain")
11+
12+
set(CMAKE_C_COMPILER "${RISCV_ROOT_PATH}/bin/riscv64-unknown-linux-gnu-gcc")
13+
set(CMAKE_CXX_COMPILER "${RISCV_ROOT_PATH}/bin/riscv64-unknown-linux-gnu-g++")
14+
15+
set(CMAKE_FIND_ROOT_PATH "${RISCV_ROOT_PATH}/riscv64-unknown-linux-gnu")
16+
17+
set(CMAKE_SYSROOT "${RISCV_ROOT_PATH}/sysroot")
18+
19+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
20+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
21+
endif()
22+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
23+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
24+
endif()
25+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
26+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
27+
endif()
28+
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
29+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
30+
endif()
31+
32+
set(CMAKE_C_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static")
33+
set(CMAKE_CXX_FLAGS "-march=rv64gc_zba_zbb_zbc_zbs_zicbop -mabi=lp64d -mtune=spacemit-x60 -static")
34+
35+
# cache flags
36+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
37+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")
38+
39+
# export RISCV_ROOT_PATH=/home/nihui/osd/spacemit-toolchain-linux-glibc-x86_64-v1.0.5
40+
# cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/k1.toolchain.cmake -DCMAKE_BUILD_TYPE=release -DNCNN_BUILD_TESTS=ON -DNCNN_OPENMP=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_RVV=ON -DNCNN_XTHEADVECTOR=OFF -DNCNN_ZFH=ON -DNCNN_ZVFH=ON -DNCNN_SIMPLEOCV=ON -DNCNN_BUILD_EXAMPLES=ON ..

0 commit comments

Comments
 (0)