diff --git a/.github/workflows/apple_m.yml b/.github/workflows/apple_m.yml deleted file mode 100644 index e34eada86..000000000 --- a/.github/workflows/apple_m.yml +++ /dev/null @@ -1,149 +0,0 @@ -name: apple m - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - build: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: macos-14 - - strategy: - fail-fast: false - matrix: - build: [cmake, make] - fortran: [gfortran] - openmp: [0, 1] - ilp64: [0, 1] - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Print system information - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - cat /proc/cpuinfo - elif [ "$RUNNER_OS" == "macOS" ]; then - sysctl -a | grep machdep.cpu - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - - - name: Install Dependencies - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get install -y gfortran cmake ccache libtinfo5 - elif [ "$RUNNER_OS" == "macOS" ]; then - # It looks like "gfortran" isn't working correctly unless "gcc" is re-installed. - brew reinstall gcc - brew install coreutils cmake ccache - brew install llvm - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - # We include the commit sha in the cache key, as new cache entries are - # only created if there is no existing entry for the key yet. - # GNU make and cmake call the compilers differently. It looks like - # that causes the cache to mismatch. Keep the ccache for both build - # tools separate to avoid polluting each other. - key: ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }}-${{ github.sha }} - # Restore a matching ccache cache entry. Prefer same branch and same Fortran compiler. - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.build }}-${{matrix.fortran }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.build }}-${{matrix.fortran }} - ccache-${{ runner.os }}-${{ matrix.build }} - - - name: Configure ccache - run: | - if [ "${{ matrix.build }}" = "make" ]; then - # Add ccache to path - if [ "$RUNNER_OS" = "Linux" ]; then - echo "/usr/lib/ccache" >> $GITHUB_PATH - elif [ "$RUNNER_OS" = "macOS" ]; then - echo "$(brew --prefix)/opt/ccache/libexec" >> $GITHUB_PATH - echo "/opt/homebrew/opt/llvm/bin" >>$GITHUB_PATH - echo "" >>$GITHUB_PATH - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - fi - # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota (5 GB). - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: Build OpenBLAS - run: | - export LDFLAGS="-L/opt/homebrew/opt/llvm/lib" - export CPPFLAGS="-I/opt/homebrew/opt/llvm/include" - export CC="/opt/homebrew/opt/llvm/bin/clang" - case "${{ matrix.build }}" in - "make") - make -j$(nproc) DYNAMIC_ARCH=1 USE_OPENMP=${{matrix.openmp}} INTERFACE64=${{matrix.ilp64}} FC="ccache ${{ matrix.fortran }}" - ;; - "cmake") - export LDFLAGS="$LDFLAGS -Wl,-ld_classic" - mkdir build && cd build - cmake -DDYNAMIC_ARCH=1 \ - -DUSE_OPENMP=${{matrix.openmp}} \ - -DINTERFACE64=${{matrix.ilp64}} \ - -DNOFORTRAN=0 \ - -DBUILD_WITHOUT_LAPACK=0 \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_Fortran_COMPILER=${{ matrix.fortran }} \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_Fortran_COMPILER_LAUNCHER=ccache \ - .. - cmake --build . - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac - - - name: Show ccache status - continue-on-error: true - run: ccache -s - - - name: Run tests - timeout-minutes: 60 - run: | - case "${{ matrix.build }}" in - "make") - MAKE_FLAGS='DYNAMIC_ARCH=1 USE_OPENMP=0' - echo "::group::Tests in 'test' directory" - make -C test $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - echo "::group::Tests in 'ctest' directory" - make -C ctest $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - echo "::group::Tests in 'utest' directory" - make -C utest $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - ;; - "cmake") - cd build && ctest - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac diff --git a/.github/workflows/arm64_graviton.yml b/.github/workflows/arm64_graviton.yml deleted file mode 100644 index 6928312b5..000000000 --- a/.github/workflows/arm64_graviton.yml +++ /dev/null @@ -1,139 +0,0 @@ -name: arm64 graviton cirun - -on: - push: - branches: - - develop - - release-** - pull_request: - branches: - - develop - - release-** - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - build: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: "cirun-aws-runner-graviton--${{ github.run_id }}" - - strategy: - fail-fast: false - matrix: - fortran: [gfortran] - build: [cmake, make] - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Print system information - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - cat /proc/cpuinfo - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - - - name: Install Dependencies - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt update - sudo apt-get install -y gfortran cmake ccache libtinfo5 - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - # We include the commit sha in the cache key, as new cache entries are - # only created if there is no existing entry for the key yet. - # GNU make and cmake call the compilers differently. It looks like - # that causes the cache to mismatch. Keep the ccache for both build - # tools separate to avoid polluting each other. - key: ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }}-${{ github.sha }} - # Restore a matching ccache cache entry. Prefer same branch and same Fortran compiler. - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }} - ccache-${{ runner.os }}-${{ matrix.build }} - - - name: Configure ccache - run: | - if [ "${{ matrix.build }}" = "make" ]; then - # Add ccache to path - if [ "$RUNNER_OS" = "Linux" ]; then - echo "/usr/lib/ccache" >> $GITHUB_PATH - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - fi - # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota (5 GB). - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: Build OpenBLAS - run: | - case "${{ matrix.build }}" in - "make") - make -j$(nproc) DYNAMIC_ARCH=1 USE_OPENMP=0 FC="ccache ${{ matrix.fortran }}" - ;; - "cmake") - mkdir build && cd build - cmake -DDYNAMIC_ARCH=1 \ - -DNOFORTRAN=0 \ - -DBUILD_WITHOUT_LAPACK=0 \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_Fortran_COMPILER=${{ matrix.fortran }} \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_Fortran_COMPILER_LAUNCHER=ccache \ - .. - cmake --build . - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac - - - name: Show ccache status - continue-on-error: true - run: ccache -s - - - name: Run tests - timeout-minutes: 60 - run: | - case "${{ matrix.build }}" in - "make") - MAKE_FLAGS='DYNAMIC_ARCH=1 USE_OPENMP=0' - echo "::group::Tests in 'test' directory" - make -C test $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - echo "::group::Tests in 'ctest' directory" - make -C ctest $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - echo "::group::Tests in 'utest' directory" - make -C utest $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - ;; - "cmake") - cd build && ctest - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac diff --git a/.github/workflows/c910v.yml b/.github/workflows/c910v.yml deleted file mode 100644 index a47ca1dce..000000000 --- a/.github/workflows/c910v.yml +++ /dev/null @@ -1,127 +0,0 @@ -name: c910v qemu test - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - TEST: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ubuntu-latest - env: - xuetie_toolchain: https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1698113812618 - toolchain_file_name: Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.8.0-20231018.tar.gz - strategy: - fail-fast: false - matrix: - include: - - target: RISCV64_GENERIC - triple: riscv64-linux-gnu - apt_triple: riscv64-linux-gnu - opts: NO_SHARED=1 TARGET=RISCV64_GENERIC - - target: C910V - triple: riscv64-unknown-linux-gnu - apt_triple: riscv64-linux-gnu - opts: NO_SHARED=1 TARGET=C910V - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: install build deps - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build make ccache \ - gcc-${{ matrix.apt_triple }} gfortran-${{ matrix.apt_triple }} libgomp1-riscv64-cross - - - name: checkout qemu - uses: actions/checkout@v3 - with: - repository: T-head-Semi/qemu - path: qemu - ref: 1e692ebb43d396c52352406323fc782c1ac99a42 - - - name: build qemu - run: | - # Force use c910v qemu-user - wget https://github.com/revyos/qemu/commit/5164bca5a4bcde4534dc1a9aa3a7f619719874cf.patch - cd qemu - patch -p1 < ../5164bca5a4bcde4534dc1a9aa3a7f619719874cf.patch - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=riscv64-linux-user --disable-system - make -j$(nproc) - make install - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.target }} - - - name: Configure ccache - run: | - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: build OpenBLAS - run: | - wget ${xuetie_toolchain}/${toolchain_file_name} - tar -xvf ${toolchain_file_name} -C /opt - export PATH="/opt/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.8.0/bin:$PATH" - - make CC='ccache ${{ matrix.triple }}-gcc -static' FC='ccache ${{ matrix.triple }}-gfortran -static' ${{ matrix.opts }} HOSTCC='ccache gcc' -j$(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin/:$PATH - qemu-riscv64 ./utest/openblas_utest - qemu-riscv64 ./utest/openblas_utest_ext - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xscblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xdcblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xccblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xzcblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xscblat2 < ./ctest/sin2 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xdcblat2 < ./ctest/din2 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xccblat2 < ./ctest/cin2 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xzcblat2 < ./ctest/zin2 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xscblat3 < ./ctest/sin3 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xdcblat3 < ./ctest/din3 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xccblat3 < ./ctest/cin3 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xzcblat3 < ./ctest/zin3 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/sblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/dblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/cblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/zblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/sblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/dblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/cblat1 - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/zblat1 - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-riscv64 ./test/zblat3 < ./test/zblat3.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./test/zblat3 < ./test/zblat3.dat diff --git a/.github/workflows/codspeed-bench.yml b/.github/workflows/codspeed-bench.yml deleted file mode 100644 index 04befefa9..000000000 --- a/.github/workflows/codspeed-bench.yml +++ /dev/null @@ -1,150 +0,0 @@ -name: Run codspeed benchmarks - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - benchmarks: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest] - fortran: [gfortran] - build: [make] - pyver: ["3.12"] - runs-on: ${{ matrix.os }} - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 - with: - python-version: ${{ matrix.pyver }} - - - name: Print system information - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - cat /proc/cpuinfo - fi - - - name: Install Dependencies - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get update - sudo apt-get install -y gfortran cmake ccache libtinfo5 - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - # We include the commit sha in the cache key, as new cache entries are - # only created if there is no existing entry for the key yet. - # GNU make and cmake call the compilers differently. It looks like - # that causes the cache to mismatch. Keep the ccache for both build - # tools separate to avoid polluting each other. - key: ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }}-${{ github.sha }} - # Restore a matching ccache cache entry. Prefer same branch and same Fortran compiler. - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }} - ccache-${{ runner.os }}-${{ matrix.build }} - - - name: Write out the .pc - run: | - cd benchmark/pybench - cat > openblas.pc << EOF - libdir=${{ github.workspace }} - includedir= ${{ github.workspace }} - openblas_config= OpenBLAS 0.3.27 DYNAMIC_ARCH NO_AFFINITY Haswell MAX_THREADS=64 - version=0.0.99 - extralib=-lm -lpthread -lgfortran -lquadmath -L${{ github.workspace }} -lopenblas - Name: openblas - Description: OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version - Version: ${version} - URL: https://github.com/xianyi/OpenBLAS - Libs: ${{ github.workspace }}/libopenblas.so -Wl,-rpath,${{ github.workspace }} - Libs.private: -lm -lpthread -lgfortran -lquadmath -L${{ github.workspace }} -lopenblas - Cflags: -I${{ github.workspace}} - EOF - cat openblas.pc - - - name: Configure ccache - run: | - if [ "${{ matrix.build }}" = "make" ]; then - # Add ccache to path - if [ "$RUNNER_OS" = "Linux" ]; then - echo "/usr/lib/ccache" >> $GITHUB_PATH - elif [ "$RUNNER_OS" = "macOS" ]; then - echo "$(brew --prefix)/opt/ccache/libexec" >> $GITHUB_PATH - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - fi - # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota (5 GB). - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: Build OpenBLAS - run: | - case "${{ matrix.build }}" in - "make") - make -j$(nproc) DYNAMIC_ARCH=1 USE_OPENMP=0 FC="ccache ${{ matrix.fortran }}" - ;; - "cmake") - mkdir build && cd build - cmake -DDYNAMIC_ARCH=1 \ - -DNOFORTRAN=0 \ - -DBUILD_WITHOUT_LAPACK=0 \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_Fortran_COMPILER=${{ matrix.fortran }} \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_Fortran_COMPILER_LAUNCHER=ccache \ - .. - cmake --build . - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac - - - name: Show ccache status - continue-on-error: true - run: ccache -s - - - name: Install benchmark dependencies - run: pip install meson ninja numpy pytest pytest-codspeed --user - - - name: Build the wrapper - run: | - cd benchmark/pybench - export PKG_CONFIG_PATH=$PWD - meson setup build --prefix=$PWD/build-install - meson install -C build - # - # sanity check - cd build/openblas_wrap - python -c'import _flapack; print(dir(_flapack))' - - - name: Run benchmarks - uses: CodSpeedHQ/action@v2 - with: - token: ${{ secrets.CODSPEED_TOKEN }} - run: | - cd benchmark/pybench - export PYTHONPATH=$PWD/build-install/lib/python${{matrix.pyver}}/site-packages/ - OPENBLAS_NUM_THREADS=1 pytest benchmarks/bench_blas.py --codspeed - diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 203097812..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Publish docs via GitHub Pages -on: - push: - branches: - - develop -jobs: - build: - name: Deploy docs - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - - run: pip install mkdocs mkdocs-material - # mkdocs gh-deploy command only builds to the top-level, hence building then deploying ourselves - - run: mkdocs build - - name: Deploy docs - uses: peaceiris/actions-gh-pages@v3 - if: ${{ github.ref == 'refs/heads/develop' }} - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./site - destination_dir: docs/ diff --git a/.github/workflows/dynamic_arch.yml b/.github/workflows/dynamic_arch.yml deleted file mode 100644 index 669aa8116..000000000 --- a/.github/workflows/dynamic_arch.yml +++ /dev/null @@ -1,371 +0,0 @@ -name: continuous build - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - build: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-latest] - fortran: [gfortran, flang] - build: [cmake, make] - exclude: - - os: macos-latest - fortran: flang - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Print system information - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - cat /proc/cpuinfo - elif [ "$RUNNER_OS" == "macOS" ]; then - sysctl -a | grep machdep.cpu - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - - - name: Install Dependencies - run: | - if [ "$RUNNER_OS" == "Linux" ]; then - sudo apt-get update - sudo apt-get install -y gfortran cmake ccache libtinfo5 - elif [ "$RUNNER_OS" == "macOS" ]; then - # It looks like "gfortran" isn't working correctly unless "gcc" is re-installed. - brew reinstall gcc - brew install coreutils cmake ccache - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - # We include the commit sha in the cache key, as new cache entries are - # only created if there is no existing entry for the key yet. - # GNU make and cmake call the compilers differently. It looks like - # that causes the cache to mismatch. Keep the ccache for both build - # tools separate to avoid polluting each other. - key: ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }}-${{ github.sha }} - # Restore a matching ccache cache entry. Prefer same branch and same Fortran compiler. - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.build }}-${{ matrix.fortran }} - ccache-${{ runner.os }}-${{ matrix.build }} - - - name: Configure ccache - run: | - if [ "${{ matrix.build }}" = "make" ]; then - # Add ccache to path - if [ "$RUNNER_OS" = "Linux" ]; then - echo "/usr/lib/ccache" >> $GITHUB_PATH - elif [ "$RUNNER_OS" = "macOS" ]; then - echo "$(brew --prefix)/opt/ccache/libexec" >> $GITHUB_PATH - else - echo "::error::$RUNNER_OS not supported" - exit 1 - fi - fi - # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota (5 GB). - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: Build OpenBLAS - run: | - if [ "${{ matrix.fortran }}" = "flang" ]; then - # download and install classic flang - cd /usr/ - sudo wget -nv https://github.com/flang-compiler/flang/releases/download/flang_20190329/flang-20190329-x86-70.tgz - sudo tar xf flang-20190329-x86-70.tgz - sudo rm flang-20190329-x86-70.tgz - cd - - fi - case "${{ matrix.build }}" in - "make") - make -j$(nproc) DYNAMIC_ARCH=1 USE_OPENMP=0 FC="ccache ${{ matrix.fortran }}" - ;; - "cmake") - mkdir build && cd build - cmake -DDYNAMIC_ARCH=1 \ - -DNOFORTRAN=0 \ - -DBUILD_WITHOUT_LAPACK=0 \ - -DCMAKE_VERBOSE_MAKEFILE=ON \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_Fortran_COMPILER=${{ matrix.fortran }} \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_Fortran_COMPILER_LAUNCHER=ccache \ - .. - cmake --build . - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac - - - name: Show ccache status - continue-on-error: true - run: ccache -s - - - name: Run tests - timeout-minutes: 60 - run: | - case "${{ matrix.build }}" in - "make") - MAKE_FLAGS='DYNAMIC_ARCH=1 USE_OPENMP=0' - echo "::group::Tests in 'test' directory" - make -C test $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - echo "::group::Tests in 'ctest' directory" - make -C ctest $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - echo "::group::Tests in 'utest' directory" - make -C utest $MAKE_FLAGS FC="ccache ${{ matrix.fortran }}" - echo "::endgroup::" - ;; - "cmake") - cd build && ctest - ;; - *) - echo "::error::Configuration not supported" - exit 1 - ;; - esac - - - msys2: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: windows-latest - - strategy: - fail-fast: false - matrix: - msystem: [UCRT64, MINGW32, CLANG64, CLANG32] - idx: [int32, int64] - build-type: [Release] - include: - - msystem: UCRT64 - idx: int32 - target-prefix: mingw-w64-ucrt-x86_64 - fc-pkg: fc - - msystem: MINGW32 - idx: int32 - target-prefix: mingw-w64-i686 - fc-pkg: fc - - msystem: CLANG64 - idx: int32 - target-prefix: mingw-w64-clang-x86_64 - fc-pkg: fc - # Compiling with Flang 16 seems to cause test errors on machines - # with AVX512 instructions. Revisit after MSYS2 distributes Flang 17. - no-avx512-flags: -DNO_AVX512=1 - - msystem: CLANG32 - idx: int32 - target-prefix: mingw-w64-clang-i686 - fc-pkg: cc - c-lapack-flags: -DC_LAPACK=ON - - msystem: UCRT64 - idx: int64 - idx64-flags: -DBINARY=64 -DINTERFACE64=1 - target-prefix: mingw-w64-ucrt-x86_64 - fc-pkg: fc - - msystem: CLANG64 - idx: int64 - idx64-flags: -DBINARY=64 -DINTERFACE64=1 - target-prefix: mingw-w64-clang-x86_64 - fc-pkg: fc - # Compiling with Flang 16 seems to cause test errors on machines - # with AVX512 instructions. Revisit after MSYS2 distributes Flang 17. - no-avx512-flags: -DNO_AVX512=1 - - msystem: UCRT64 - idx: int32 - target-prefix: mingw-w64-ucrt-x86_64 - fc-pkg: fc - build-type: None - exclude: - - msystem: MINGW32 - idx: int64 - - msystem: CLANG32 - idx: int64 - - defaults: - run: - # Use MSYS2 bash as default shell - shell: msys2 {0} - - env: - CHERE_INVOKING: 1 - - steps: - - name: Get CPU name - shell: pwsh - run : | - Get-CIMInstance -Class Win32_Processor | Select-Object -Property Name - - - name: Install build dependencies - uses: msys2/setup-msys2@v2 - with: - msystem: ${{ matrix.msystem }} - update: true - release: false # Use pre-installed version - install: >- - base-devel - ${{ matrix.target-prefix }}-cc - ${{ matrix.target-prefix }}-${{ matrix.fc-pkg }} - ${{ matrix.target-prefix }}-cmake - ${{ matrix.target-prefix }}-ninja - ${{ matrix.target-prefix }}-ccache - - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Prepare ccache - # Get cache location of ccache - # Create key that is used in action/cache/restore and action/cache/save steps - id: ccache-prepare - run: | - echo "ccachedir=$(cygpath -m $(ccache -k cache_dir))" >> $GITHUB_OUTPUT - # We include the commit sha in the cache key, as new cache entries are - # only created if there is no existing entry for the key yet. - echo "key=ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ matrix.build-type }}-${{ github.ref }}-${{ github.sha }}" >> $GITHUB_OUTPUT - - - name: Restore ccache - uses: actions/cache/restore@v3 - with: - path: ${{ steps.ccache-prepare.outputs.ccachedir }} - key: ${{ steps.ccache-prepare.outputs.key }} - # Restore a matching ccache cache entry. Prefer same branch. - restore-keys: | - ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ matrix.build-type }}-${{ github.ref }} - ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ matrix.build-type }} - - - name: Configure ccache - # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota. - run: | - which ccache - test -d ${{ steps.ccache-prepare.outputs.ccachedir }} || mkdir -p ${{ steps.ccache-prepare.outputs.ccachedir }} - echo "max_size = 250M" > ${{ steps.ccache-prepare.outputs.ccachedir }}/ccache.conf - echo "compression = true" >> ${{ steps.ccache-prepare.outputs.ccachedir }}/ccache.conf - ccache -p - ccache -s - echo $HOME - cygpath -w $HOME - - - name: Configure OpenBLAS - run: | - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \ - -DBUILD_SHARED_LIBS=ON \ - -DBUILD_STATIC_LIBS=ON \ - -DDYNAMIC_ARCH=ON \ - -DUSE_THREAD=ON \ - -DNUM_THREADS=64 \ - -DTARGET=CORE2 \ - ${{ matrix.idx64-flags }} \ - ${{ matrix.c-lapack-flags }} \ - ${{ matrix.no-avx512-flags }} \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_Fortran_COMPILER_LAUNCHER=ccache \ - .. - - - name: Build OpenBLAS - run: cd build && cmake --build . - - - name: Show ccache status - continue-on-error: true - run: ccache -s - - - name: Save ccache - # Save the cache after we are done (successfully) building - uses: actions/cache/save@v3 - with: - path: ${{ steps.ccache-prepare.outputs.ccachedir }} - key: ${{ steps.ccache-prepare.outputs.key }} - - - name: Run tests - id: run-ctest - timeout-minutes: 60 - run: cd build && ctest - - - name: Re-run tests - if: always() && (steps.run-ctest.outcome == 'failure') - timeout-minutes: 60 - run: | - cd build - echo "::group::Re-run ctest" - ctest --rerun-failed --output-on-failure || true - echo "::endgroup::" - echo "::group::Log from these tests" - [ ! -f Testing/Temporary/LastTest.log ] || cat Testing/Temporary/LastTest.log - echo "::endgroup::" - - - cross_build: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ubuntu-22.04 - - strategy: - fail-fast: false - matrix: - include: - - target: mips64el - triple: mips64el-linux-gnuabi64 - opts: DYNAMIC_ARCH=1 TARGET=GENERIC - - target: riscv64 - triple: riscv64-linux-gnu - opts: TARGET=RISCV64_GENERIC - - target: mipsel - triple: mipsel-linux-gnu - opts: TARGET=MIPS1004K - - target: alpha - triple: alpha-linux-gnu - opts: TARGET=EV4 - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get install -y ccache gcc-${{ matrix.triple }} gfortran-${{ matrix.triple }} libgomp1-${{ matrix.target }}-cross - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.target }} - - - name: Configure ccache - run: | - # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota (5 GB). - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - - name: Build OpenBLAS - run: | - make -j$(nproc) HOSTCC="ccache gcc" CC="ccache ${{ matrix.triple }}-gcc" FC="ccache ${{ matrix.triple }}-gfortran" ARCH=${{ matrix.target }} ${{ matrix.opts }} diff --git a/.github/workflows/loongarch64.yml b/.github/workflows/loongarch64.yml deleted file mode 100644 index b23c81f96..000000000 --- a/.github/workflows/loongarch64.yml +++ /dev/null @@ -1,120 +0,0 @@ -name: loongarch64 qemu test - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - TEST: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - target: LOONGSONGENERIC - triple: loongarch64-unknown-linux-gnu - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSONGENERIC - - target: LOONGSON3R5 - triple: loongarch64-unknown-linux-gnu - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON3R5 - - target: LOONGSON2K1000 - triple: loongarch64-unknown-linux-gnu - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON2K1000 - - target: DYNAMIC_ARCH - triple: loongarch64-unknown-linux-gnu - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=GENERIC - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Install APT deps - run: | - sudo add-apt-repository ppa:savoury1/virtualisation - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build make ccache \ - qemu-user-static - - - name: Download and install loongarch64-toolchain - run: | - wget https://github.com/sunhaiyong1978/CLFS-for-LoongArch/releases/download/8.1/CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz - #wget https://github.com/loongson/build-tools/releases/download/2023.08.08/CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz - tar -xf CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz -C /opt - - - name: Set env - run: | - echo "LD_LIBRARY_PATH=/opt/cross-tools/target/usr/lib64:/opt/cross-tools/loongarch64-unknown-linux-gnu/lib64:$LD_LIBRARY_PATH" >> $GITHUB_ENV - echo "PATH=$GITHUB_WORKSPACE:/opt/cross-tools/bin:$PATH" >> $GITHUB_ENV - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.target }} - - - name: Configure ccache - run: | - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: Disable utest dsdot:dsdot_n_1 - run: | - echo -n > utest/test_dsdot.c - echo "Due to the qemu versions 7.2 causing utest cases to fail," - echo "the utest dsdot:dsdot_n_1 have been temporarily disabled." - - - name: Build OpenBLAS - run: make CC='ccache ${{ matrix.triple }}-gcc -static' FC='ccache ${{ matrix.triple }}-gfortran -static' ${{ matrix.opts }} HOSTCC='ccache gcc' -j$(nproc) - - - name: Test - run: | - qemu-loongarch64-static ./utest/openblas_utest - qemu-loongarch64-static ./utest/openblas_utest_ext - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xscblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xdcblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xccblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xzcblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xscblat2 < ./ctest/sin2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xdcblat2 < ./ctest/din2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xccblat2 < ./ctest/cin2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xzcblat2 < ./ctest/zin2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xscblat3 < ./ctest/sin3 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xdcblat3 < ./ctest/din3 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xccblat3 < ./ctest/cin3 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xzcblat3 < ./ctest/zin3 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/sblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/dblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/cblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/zblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/sblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/dblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/cblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/zblat1 - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/zblat3 < ./test/zblat3.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/zblat3 < ./test/zblat3.dat diff --git a/.github/workflows/loongarch64_clang.yml b/.github/workflows/loongarch64_clang.yml deleted file mode 100644 index b32e4d731..000000000 --- a/.github/workflows/loongarch64_clang.yml +++ /dev/null @@ -1,122 +0,0 @@ -name: loongarch64 clang qemu test - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -jobs: - TEST: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - target: LOONGSONGENERIC - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSONGENERIC - - target: LOONGSON3R5 - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON3R5 - - target: LOONGSON2K1000 - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=LOONGSON2K1000 - - target: DYNAMIC_ARCH - opts: NO_SHARED=1 DYNAMIC_ARCH=1 TARGET=GENERIC - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Install libffi6 - run: | - wget http://ftp.ca.debian.org/debian/pool/main/libf/libffi/libffi6_3.2.1-9_amd64.deb - sudo dpkg -i libffi6_3.2.1-9_amd64.deb - - - name: Install APT deps - run: | - sudo add-apt-repository ppa:savoury1/virtualisation - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build make ccache \ - qemu-user-static - - - name: Download and install loongarch64-toolchain - run: | - wget http://ftp.loongnix.cn/toolchain/llvm/llvm8/clang+llvm_8.0.1-6_amd64-linux-gnu_debian-10.tar.gz - wget http://ftp.loongnix.cn/toolchain/gcc/release/loongarch/gcc8/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3.tar.xz - tar -xf clang+llvm_8.0.1-6_amd64-linux-gnu_debian-10.tar.gz -C /opt - tar -xf loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3.tar.xz -C /opt - - - name: Set env - run: | - echo "PATH=$GITHUB_WORKSPACE:/opt/clang+llvm_8.0.1-6_amd64-linux-gnu_debian-10/bin:/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3/bin:$PATH" >> $GITHUB_ENV - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.target }} - - - name: Configure ccache - run: | - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: Disable utest dsdot:dsdot_n_1 - run: | - echo -n > utest/test_dsdot.c - echo "Due to the qemu versions 7.2 causing utest cases to fail," - echo "the utest dsdot:dsdot_n_1 have been temporarily disabled." - - - name: Build OpenBLAS - run: make CC='ccache clang --target=loongarch64-linux-gnu --sysroot=/opt/loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.3/loongarch64-linux-gnu/sysroot/ -static' FC='ccache loongarch64-linux-gnu-gfortran -static' HOSTCC='ccache clang' CROSS_SUFFIX=llvm- NO_SHARED=1 ${{ matrix.opts }} -j$(nproc) - - - name: Test - run: | - qemu-loongarch64-static ./utest/openblas_utest - qemu-loongarch64-static ./utest/openblas_utest_ext - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xscblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xdcblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xccblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xzcblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xscblat2 < ./ctest/sin2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xdcblat2 < ./ctest/din2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xccblat2 < ./ctest/cin2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xzcblat2 < ./ctest/zin2 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xscblat3 < ./ctest/sin3 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xdcblat3 < ./ctest/din3 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xccblat3 < ./ctest/cin3 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./ctest/xzcblat3 < ./ctest/zin3 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/sblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/dblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/cblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/zblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/sblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/dblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/cblat1 - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/zblat1 - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64-static ./test/zblat3 < ./test/zblat3.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-loongarch64-static ./test/zblat3 < ./test/zblat3.dat - diff --git a/.github/workflows/mips64.yml b/.github/workflows/mips64.yml deleted file mode 100644 index 1491aff78..000000000 --- a/.github/workflows/mips64.yml +++ /dev/null @@ -1,123 +0,0 @@ -name: mips64 qemu test - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - TEST: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - include: - - target: MIPS64_GENERIC - triple: mips64el-linux-gnuabi64 - opts: NO_SHARED=1 TARGET=MIPS64_GENERIC - - target: SICORTEX - triple: mips64el-linux-gnuabi64 - opts: NO_SHARED=1 TARGET=SICORTEX - - target: I6400 - triple: mipsisa64r6el-linux-gnuabi64 - opts: NO_SHARED=1 TARGET=I6400 - - target: P6600 - triple: mipsisa64r6el-linux-gnuabi64 - opts: NO_SHARED=1 TARGET=P6600 - - target: I6500 - triple: mipsisa64r6el-linux-gnuabi64 - opts: NO_SHARED=1 TARGET=I6500 - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: install build deps - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build make ccache \ - gcc-${{ matrix.triple }} gfortran-${{ matrix.triple }} libgomp1-mips64el-cross - - - name: checkout qemu - uses: actions/checkout@v3 - with: - repository: qemu/qemu - path: qemu - ref: 79dfa177ae348bb5ab5f97c0915359b13d6186e2 - - - name: build qemu - run: | - cd qemu - ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mips64el-linux-user --disable-system - make -j$(nproc) - make install - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.target }} - - - name: Configure ccache - run: | - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: build OpenBLAS - run: make CC='ccache ${{ matrix.triple }}-gcc -static' FC='ccache ${{ matrix.triple }}-gfortran -static' ${{ matrix.opts }} HOSTCC='ccache gcc' -j$(nproc) - - - name: test - run: | - export PATH=$GITHUB_WORKSPACE/qemu-install/bin/:$PATH - qemu-mips64el ./utest/openblas_utest - qemu-mips64el ./utest/openblas_utest_ext - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xscblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xdcblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xccblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xzcblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xscblat2 < ./ctest/sin2 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xdcblat2 < ./ctest/din2 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xccblat2 < ./ctest/cin2 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xzcblat2 < ./ctest/zin2 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xscblat3 < ./ctest/sin3 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xdcblat3 < ./ctest/din3 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xccblat3 < ./ctest/cin3 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xzcblat3 < ./ctest/zin3 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/sblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/dblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/cblat1 - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/zblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/sblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/dblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/cblat1 - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/zblat1 - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT2.SUMM - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/sblat2 < ./test/sblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/dblat2 < ./test/dblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/cblat2 < ./test/cblat2.dat - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/zblat2 < ./test/zblat2.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/zblat3 < ./test/zblat3.dat - rm -f ./test/?BLAT3.SUMM - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/sblat3 < ./test/sblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/dblat3 < ./test/dblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/cblat3 < ./test/cblat3.dat - OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/zblat3 < ./test/zblat3.dat diff --git a/.github/workflows/nightly-Homebrew-build.yml b/.github/workflows/nightly-Homebrew-build.yml deleted file mode 100644 index ca57fba70..000000000 --- a/.github/workflows/nightly-Homebrew-build.yml +++ /dev/null @@ -1,90 +0,0 @@ -# Only the "head" branch of the OpenBLAS package is tested - -on: - push: - paths: - - '**/nightly-Homebrew-build.yml' - pull_request: - branches: - - develop - paths: - - '**/nightly-Homebrew-build.yml' - schedule: - - cron: 45 7 * * * -# This is 7:45 AM UTC daily, late at night in the USA - -# Since push and pull_request will still always be building and testing the `develop` branch, -# it only makes sense to test if this file has been changed - -name: Nightly-Homebrew-Build - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - build-OpenBLAS-with-Homebrew: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: macos-latest - env: - DEVELOPER_DIR: /Applications/Xcode_11.4.1.app/Contents/Developer - HOMEBREW_DEVELOPER: "ON" - HOMEBREW_DISPLAY_INSTALL_TIMES: "ON" - HOMEBREW_NO_ANALYTICS: "ON" - HOMEBREW_NO_AUTO_UPDATE: "ON" - HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: "ON" - HOMEBREW_NO_INSTALL_CLEANUP: "ON" - HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: "ON" - HOMEBREW_NO_INSTALL_FROM_API: "ON" - - steps: - - name: Random delay for cron job - run: | - delay=$(( RANDOM % 600 )) - printf 'Delaying for %s seconds on event %s' ${delay} "${{ github.event_name }}" - sleep ${delay} - if: github.event_name == 'schedule' - - - uses: actions/checkout@v2 - # This isn't even needed, technically. Homebrew will get `develop` via git - - - name: Update Homebrew - if: github.event_name != 'pull_request' - run: brew update || true - - - name: Install prerequisites - run: brew install --fetch-HEAD --HEAD --only-dependencies --keep-tmp openblas - - - name: Install and bottle OpenBLAS - run: brew install --fetch-HEAD --HEAD --build-bottle --keep-tmp openblas - # the HEAD flags tell Homebrew to build the develop branch fetch via git - - - name: Create bottle - run: | - brew bottle -v openblas - mkdir bottles - mv *.bottle.tar.gz bottles - - - name: Upload bottle - uses: actions/upload-artifact@v1 - with: - name: openblas--HEAD.catalina.bottle.tar.gz - path: bottles - - - name: Show linkage - run: brew linkage -v openblas - - - name: Test openblas - run: brew test --HEAD --verbose openblas - - - name: Audit openblas formula - run: | - brew audit --strict openblas - brew cat openblas - - - name: Post logs on failure - if: failure() - run: brew gist-logs --with-hostname -v openblas diff --git a/.github/workflows/riscv64_vector.yml b/.github/workflows/riscv64_vector.yml deleted file mode 100644 index dd6fe9ca8..000000000 --- a/.github/workflows/riscv64_vector.yml +++ /dev/null @@ -1,253 +0,0 @@ -name: riscv64 zvl256b qemu test - -on: [push, pull_request] - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - -permissions: - contents: read # to fetch code (actions/checkout) - -jobs: - TEST: - if: "github.repository == 'OpenMathLib/OpenBLAS'" - runs-on: ubuntu-latest - env: - triple: riscv64-unknown-linux-gnu - riscv_gnu_toolchain: https://github.com/riscv-collab/riscv-gnu-toolchain - riscv_gnu_toolchain_version: 13.2.0 - riscv_gnu_toolchain_nightly_download_path: /releases/download/2024.02.02/riscv64-glibc-ubuntu-22.04-llvm-nightly-2024.02.02-nightly.tar.gz - strategy: - fail-fast: false - matrix: - include: - - target: RISCV64_ZVL128B - opts: TARGET=RISCV64_ZVL128B BINARY=64 ARCH=riscv64 - qemu_cpu: rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=128,elen=64 - - target: RISCV64_ZVL256B - opts: TARGET=RISCV64_ZVL256B BINARY=64 ARCH=riscv64 - qemu_cpu: rv64,g=true,c=true,v=true,vext_spec=v1.0,vlen=256,elen=64 - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - - - name: install build deps - run: | - sudo apt-get update - sudo apt-get install autoconf automake autotools-dev ninja-build make \ - libgomp1-riscv64-cross ccache - wget ${riscv_gnu_toolchain}/${riscv_gnu_toolchain_nightly_download_path} - tar -xvf $(basename ${riscv_gnu_toolchain_nightly_download_path}) -C /opt - - - name: Compilation cache - uses: actions/cache@v3 - with: - path: ~/.ccache - key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }} - restore-keys: | - ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }} - ccache-${{ runner.os }}-${{ matrix.target }} - - - name: Configure ccache - run: | - test -d ~/.ccache || mkdir -p ~/.ccache - echo "max_size = 300M" > ~/.ccache/ccache.conf - echo "compression = true" >> ~/.ccache/ccache.conf - ccache -s - - - name: build OpenBLAS libs - run: | - export PATH="/opt/riscv/bin:$PATH" - make TARGET=${{ matrix.target }} CFLAGS="-DTARGET=${{ matrix.target }}" \ - CC='ccache clang --rtlib=compiler-rt -target ${triple} --sysroot /opt/riscv/sysroot --gcc-toolchain=/opt/riscv/lib/gcc/riscv64-unknown-linux-gnu/${riscv_gnu_toolchain_version}/' \ - AR='ccache ${triple}-ar' AS='ccache ${triple}-gcc' LD='ccache ${triple}-gcc' \ - RANLIB='ccache ${triple}-ranlib' \ - FC='ccache ${triple}-gfortran' ${{ matrix.opts }} \ - HOSTCC=gcc HOSTFC=gfortran -j$(nproc) - - - name: build OpenBLAS tests - run: | - export PATH="/opt/riscv/bin:$PATH" - make TARGET=${{ matrix.target }} CFLAGS="-DTARGET=${{ matrix.target }}" \ - CC='${triple}-gcc' \ - AR='ccache ${triple}-ar' AS='ccache ${triple}-gcc' LD='ccache ${triple}-gcc' \ - RANLIB='ccache ${triple}-ranlib' \ - FC='ccache ${triple}-gfortran' ${{ matrix.opts }} \ - HOSTCC=gcc HOSTFC=gfortran -j$(nproc) tests - - - name: build lapack-netlib tests - working-directory: ./lapack-netlib/TESTING - run: | - export PATH="/opt/riscv/bin:$PATH" - make TARGET=${{ matrix.target }} CFLAGS="-DTARGET=${{ matrix.target }}" \ - CC='${triple}-gcc' \ - AR='ccache ${triple}-ar' AS='ccache ${triple}-gcc' LD='ccache ${triple}-gcc' \ - RANLIB='ccache ${triple}-ranlib' \ - FC='ccache ${triple}-gfortran' ${{ matrix.opts }} \ - HOSTCC=gcc HOSTFC=gfortran -j$(nproc) \ - LIN/xlintsts LIN/xlintstc LIN/xlintstd LIN/xlintstz LIN/xlintstrfs \ - LIN/xlintstrfc LIN/xlintstrfd LIN/xlintstrfz LIN/xlintstds \ - LIN/xlintstzc EIG/xeigtsts EIG/xeigtstc EIG/xeigtstd EIG/xeigtstz \ - - - name: OpenBLAS tests - shell: bash - run: | - export PATH="/opt/riscv/bin:$PATH" - export QEMU_CPU=${{ matrix.qemu_cpu }} - rm -rf ./test_out - mkdir -p ./test_out - run_test() { local DIR=$1; local CMD=$2; local DATA=$3; local OUTPUT="./test_out/$DIR.$CMD"; \ - echo "`pwd`/$DIR/$CMD $DIR/$DATA" >> $OUTPUT; \ - if [[ -z $DATA ]]; then qemu-riscv64 ./$DIR/$CMD |& tee $OUTPUT ; \ - else qemu-riscv64 ./$DIR/$CMD < ./$DIR/$DATA |& tee $OUTPUT ; fi ; \ - RV=$? ; if [[ $RV != 0 ]]; then echo "*** FAIL: nonzero exit code $RV" >> $OUTPUT ; fi \ - } - run_test test cblat1 & - run_test test cblat2 cblat2.dat & - run_test test cblat3 cblat3.dat & - run_test test dblat1 & - run_test test dblat2 dblat2.dat & - run_test test dblat3 dblat3.dat & - run_test test sblat1 & - run_test test sblat2 sblat2.dat & - run_test test sblat3 sblat3.dat & - run_test test zblat1 & - run_test test zblat2 zblat2.dat & - run_test test zblat3 zblat3.dat & - run_test ctest xccblat1 & - run_test ctest xccblat2 cin2 & - run_test ctest xccblat3 cin3 & - run_test ctest xdcblat1 & - run_test ctest xdcblat2 din2 & - run_test ctest xdcblat3 din3 & - run_test ctest xscblat1 & - run_test ctest xscblat2 sin2 & - run_test ctest xscblat3 sin3 & - run_test ctest xzcblat1 & - run_test ctest xzcblat2 zin2 & - run_test ctest xzcblat3 zin3 & - wait - while IFS= read -r -d $'\0' LOG; do cat $LOG ; FAILURES=1 ; done < <(grep -lZ FAIL ./test_out/*) - if [[ ! -z $FAILURES ]]; then echo "==========" ; echo "== FAIL ==" ; echo "==========" ; echo ; exit 1 ; fi - - - name: netlib tests - shell: bash - run: | - : # these take a very long time - echo "Skipping netlib tests in CI" - exit 0 - : # comment out exit above to enable the tests - : # probably we want to identify a subset to run in CI - export PATH="/opt/riscv/bin:$PATH" - export QEMU_CPU=${{ matrix.qemu_cpu }} - rm -rf ./test_out - mkdir -p ./test_out - run_test() { local OUTPUT="./test_out/$1"; local DATA="./lapack-netlib/TESTING/$2"; local CMD="./lapack-netlib/TESTING/$3"; \ - echo "$4" >> $OUTPUT; \ - echo "$CMD" >> $OUTPUT; \ - qemu-riscv64 $CMD < $DATA |& tee $OUTPUT; \ - RV=$? ; if [[ $RV != 0 ]]; then echo "*** FAIL: nonzero exit code $RV" >> $OUTPUT ; fi; \ - if grep -q fail $OUTPUT ; then echo "*** FAIL: log contains 'fail'" >> $OUTPUT ; fi ; \ - if grep -q rror $OUTPUT | grep -v -q "passed" | grep -v "largest error" ; then echo "*** FAIL: log contains 'error'" >> $OUTPUT ; fi \ - } - run_test stest.out stest.in LIN/xlintsts "Testing REAL LAPACK linear equation routines" & - run_test ctest.out ctest.in LIN/xlintstc "Testing COMPLEX LAPACK linear equation routines" & - run_test dtest.out dtest.in LIN/xlintstd "Testing DOUBLE PRECISION LAPACK linear equation routines" & - run_test ztest.out ztest.in LIN/xlintstz "Testing COMPLEX16 LAPACK linear equation routines" & - run_test dstest.out dstest.in LIN/xlintstds "Testing SINGLE-DOUBLE PRECISION LAPACK prototype linear equation routines" & - run_test zctest.out zctest.in LIN/xlintstzc "Testing COMPLEX-COMPLEX16 LAPACK prototype linear equation routines" & - run_test stest_rfp.out stest_rfp.in LIN/xlintstrfs "Testing REAL LAPACK RFP prototype linear equation routines" & - run_test dtest_rfp.out dtest_rfp.in LIN/xlintstrfd "Testing DOUBLE PRECISION LAPACK RFP prototype linear equation routines" & - run_test ctest_rfp.out ctest_rfp.in LIN/xlintstrfc "Testing COMPLEX LAPACK RFP prototype linear equation routines" & - run_test ztest_rfp.out ztest_rfp.in LIN/xlintstrfz "Testing COMPLEX16 LAPACK RFP prototype linear equation routines" & - run_test snep.out nep.in EIG/xeigtsts "NEP - Testing Nonsymmetric Eigenvalue Problem routines" & - run_test ssep.out sep.in EIG/xeigtsts "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test sse2.out se2.in EIG/xeigtsts "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test ssvd.out svd.in EIG/xeigtsts "SVD - Testing Singular Value Decomposition routines" & - run_test sec.out sec.in EIG/xeigtsts "SEC - Testing REAL Eigen Condition Routines" & - run_test sed.out sed.in EIG/xeigtsts "SEV - Testing REAL Nonsymmetric Eigenvalue Driver" & - run_test sgg.out sgg.in EIG/xeigtsts "SGG - Testing REAL Nonsymmetric Generalized Eigenvalue Problem routines" & - run_test sgd.out sgd.in EIG/xeigtsts "SGD - Testing REAL Nonsymmetric Generalized Eigenvalue Problem driver routines" & - run_test ssb.out ssb.in EIG/xeigtsts "SSB - Testing REAL Symmetric Eigenvalue Problem routines" & - run_test ssg.out ssg.in EIG/xeigtsts "SSG - Testing REAL Symmetric Generalized Eigenvalue Problem routines" & - run_test sbal.out sbal.in EIG/xeigtsts "SGEBAL - Testing the balancing of a REAL general matrix" & - run_test sbak.out sbak.in EIG/xeigtsts "SGEBAK - Testing the back transformation of a REAL balanced matrix" & - run_test sgbal.out sgbal.in EIG/xeigtsts "SGGBAL - Testing the balancing of a pair of REAL general matrices" & - run_test sgbak.out sgbak.in EIG/xeigtsts "SGGBAK - Testing the back transformation of a pair of REAL balanced matrices" & - run_test sbb.out sbb.in EIG/xeigtsts "SBB - Testing banded Singular Value Decomposition routines" & - run_test sglm.out glm.in EIG/xeigtsts "GLM - Testing Generalized Linear Regression Model routines" & - run_test sgqr.out gqr.in EIG/xeigtsts "GQR - Testing Generalized QR and RQ factorization routines" & - run_test sgsv.out gsv.in EIG/xeigtsts "GSV - Testing Generalized Singular Value Decomposition routines" & - run_test scsd.out csd.in EIG/xeigtsts "CSD - Testing CS Decomposition routines" & - run_test slse.out lse.in EIG/xeigtsts "LSE - Testing Constrained Linear Least Squares routines" & - run_test cnep.out nep.in EIG/xeigtstc "NEP - Testing Nonsymmetric Eigenvalue Problem routines" & - run_test csep.out sep.in EIG/xeigtstc "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test cse2.out se2.in EIG/xeigtstc "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test csvd.out svd.in EIG/xeigtstc "SVD - Testing Singular Value Decomposition routines" & - run_test cec.out cec.in EIG/xeigtstc "CEC - Testing COMPLEX Eigen Condition Routines" & - run_test ced.out ced.in EIG/xeigtstc "CES - Testing COMPLEX Nonsymmetric Schur Form Driver" & - run_test cgg.out cgg.in EIG/xeigtstc "CGG - Testing COMPLEX Nonsymmetric Generalized Eigenvalue Problem routines" & - run_test cgd.out cgd.in EIG/xeigtstc "CGD - Testing COMPLEX Nonsymmetric Generalized Eigenvalue Problem driver routines" & - run_test csb.out csb.in EIG/xeigtstc "CHB - Testing Hermitian Eigenvalue Problem routines" & - run_test csg.out csg.in EIG/xeigtstc "CSG - Testing Symmetric Generalized Eigenvalue Problem routines" & - run_test cbal.out cbal.in EIG/xeigtstc "CGEBAL - Testing the balancing of a COMPLEX general matrix" & - run_test cbak.out cbak.in EIG/xeigtstc "CGEBAK - Testing the back transformation of a COMPLEX balanced matrix" & - run_test cgbal.out cgbal.in EIG/xeigtstc "CGGBAL - Testing the balancing of a pair of COMPLEX general matrices" & - run_test cgbak.out cgbak.in EIG/xeigtstc "CGGBAK - Testing the back transformation of a pair of COMPLEX balanced matrices" & - run_test cbb.out cbb.in EIG/xeigtstc "CBB - Testing banded Singular Value Decomposition routines" & - run_test cglm.out glm.in EIG/xeigtstc "GLM - Testing Generalized Linear Regression Model routines" & - run_test cgqr.out gqr.in EIG/xeigtstc "GQR - Testing Generalized QR and RQ factorization routines" & - run_test cgsv.out gsv.in EIG/xeigtstc "GSV - Testing Generalized Singular Value Decomposition routines" & - run_test ccsd.out csd.in EIG/xeigtstc "CSD - Testing CS Decomposition routines" & - run_test clse.out lse.in EIG/xeigtstc "LSE - Testing Constrained Linear Least Squares routines" & - run_test dnep.out nep.in EIG/xeigtstd "NEP - Testing Nonsymmetric Eigenvalue Problem routines" & - run_test dsep.out sep.in EIG/xeigtstd "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test dse2.out se2.in EIG/xeigtstd "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test dsvd.out svd.in EIG/xeigtstd "SVD - Testing Singular Value Decomposition routines" & - run_test dec.out dec.in EIG/xeigtstd "DEC - Testing DOUBLE PRECISION Eigen Condition Routines" & - run_test ded.out ded.in EIG/xeigtstd "DEV - Testing DOUBLE PRECISION Nonsymmetric Eigenvalue Driver" & - run_test dgg.out dgg.in EIG/xeigtstd "DGG - Testing DOUBLE PRECISION Nonsymmetric Generalized Eigenvalue Problem routines" & - run_test dgd.out dgd.in EIG/xeigtstd "DGD - Testing DOUBLE PRECISION Nonsymmetric Generalized Eigenvalue Problem driver routines" & - run_test dsb.out dsb.in EIG/xeigtstd "DSB - Testing DOUBLE PRECISION Symmetric Eigenvalue Problem routines" & - run_test dsg.out dsg.in EIG/xeigtstd "DSG - Testing DOUBLE PRECISION Symmetric Generalized Eigenvalue Problem routines" & - run_test dbal.out dbal.in EIG/xeigtstd "DGEBAL - Testing the balancing of a DOUBLE PRECISION general matrix" & - run_test dbak.out dbak.in EIG/xeigtstd "DGEBAK - Testing the back transformation of a DOUBLE PRECISION balanced matrix" & - run_test dgbal.out dgbal.in EIG/xeigtstd "DGGBAL - Testing the balancing of a pair of DOUBLE PRECISION general matrices" & - run_test dgbak.out dgbak.in EIG/xeigtstd "DGGBAK - Testing the back transformation of a pair of DOUBLE PRECISION balanced matrices" & - run_test dbb.out dbb.in EIG/xeigtstd "DBB - Testing banded Singular Value Decomposition routines" & - run_test dglm.out glm.in EIG/xeigtstd "GLM - Testing Generalized Linear Regression Model routines" & - run_test dgqr.out gqr.in EIG/xeigtstd "GQR - Testing Generalized QR and RQ factorization routines" & - run_test dgsv.out gsv.in EIG/xeigtstd "GSV - Testing Generalized Singular Value Decomposition routines" & - run_test dcsd.out csd.in EIG/xeigtstd "CSD - Testing CS Decomposition routines" & - run_test dlse.out lse.in EIG/xeigtstd "LSE - Testing Constrained Linear Least Squares routines" & - run_test znep.out nep.in EIG/xeigtstz "NEP - Testing Nonsymmetric Eigenvalue Problem routines" & - run_test zsep.out sep.in EIG/xeigtstz "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test zse2.out se2.in EIG/xeigtstz "SEP - Testing Symmetric Eigenvalue Problem routines" & - run_test zsvd.out svd.in EIG/xeigtstz "SVD - Testing Singular Value Decomposition routines" & - run_test zec.out zec.in EIG/xeigtstz "ZEC - Testing COMPLEX16 Eigen Condition Routines" & - run_test zed.out zed.in EIG/xeigtstz "ZES - Testing COMPLEX16 Nonsymmetric Schur Form Driver" & - run_test zgg.out zgg.in EIG/xeigtstz "ZGG - Testing COMPLEX16 Nonsymmetric Generalized Eigenvalue Problem routines" & - run_test zgd.out zgd.in EIG/xeigtstz "ZGD - Testing COMPLEX16 Nonsymmetric Generalized Eigenvalue Problem driver routines" & - run_test zsb.out zsb.in EIG/xeigtstz "ZHB - Testing Hermitian Eigenvalue Problem routines" & - run_test zsg.out zsg.in EIG/xeigtstz "ZSG - Testing Symmetric Generalized Eigenvalue Problem routines" & - run_test zbal.out zbal.in EIG/xeigtstz "ZGEBAL - Testing the balancing of a COMPLEX16 general matrix" & - run_test zbak.out zbak.in EIG/xeigtstz "ZGEBAK - Testing the back transformation of a COMPLEX16 balanced matrix" & - run_test zgbal.out zgbal.in EIG/xeigtstz "ZGGBAL - Testing the balancing of a pair of COMPLEX general matrices" & - run_test zgbak.out zgbak.in EIG/xeigtstz "ZGGBAK - Testing the back transformation of a pair of COMPLEX16 balanced matrices" & - run_test zbb.out zbb.in EIG/xeigtstz "ZBB - Testing banded Singular Value Decomposition routines" & - run_test zglm.out glm.in EIG/xeigtstz "GLM - Testing Generalized Linear Regression Model routines" & - run_test zgqr.out gqr.in EIG/xeigtstz "GQR - Testing Generalized QR and RQ factorization routines" & - run_test zgsv.out gsv.in EIG/xeigtstz "GSV - Testing Generalized Singular Value Decomposition routines" & - run_test zcsd.out csd.in EIG/xeigtstz "CSD - Testing CS Decomposition routines" & - run_test zlse.out lse.in EIG/xeigtstz "LSE - Testing Constrained Linear Least Squares routines" & - wait - while IFS= read -r -d $'\0' LOG; do cat $LOG ; FAILURES=1 ; done < <(grep -lZ FAIL ./test_out/*) - python ./lapack-netlib/lapack_testing.py -d ./test_out -e > netlib_summary - TOTALS="$(grep 'ALL PRECISIONS' netlib_summary)" - NUMERICAL_ERRORS=-1 - OTHER_ERRORS=-1 - . <(awk '/ALL PRECISIONS/{printf "NUMERICAL_ERRORS=%s\nOTHER_ERRORS=%s\n", $5, $7}' netlib_summary - if (( NUMERICAL_ERRORS != 0 )) || (( OTHER_ERRORS != 0 )) ; then cat netlib_summary ; FAILURES=1 ; fi - if [[ ! -z $FAILURES ]]; then echo "==========" ; echo "== FAIL ==" ; echo "==========" ; echo ; exit 1 ; fi