| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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/ | |||
| @@ -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 }} | |||
| @@ -1,133 +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 apt-get update | |||
| sudo apt-get install autoconf automake autotools-dev ninja-build make ccache | |||
| - 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: Checkout qemu | |||
| uses: actions/checkout@v3 | |||
| with: | |||
| repository: qemu/qemu | |||
| path: qemu | |||
| ref: master | |||
| - name: Install qemu | |||
| run: | | |||
| cd qemu | |||
| ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=loongarch64-linux-user --disable-system --static | |||
| make -j$(nproc) | |||
| make install | |||
| - 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: | | |||
| export PATH=$GITHUB_WORKSPACE/qemu-install/bin/:$PATH | |||
| qemu-loongarch64 ./utest/openblas_utest | |||
| qemu-loongarch64 ./utest/openblas_utest_ext | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xscblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xdcblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xccblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xzcblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xscblat2 < ./ctest/sin2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xdcblat2 < ./ctest/din2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xccblat2 < ./ctest/cin2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xzcblat2 < ./ctest/zin2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xscblat3 < ./ctest/sin3 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xdcblat3 < ./ctest/din3 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xccblat3 < ./ctest/cin3 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xzcblat3 < ./ctest/zin3 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/sblat1 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/dblat1 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/cblat1 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/zblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/sblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/dblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/cblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/zblat1 | |||
| rm -f ./test/?BLAT2.SUMM | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/sblat2 < ./test/sblat2.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/dblat2 < ./test/dblat2.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/cblat2 < ./test/cblat2.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/zblat2 < ./test/zblat2.dat | |||
| rm -f ./test/?BLAT2.SUMM | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/sblat2 < ./test/sblat2.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/dblat2 < ./test/dblat2.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/cblat2 < ./test/cblat2.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/zblat2 < ./test/zblat2.dat | |||
| rm -f ./test/?BLAT3.SUMM | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/sblat3 < ./test/sblat3.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/dblat3 < ./test/dblat3.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/cblat3 < ./test/cblat3.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/zblat3 < ./test/zblat3.dat | |||
| rm -f ./test/?BLAT3.SUMM | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/sblat3 < ./test/sblat3.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/dblat3 < ./test/dblat3.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/cblat3 < ./test/cblat3.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/zblat3 < ./test/zblat3.dat | |||
| @@ -1,135 +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 apt-get update | |||
| sudo apt-get install autoconf automake autotools-dev ninja-build make ccache | |||
| - name: Download and install loongarch64-toolchain | |||
| run: | | |||
| wget https://github.com/XiWeiGu/loongarch64_toolchain/releases/download/V0.1/clang+llvm_8.0.1-6_amd64-linux-gnu_debian-10.tar.gz | |||
| wget https://github.com/XiWeiGu/loongarch64_toolchain/releases/download/V0.1/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: Checkout qemu | |||
| uses: actions/checkout@v3 | |||
| with: | |||
| repository: qemu/qemu | |||
| path: qemu | |||
| ref: master | |||
| - name: Install qemu | |||
| run: | | |||
| cd qemu | |||
| ./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=loongarch64-linux-user --disable-system --static | |||
| make -j$(nproc) | |||
| make install | |||
| - 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: | | |||
| export PATH=$GITHUB_WORKSPACE/qemu-install/bin/:$PATH | |||
| qemu-loongarch64 ./utest/openblas_utest | |||
| qemu-loongarch64 ./utest/openblas_utest_ext | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xscblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xdcblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xccblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xzcblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xscblat2 < ./ctest/sin2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xdcblat2 < ./ctest/din2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xccblat2 < ./ctest/cin2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xzcblat2 < ./ctest/zin2 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xscblat3 < ./ctest/sin3 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xdcblat3 < ./ctest/din3 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xccblat3 < ./ctest/cin3 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./ctest/xzcblat3 < ./ctest/zin3 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/sblat1 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/dblat1 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/cblat1 | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/zblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/sblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/dblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/cblat1 | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/zblat1 | |||
| rm -f ./test/?BLAT2.SUMM | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/sblat2 < ./test/sblat2.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/dblat2 < ./test/dblat2.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/cblat2 < ./test/cblat2.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/zblat2 < ./test/zblat2.dat | |||
| rm -f ./test/?BLAT2.SUMM | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/sblat2 < ./test/sblat2.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/dblat2 < ./test/dblat2.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/cblat2 < ./test/cblat2.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/zblat2 < ./test/zblat2.dat | |||
| rm -f ./test/?BLAT3.SUMM | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/sblat3 < ./test/sblat3.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/dblat3 < ./test/dblat3.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/cblat3 < ./test/cblat3.dat | |||
| OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-loongarch64 ./test/zblat3 < ./test/zblat3.dat | |||
| rm -f ./test/?BLAT3.SUMM | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/sblat3 < ./test/sblat3.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/dblat3 < ./test/dblat3.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/cblat3 < ./test/cblat3.dat | |||
| OPENBLAS_NUM_THREADS=2 qemu-loongarch64 ./test/zblat3 < ./test/zblat3.dat | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||