diff --git a/.drone.yml b/.drone.yml index 3bbd8fc886..3ddb6a77b9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -15,7 +15,7 @@ steps: commands: - echo "MAKE_FLAGS:= $COMMON_FLAGS" - apt-get update -y - - apt-get install -y make $CC gfortran perl + - apt-get install -y make $CC gfortran perl - $CC --version - make QUIET_MAKE=1 $COMMON_FLAGS - make -C test $COMMON_FLAGS @@ -165,4 +165,6 @@ steps: - make -C test $COMMON_FLAGS - make -C ctest $COMMON_FLAGS - make -C utest $COMMON_FLAGS - - make -C cpp_thread_test dgemm_tester + - make -C benchmark $COMMON_FLAGS + - benchmark/dgemm.goto 10 10 1 + - make -C cpp_thread_test $COMMON_FLAGS diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c875572b2d..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,211 +0,0 @@ -# XXX: Precise is already deprecated, new default is Trusty. -# https://blog.travis-ci.com/2017-07-11-trusty-as-default-linux-is-coming -dist: precise -sudo: true -language: c - -matrix: - include: - - &test-ubuntu - os: linux - compiler: gcc - addons: - apt: - packages: - - gfortran - before_script: &common-before - - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32" - script: - - set -e - - 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 - env: - - TARGET_BOX=LINUX64 - - BTYPE="BINARY=64" - - - <<: *test-ubuntu - os: linux-ppc64le - before_script: - - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=POWER8 NUM_THREADS=32" - env: - # for matrix annotation only - - TARGET_BOX=PPC64LE_LINUX - - BTYPE="BINARY=64 USE_OPENMP=1" - - - <<: *test-ubuntu - os: linux - arch: s390x - before_script: - - COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=Z13 NUM_THREADS=32" - env: - # for matrix annotation only - - TARGET_BOX=IBMZ_LINUX - - BTYPE="BINARY=64 USE_OPENMP=1" - - - <<: *test-ubuntu - env: - - TARGET_BOX=LINUX64 - - BTYPE="BINARY=64 USE_OPENMP=1" - - - <<: *test-ubuntu - env: - - TARGET_BOX=LINUX64 - - BTYPE="BINARY=64 INTERFACE64=1" - - - <<: *test-ubuntu - compiler: clang - env: - - TARGET_BOX=LINUX64 - - BTYPE="BINARY=64 CC=clang" - - - <<: *test-ubuntu - compiler: clang - env: - - TARGET_BOX=LINUX64 - - BTYPE="BINARY=64 INTERFACE64=1 CC=clang" - - - <<: *test-ubuntu - addons: - apt: - packages: - - gcc-multilib - - gfortran-multilib - env: - - TARGET_BOX=LINUX32 - - BTYPE="BINARY=32" - - - os: linux - compiler: gcc - addons: - apt: - packages: - - binutils-mingw-w64-x86-64 - - gcc-mingw-w64-x86-64 - - gfortran-mingw-w64-x86-64 - before_script: *common-before - script: - - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE - env: - - TARGET_BOX=WIN64 - - BTYPE="BINARY=64 HOSTCC=gcc CC=x86_64-w64-mingw32-gcc FC=x86_64-w64-mingw32-gfortran" - - # Build & test on Alpine Linux inside chroot, i.e. on system with musl libc. - # These jobs needs sudo, so Travis runs them on VM-based infrastructure - # which is slower than container-based infrastructure used for jobs - # that don't require sudo. - - &test-alpine - os: linux - dist: trusty - sudo: true - language: minimal - before_install: - - "wget 'https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.9.0/alpine-chroot-install' \ - && echo 'e5dfbbdc0c4b3363b99334510976c86bfa6cb251 alpine-chroot-install' | sha1sum -c || exit 1" - - alpine() { /alpine/enter-chroot -u "$USER" "$@"; } - install: - - sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers' - before_script: *common-before - script: - - set -e - # XXX: Disable some warnings for now to avoid exceeding Travis limit for log size. - - alpine make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE - CFLAGS="-Wno-misleading-indentation -Wno-sign-conversion -Wno-incompatible-pointer-types" - - alpine make -C test $COMMON_FLAGS $BTYPE - - alpine make -C ctest $COMMON_FLAGS $BTYPE - - alpine make -C utest $COMMON_FLAGS $BTYPE - env: - - TARGET_BOX=LINUX64_MUSL - - BTYPE="BINARY=64" - - # XXX: This job segfaults in TESTS OF THE COMPLEX LEVEL 3 BLAS, - # but only on Travis CI, cannot reproduce it elsewhere. - #- &test-alpine-openmp - # <<: *test-alpine - # env: - # - TARGET_BOX=LINUX64_MUSL - # - BTYPE="BINARY=64 USE_OPENMP=1" - - - <<: *test-alpine - env: - - TARGET_BOX=LINUX64_MUSL - - BTYPE="BINARY=64 INTERFACE64=1" - - # Build with the same flags as Alpine do in OpenBLAS package. - - <<: *test-alpine - env: - - TARGET_BOX=LINUX64_MUSL - - BTYPE="BINARY=64 NO_AFFINITY=1 USE_OPENMP=0 NO_LAPACK=0 TARGET=CORE2" - - - &test-cmake - os: linux - compiler: clang - addons: - apt: - packages: - - gfortran - - cmake - dist: trusty - sudo: true - before_script: - - COMMON_ARGS="-DTARGET=NEHALEM -DNUM_THREADS=32" - script: - - set -e - - mkdir build - - CONFIG=Release - - cmake -Bbuild -H. $CMAKE_ARGS $COMMON_ARGS -DCMAKE_BUILD_TYPE=$CONFIG - - cmake --build build --config $CONFIG -- -j2 - env: - - CMAKE=1 - - <<: *test-cmake - env: - - CMAKE=1 CMAKE_ARGS="-DNOFORTRAN=1" - - <<: *test-cmake - compiler: gcc - env: - - CMAKE=1 - - - &test-macos - os: osx - osx_image: xcode10.1 - before_script: - - COMMON_FLAGS="DYNAMIC_ARCH=1 NUM_THREADS=32" - - brew update - - brew install gcc@8 # for gfortran - script: - - travis_wait 45 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE - env: - - BTYPE="TARGET=NEHALEM BINARY=64 INTERFACE64=1 FC=gfortran-8" - - - <<: *test-macos - osx_image: xcode10.0 - env: - - BTYPE="TARGET=NEHALEM BINARY=32 NOFORTRAN=1" - - - <<: *test-macos - osx_image: xcode10.1 - env: - - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" - - CFLAGS="-O2 -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch arm64 -miphoneos-version-min=10.0" - - BTYPE="TARGET=ARMV8 BINARY=64 HOSTCC=clang NOFORTRAN=1" - - - <<: *test-macos - osx_image: xcode10.1 - env: - - CC="/Applications/Xcode-10.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" - - CFLAGS="-O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode-10.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.1.sdk -arch armv7 -miphoneos-version-min=5.1" - - BTYPE="TARGET=ARMV7 HOSTCC=clang NOFORTRAN=1" -# whitelist -branches: - only: - - master - - develop - -notifications: - webhooks: - urls: - - https://webhooks.gitter.im/e/8a6e4470a0cebd090344 - on_success: change # options: [always|never|change] default: always - on_failure: always # options: [always|never|change] default: always - on_start: never # options: [always|never|change] default: always diff --git a/Makefile.rule b/Makefile.rule index 724a60ec4f..70358c3f27 100644 --- a/Makefile.rule +++ b/Makefile.rule @@ -95,7 +95,7 @@ VERSION = 0.3.9.dev # This flag defines how many instances of OpenBLAS's calculation API can actually # run in parallel. If more than NUM_PARALLEL threads call OpenBLAS's calculation API, # they need to wait for the preceding API calls to finish or risk data corruption. -# NUM_PARALLEL = 2 +NUM_PARALLEL = 1 # When multithreading, OpenBLAS needs to use a memory buffer for communicating # and collating results for individual subranges of the original matrix. Since diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index 1936059d54..0000000000 --- a/appveyor.yml +++ /dev/null @@ -1,82 +0,0 @@ -version: 0.2.19.{build} - -#environment: - -platform: - - x64 - -os: Visual Studio 2017 - -configuration: Release - -clone_folder: c:\projects\OpenBLAS - -init: - - git config --global core.autocrlf input - -clone_depth: 5 - -skip_tags: true - -matrix: - fast_finish: false - -skip_commits: -# Add [av skip] to commit messages - message: /\[av skip\]/ - -environment: - global: - CONDA_INSTALL_LOCN: C:\\Miniconda36-x64 - matrix: - - COMPILER: clang-cl - WITH_FORTRAN: yes - - COMPILER: clang-cl - DYNAMIC_ARCH: ON - WITH_FORTRAN: no - - COMPILER: cl - - COMPILER: MinGW64-gcc-7.2.0-mingw - DYNAMIC_ARCH: OFF - WITH_FORTRAN: ignore - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - COMPILER: MinGW-gcc-6.3.0-32 - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - COMPILER: MinGW-gcc-5.3.0 - WITH_FORTRAN: ignore - -install: - - if [%COMPILER%]==[clang-cl] call %CONDA_INSTALL_LOCN%\Scripts\activate.bat - - if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force - - if [%COMPILER%]==[clang-cl] conda install --yes --quiet clangdev cmake - - - if [%WITH_FORTRAN%]==[no] conda install --yes --quiet ninja - - if [%WITH_FORTRAN%]==[yes] conda install --yes --quiet -c isuruf kitware-ninja - - if [%WITH_FORTRAN%]==[yes] conda install --yes --quiet flang - - - if [%COMPILER%]==[clang-cl] call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 - - if [%COMPILER%]==[clang-cl] set "LIB=%CONDA_INSTALL_LOCN%\Library\lib;%LIB%" - - if [%COMPILER%]==[clang-cl] set "CPATH=%CONDA_INSTALL_LOCN%\Library\include;%CPATH%" - -before_build: - - ps: if (-Not (Test-Path .\build)) { mkdir build } - - cd build - - set PATH=%PATH:C:\Program Files\Git\usr\bin;=% - - if [%COMPILER%]==[MinGW-gcc-5.3.0] set PATH=C:\MinGW\bin;C:\msys64\usr\bin;C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - - if [%COMPILER%]==[MinGW64-gcc-7.2.0-mingw] set PATH=C:\MinGW\bin;C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH% - - if [%COMPILER%]==[MinGW-gcc-6.3.0-32] set PATH=C:\msys64\usr\bin;C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw64\bin;%PATH% - - if [%COMPILER%]==[cl] cmake -G "Visual Studio 15 2017 Win64" .. - - if [%COMPILER%]==[MinGW64-gcc-7.2.0-mingw] cmake -G "MinGW Makefiles" -DNOFORTRAN=1 .. - - if [%COMPILER%]==[MinGW-gcc-6.3.0-32] cmake -G "MSYS Makefiles" -DNOFORTRAN=1 .. - - if [%COMPILER%]==[MinGW-gcc-5.3.0] cmake -G "MSYS Makefiles" -DNOFORTRAN=1 .. - - if [%WITH_FORTRAN%]==[no] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DMSVC_STATIC_CRT=ON .. - - if [%WITH_FORTRAN%]==[yes] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DBUILD_WITHOUT_LAPACK=no -DNOFORTRAN=0 .. - - if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON -DDYNAMIC_LIST='CORE2;NEHALEM;SANDYBRIDGE;BULLDOZER;HASWELL' .. - -build_script: - - cmake --build . - -test_script: - - echo Running Test - - cd utest - - openblas_utest - diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index 9b4c85367d..0000000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,51 +0,0 @@ -trigger: - # start a new build for every push - batch: False - branches: - include: - - develop - -jobs: -# 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 -- job: Intel_SDE_skx - pool: - vmImage: 'ubuntu-16.04' - steps: - - script: | - # at the time of writing the available Azure Ubuntu vm image - # does not support AVX512VL, so use more recent LTS version - echo "FROM ubuntu:bionic - COPY . /tmp/openblas - RUN apt-get -y update && apt-get -y install \\ - cmake \\ - gfortran \\ - make \\ - wget - RUN mkdir /tmp/SDE && cd /tmp/SDE && \\ - mkdir sde-external-8.35.0-2019-03-11-lin && \\ - wget --quiet -O sde-external-8.35.0-2019-03-11-lin.tar.bz2 https://www.dropbox.com/s/fopsnzj67572sj5/sde-external-8.35.0-2019-03-11-lin.tar.bz2?dl=0 && \\ - tar -xjvf sde-external-8.35.0-2019-03-11-lin.tar.bz2 -C /tmp/SDE/sde-external-8.35.0-2019-03-11-lin --strip-components=1 - RUN cd /tmp/openblas && CC=gcc make QUIET_MAKE=1 DYNAMIC_ARCH=1 NUM_THREADS=32 BINARY=64 - CMD cd /tmp/openblas && echo 0 > /proc/sys/kernel/yama/ptrace_scope && CC=gcc OPENBLAS_VERBOSE=2 /tmp/SDE/sde-external-8.35.0-2019-03-11-lin/sde64 -cpuid_in /tmp/SDE/sde-external-8.35.0-2019-03-11-lin/misc/cpuid/skx/cpuid.def -- make -C utest DYNAMIC_ARCH=1 NUM_THREADS=32 BINARY=64" > Dockerfile - docker build -t intel_sde . - # we need a privileged docker run for sde process attachment - docker run --privileged intel_sde - displayName: 'Run AVX512 SkylakeX docker build / test' diff --git a/benchmark/gemm.c b/benchmark/gemm.c index dd016a7c32..944f8ab673 100644 --- a/benchmark/gemm.c +++ b/benchmark/gemm.c @@ -126,14 +126,14 @@ int main(int argc, char *argv[]){ char transa = 'N'; char transb = 'N'; blasint m, n, k, i, j, lda, ldb, ldc; - int loops = 1; + int loops = 100000; int has_param_m = 0; int has_param_n = 0; int has_param_k = 0; char *p; int from = 1; - int to = 200; + int to = 40; int step = 1; struct timeval start, stop; @@ -159,7 +159,7 @@ int main(int argc, char *argv[]){ TOUPPER(transb); fprintf(stderr, "From : %3d To : %3d Step=%d : Transa=%c : Transb=%c\n", from, to, step, transa, transb); - + fprintf(stderr,"OMP with %d threads on a build with NUM_BUFFERS=%d\n",omp_get_max_threads(),NUM_BUFFERS); p = getenv("OPENBLAS_LOOPS"); if ( p != NULL ) { loops = atoi(p); @@ -227,6 +227,7 @@ int main(int argc, char *argv[]){ fprintf(stderr, " M=%4d, N=%4d, K=%4d : ", (int)m, (int)n, (int)k); gettimeofday( &start, (struct timezone *)0); +#pragma omp parallel for (j=0; j 4){ std::cout<<"ERROR: too many arguments for thread safety tester"< 4){ std::cout<<"ERROR: too many arguments for thread safety tester"< %d\n", position); #endif -WMB; +// WMB; not sure if this is required here ? memory[position].used = 1; #if (defined(SMP) || defined(USE_LOCKING)) && !defined(USE_OPENMP) UNLOCK_COMMAND(&alloc_lock);