diff --git a/.travis.yml b/.travis.yml index 00a2509f9..82e2aaac8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -177,8 +177,8 @@ matrix: dist: trusty sudo: required services: docker - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=gcc - name: "Emulated Build for ARMV6 with gcc" + env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang + name: "Emulated Build for ARMV6 with clang" before_install: sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset script: | echo "FROM openblas/alpine:${IMAGE_ARCH} @@ -193,9 +193,6 @@ matrix: -D CMAKE_BUILD_TYPE=Release ../ && \ cmake --build ." > Dockerfile docker build . - - <<: *emulated-arm - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang - name: "Emulated Build for ARMV6 with clang" - <<: *emulated-arm env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=gcc name: "Emulated Build for ARMV8 with gcc" @@ -204,7 +201,6 @@ matrix: name: "Emulated Build for ARMV8 with clang" allow_failures: - - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=gcc - env: IMAGE_ARCH=arm32 TARGET_ARCH=ARMV6 COMPILER=clang - env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=gcc - env: IMAGE_ARCH=arm64 TARGET_ARCH=ARMV8 COMPILER=clang diff --git a/README.md b/README.md index 68a121498..14815ff00 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ Travis CI: [![Build Status](https://travis-ci.org/xianyi/OpenBLAS.svg?branch=dev AppVeyor: [![Build status](https://ci.appveyor.com/api/projects/status/09sohd35n8nkkx64/branch/develop?svg=true)](https://ci.appveyor.com/project/xianyi/openblas/branch/develop) +[![Build Status](https://dev.azure.com/xianyi/OpenBLAS/_apis/build/status/xianyi.OpenBLAS?branchName=develop)](https://dev.azure.com/xianyi/OpenBLAS/_build/latest?definitionId=1&branchName=develop) + ## Introduction OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index cef2ef973..cbea6f4a7 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,21 +1,18 @@ -# Starter pipeline -# Start with a minimal pipeline that you can customize to build and deploy your code. -# Add steps that build, run tests, deploy, and more: -# https://aka.ms/yaml - trigger: -- master + # start a new build for every push + batch: False + branches: + include: + - develop -pool: - vmImage: 'ubuntu-latest' - -steps: -- script: echo Hello, world! - displayName: 'Run a one-line script' - -- script: | - docker run --rm --privileged multiarch/qemu-user-static:register --reset - echo "FROM openblas/alpine:arm32 +jobs: +- job: ARMv6_gcc + pool: + vmImage: 'ubuntu-16.04' + steps: + - script: | + docker run --rm --privileged multiarch/qemu-user-static:register --reset + echo "FROM openblas/alpine:arm32 COPY . /tmp/openblas RUN mkdir /tmp/openblas/build && \ cd /tmp/openblas/build && \ @@ -27,10 +24,24 @@ steps: -D BUILD_WITHOUT_CBLAS=ON \ -D CMAKE_BUILD_TYPE=Release ../ && \ cmake --build ." > Dockerfile - docker build . - displayName: Run ARMV6 docker build - -#- script: | -# echo Add other tasks to build, test, and deploy your project. -# echo See https://aka.ms/yaml -# displayName: 'Run a multi-line script' + docker build . + displayName: Run ARMV6 docker build +# manylinux1 is useful to test because the +# standard Docker container uses an old version +# of gcc / glibc +- job: manylinux1_gcc + pool: + vmImage: 'ubuntu-16.04' + steps: + - script: | + echo "FROM quay.io/pypa/manylinux1_x86_64 + COPY . /tmp/openblas + RUN cd /tmp/openblas && \ + COMMON_FLAGS='DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32' && \ + BTYPE='BINARY=64' CC=gcc && \ + make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE && \ + make -C test $COMMON_FLAGS $BTYPE && \ + make -C ctest $COMMON_FLAGS $BTYPE && \ + make -C utest $COMMON_FLAGS $BTYPE" > Dockerfile + docker build . + displayName: Run manylinux1 docker build diff --git a/lapack/getrf/getrf_parallel.c b/lapack/getrf/getrf_parallel.c index 591ce4a99..c82defcab 100644 --- a/lapack/getrf/getrf_parallel.c +++ b/lapack/getrf/getrf_parallel.c @@ -279,9 +279,6 @@ static int inner_advanced_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG * for (i = 0; i < args -> nthreads; i++) #if 1 { - LOCK_COMMAND(&getrf_lock); - jw = job[mypos].working[i][CACHE_LINE_SIZE * bufferside]; - UNLOCK_COMMAND(&getrf_lock); do { LOCK_COMMAND(&getrf_lock); jw = job[mypos].working[i][CACHE_LINE_SIZE * bufferside]; @@ -368,9 +365,6 @@ static int inner_advanced_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG * if ((current != mypos) && (!is)) { #if 1 - LOCK_COMMAND(&getrf_lock); - jw = job[current].working[mypos][CACHE_LINE_SIZE * bufferside]; - UNLOCK_COMMAND(&getrf_lock); do { LOCK_COMMAND(&getrf_lock); jw = job[current].working[mypos][CACHE_LINE_SIZE * bufferside]; @@ -402,9 +396,6 @@ static int inner_advanced_thread(blas_arg_t *args, BLASLONG *range_m, BLASLONG * for (i = 0; i < args -> nthreads; i++) { for (xxx = 0; xxx < DIVIDE_RATE; xxx++) { #if 1 - LOCK_COMMAND(&getrf_lock); - jw = job[mypos].working[i][CACHE_LINE_SIZE *xxx]; - UNLOCK_COMMAND(&getrf_lock); do { LOCK_COMMAND(&getrf_lock); jw = job[mypos].working[i][CACHE_LINE_SIZE *xxx];