| @@ -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,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 | |||||
| @@ -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 | |||||
| @@ -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 | |||||