Browse Source

update loongarch ci toolchain, add loongarch lsx coverage (#4747)

tags/20230816
nihui GitHub 3 years ago
parent
commit
07c2cac091
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 115 additions and 31 deletions
  1. +85
    -0
      .ci/test-coverage.yml
  2. +30
    -31
      .github/workflows/linux-loongarch64-cpu-gcc.yml

+ 85
- 0
.ci/test-coverage.yml View File

@@ -815,3 +815,88 @@ jobs:
lcov --list lcov.info
- name: codecov-vlen256
run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info

linux-gcc-loongarch64:
name: linux-gcc-loongarch64
strategy:
matrix:
OPENMP: ['OFF', 'ON']

runs-on:
pool-name: docker
container:
image: bkci/ci:ubuntu
steps:
- name: checkout
checkout: self
with:
strategy: FRESH_CHECKOUT
enableSubmodule: false
enableGitLfs: false

- name: install-deps
run: |
apt-get update
apt-get install -y lcov libcapstone4 libglib2.0-0 python3-venv
curl https://uploader.codecov.io/verification.gpg | gpg --no-default-keyring --keyring trustedkeys.gpg --import
curl -Os https://uploader.codecov.io/latest/linux/codecov
curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM
curl -Os https://uploader.codecov.io/latest/linux/codecov.SHA256SUM.sig
gpgv codecov.SHA256SUM.sig codecov.SHA256SUM
shasum -a 256 -c codecov.SHA256SUM
chmod +x codecov
wget https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/download/8.0/loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz
tar -xf loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz

- name: cache-qemu
id: cache-qemu
uses: cache@1.*
with:
cachePaths: qemu-install
cacheKey: qemu-loongarch64-install-20230524

- name: checkout-qemu
if: steps.cache-qemu.outputs.cacheHit != 'true'
checkout: https://github.com/qemu/qemu.git
with:
pullType: COMMIT_ID
refName: 1c12355b31046a6b35a4f50c85c4f01afb1bd728
localPath: qemu
enableSubmodule: false
enableGitLfs: false

- name: qemu
if: steps.cache-qemu.outputs.cacheHit != 'true'
run: |
echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye main' | tee -a /etc/apt/sources.list
echo 'deb-src http://mirrors.cloud.tencent.com/debian bullseye-updates main' | tee -a /etc/apt/sources.list
apt-get update
apt-get build-dep -y qemu
cd qemu
wget https://github.com/nihui/ncnn-assets/raw/master/qemu-patches/0001-linux-user-Expose-loongarch-lsx-isa-bit-in-get_elf_hwcap.patch
patch -p1 -i 0001-linux-user-Expose-loongarch-lsx-isa-bit-in-get_elf_hwcap.patch
./configure --prefix=${{ci.workspace}}/qemu-install --target-list=loongarch64-linux-user --disable-system
make -j$(nproc)
make install

- name: build
run: |
export LOONGARCH64_ROOT_PATH=${{ci.workspace}}/cross-tools
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/loongarch64-unknown-linux-gnu.toolchain.cmake -DCMAKE_BUILD_TYPE=debug -DNCNN_COVERAGE=ON -DNCNN_RUNTIME_CPU=OFF -DNCNN_LSX=ON -DNCNN_OPENMP=${{matrix.OPENMP}} -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..
cmake --build . -j $(nproc)
- name: test
run: |
export PATH=${{ci.workspace}}/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-loongarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;${{ci.workspace}}/cross-tools/target" ctest --output-on-failure -j $(nproc)
- name: lcov-collect
run: |
cd build
lcov --gcov-tool ${{ci.workspace}}/cross-tools/bin/loongarch64-unknown-linux-gnu-gcov -d ./src -c -o lcov.info
lcov -r lcov.info '/usr/*' -o lcov.info
lcov -r lcov.info '*/build/*' -o lcov.info
lcov -r lcov.info '*/cross-tools/*' -o lcov.info
lcov --list lcov.info
- name: codecov
run: ./codecov -t ${{settings.CODECOV_TOKEN.access_token}} -C ${{ ci.sha }} -B ${{ ci.head_ref }} -f build/lcov.info

+ 30
- 31
.github/workflows/linux-loongarch64-cpu-gcc.yml View File

@@ -37,42 +37,41 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: loongarch64-toolchain
run: |
wget https://github.com/loongson/build-tools/releases/download/2022.05.29/loongarch64-clfs-5.0-cross-tools-gcc-full.tar.xz
tar -xf loongarch64-clfs-5.0-cross-tools-gcc-full.tar.xz
wget https://github.com/loongson/build-tools/releases/download/2022.05.29/qemu-loongarch64
chmod +x qemu-loongarch64
# - name: cache-qemu
# id: cache-qemu
# uses: actions/cache@v3
# with:
# path: qemu-install
# key: qemu-loongarch64-install-20230524
# - name: checkout-qemu
# if: steps.cache-qemu.outputs.cache-hit != 'true'
# uses: actions/checkout@v3
# with:
# repository: qemu/qemu
# path: qemu
# ref: 1c12355b31046a6b35a4f50c85c4f01afb1bd728
# - name: qemu
# if: steps.cache-qemu.outputs.cache-hit != 'true'
# run: |
# cd qemu
# ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=loongarch64-linux-user --disable-system
# make -j2
# make install

# - name: loongarch64-toolchain
# run: |
# wget https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/download/8.0/loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz
# tar -xf loongarch64-clfs-8.0-cross-tools-gcc-full.tar.xz

- name: configure
- name: build
run: |
export LOONGARCH64_ROOT_PATH=$GITHUB_WORKSPACE/cross-tools
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/cross-tools/target/usr/lib64:$LD_LIBRARY_PATH
export LOONGARCH64_ROOT_PATH=/data/action/osd/cross-tools
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/loongarch64-unknown-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..

- name: build
run: cmake --build build -j 4
cmake --build . -j 4

- name: test
run: |
export PATH=$GITHUB_WORKSPACE:$PATH
export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/cross-tools/target/usr/lib64:$LD_LIBRARY_PATH
export PATH=/data/action/osd/qemu-loongson/qemu-install/bin:$PATH
cd build
TESTS_EXECUTABLE_LOADER=qemu-loongarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;$GITHUB_WORKSPACE/cross-tools/target/usr" ctest --output-on-failure -j 4

linux-gcc-loongarch64-lsx:
runs-on: [self-hosted, linux, centos]

steps:
- uses: actions/checkout@v3

- name: configure
run: |
export LOONGARCH64_ROOT_PATH=/data/action/osd/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.1
export LD_LIBRARY_PATH=/data/action/osd/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.1/sysroot/usr/lib64:$LD_LIBRARY_PATH
mkdir build && cd build
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/loongarch64-linux-gnu.toolchain.cmake -DNCNN_BUILD_TOOLS=OFF -DNCNN_BUILD_EXAMPLES=OFF -DNCNN_BUILD_TESTS=ON ..

- name: build
run: cmake --build build -j 4
TESTS_EXECUTABLE_LOADER=qemu-loongarch64 TESTS_EXECUTABLE_LOADER_ARGUMENTS="-L;/data/action/osd/cross-tools/target" ctest --output-on-failure -j 4

Loading…
Cancel
Save