2 # start a new build for every push
9 - container: oneapi-hpckit
10 image: intel/oneapi-hpckit:latest
11 options: '-v /usr/bin/sudo:/usr/bin/sudo -v /usr/lib/sudo/libsudo_util.so.0:/usr/lib/sudo/libsudo_util.so.0 -v /usr/lib/sudo/sudoers.so:/usr/lib/sudo/sudoers.so'
12 - container: oneapi-basekit
13 image: intel/oneapi-basekit:latest
14 options: '-v /usr/bin/sudo:/usr/bin/sudo -v /usr/lib/sudo/libsudo_util.so.0:/usr/lib/sudo/libsudo_util.so.0 -v /usr/lib/sudo/sudoers.so:/usr/lib/sudo/sudoers.so'
17 # manylinux1 is useful to test because the
18 # standard Docker container uses an old version
22 vmImage: 'ubuntu-latest'
25 echo "FROM quay.io/pypa/manylinux1_x86_64
27 RUN cd /tmp/openblas && \
28 COMMON_FLAGS='DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32' && \
29 BTYPE='BINARY=64' CC=gcc && \
30 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE && \
31 make -C test $COMMON_FLAGS $BTYPE && \
32 make -C ctest $COMMON_FLAGS $BTYPE && \
33 make -C utest $COMMON_FLAGS $BTYPE" > Dockerfile
35 displayName: Run manylinux1 docker build
38 vmImage: 'ubuntu-latest'
41 # at the time of writing the available Azure Ubuntu vm image
42 # does not support AVX512VL, so use more recent LTS version
43 echo "FROM ubuntu:bionic
45 RUN apt-get -y update && apt-get -y install \\
50 RUN mkdir /tmp/SDE && cd /tmp/SDE && \\
51 mkdir sde-external-8.35.0-2019-03-11-lin && \\
52 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 && \\
53 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
54 RUN cd /tmp/openblas && CC=gcc make QUIET_MAKE=1 DYNAMIC_ARCH=1 NUM_THREADS=32 BINARY=64
55 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
56 docker build -t intel_sde .
57 # we need a privileged docker run for sde process attachment
58 docker run --privileged intel_sde
59 displayName: 'Run AVX512 SkylakeX docker build / test'
63 vmImage: 'windows-latest'
67 workingDirectory: 'build' # Optional
68 cmakeArgs: '-G "Visual Studio 17 2022" ..'
71 cmakeArgs: '--build . --config Release'
72 workingDirectory: 'build'
79 - job: Windows_mingw_gmake
81 vmImage: 'windows-latest'
84 mingw32-make CC=gcc FC=gfortran DYNAMIC_ARCH=1 DYNAMIC_LIST="NEHALEM SANDYBRIDGE HASWELL"
86 - job: Windows_clang_cmake
88 vmImage: 'windows-latest'
91 set "PATH=C:\Miniconda\Scripts;C:\Miniconda\Library\bin;C:\Miniconda\Library\usr\bin;C:\Miniconda\condabin;%PATH%"
92 set "LIB=C:\Miniconda\Library\lib;%LIB%"
93 set "CPATH=C:\Miniconda\Library\include;%CPATH%
94 conda config --add channels conda-forge --force
95 conda config --set auto_update_conda false
96 conda install --yes ninja
97 call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
100 cmake -G "Ninja" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_MT=mt -DCMAKE_BUILD_TYPE=Release -DNOFORTRAN=1 -DMSVC_STATIC_CRT=ON ..
101 cmake --build . --config Release
104 - job: Windows_flang_clang
106 vmImage: 'windows-2022'
109 set "PATH=C:\Miniconda\Scripts;C:\Miniconda\Library\bin;C:\Miniconda\Library\usr\bin;C:\Miniconda\condabin;%PATH%"
110 set "LIB=C:\Miniconda\Library\lib;%LIB%"
111 set "CPATH=C:\Miniconda\Library\include;%CPATH%"
112 conda config --add channels conda-forge --force
113 conda config --set auto_update_conda false
114 conda install --yes --quiet ninja flang
117 call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
118 cmake -G "Ninja" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER=flang -DBUILD_TESTING=OFF -DCMAKE_MT=mt -DCMAKE_BUILD_TYPE=Release -DMSVC_STATIC_CRT=ON ..
119 cmake --build . --config Release
122 - job: Windows_cl_flang
124 vmImage: 'windows-2022'
127 set "PATH=C:\Miniconda\Scripts;C:\Miniconda\Library\bin;C:\Miniconda\Library\usr\bin;C:\Miniconda\condabin;%PATH%"
128 set "LIB=C:\Miniconda\Library\lib;%LIB%"
129 set "CPATH=C:\Miniconda\Library\include;%CPATH%"
130 conda config --add channels conda-forge --force
131 conda config --set auto_update_conda false
132 conda install --yes --quiet ninja flang
135 call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
136 cmake -G "Ninja" -DCMAKE_C_COMPILER=cl -DCMAKE_Fortran_COMPILER=flang -DC_LAPACK=1 -DCMAKE_MT=mt -DCMAKE_BUILD_TYPE=Release -DMSVC_STATIC_CRT=ON ..
137 cmake --build . --config Release
144 vmImage: 'macOS-10.15'
148 make TARGET=CORE2 DYNAMIC_ARCH=1 USE_OPENMP=1 INTERFACE64=1 CC=gcc-10 FC=gfortran-10
149 make TARGET=CORE2 DYNAMIC_ARCH=1 USE_OPENMP=1 INTERFACE64=1 CC=gcc-10 FC=gfortran-10 PREFIX=../blasinst install
152 - job: OSX_GCC_Nothreads
154 vmImage: 'macOS-10.15'
158 make USE_THREADS=0 CC=gcc-10 FC=gfortran-10
160 - job: OSX_OpenMP_Clang
162 vmImage: 'macOS-10.15'
164 LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
165 LIBRARY_PATH: /usr/local/opt/llvm/lib
166 MACOSX_DEPLOYMENT_TARGET: 11.0
170 brew install llvm libomp
171 make TARGET=CORE2 USE_OPENMP=1 DYNAMIC_ARCH=1 CC=/usr/local/opt/llvm/bin/clang NOFORTRAN=1
173 - job: OSX_OpenMP_Clang_cmake
175 vmImage: 'macOS-10.15'
177 LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
178 LIBRARY_PATH: /usr/local/opt/llvm/lib
182 brew install llvm libomp
185 cmake -DTARGET=CORE2 -DUSE_OPENMP=1 -DINTERFACE64=1 -DDYNAMIC_ARCH=1 -DCMAKE_C_COMPILER=/usr/local/opt/llvm/bin/clang -DNOFORTRAN=1 -DNO_AVX512=1 ..
189 - job: OSX_dynarch_cmake
191 vmImage: 'macOS-10.15'
193 LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
194 LIBRARY_PATH: /usr/local/opt/llvm/lib
199 cmake -DTARGET=CORE2 -DDYNAMIC_ARCH=1 -DCMAKE_C_COMPILER=gcc-10 -DCMAKE_Fortran_COMPILER=gfortran-10 -DBUILD_SHARED_LIBS=ON ..
203 - job: OSX_Ifort_Clang
205 vmImage: 'macOS-10.15'
207 LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
208 MACOS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/irc_nas/17643/m_HPCKit_p_2021.2.0.2903_offline.dmg
209 LIBRARY_PATH: /usr/local/opt/llvm/lib
210 MACOS_FORTRAN_COMPONENTS: intel.oneapi.mac.ifort-compiler
214 brew install llvm libomp
215 sudo mkdir -p /opt/intel
216 sudo chown $USER /opt/intel
217 displayName: prepare for cache restore
220 path: /opt/intel/oneapi
221 key: '"install" | "$(MACOS_HPCKIT_URL)" | "$(MACOS_FORTRAN_COMPONENTS)"'
222 cacheHitVar: CACHE_RESTORED
224 curl --output webimage.dmg --url $(MACOS_HPCKIT_URL) --retry 5 --retry-delay 5
225 hdiutil attach webimage.dmg
226 sudo /Volumes/"$(basename "$(MACOS_HPCKIT_URL)" .dmg)"/bootstrapper.app/Contents/MacOS/bootstrapper -s --action install --components="$(MACOS_FORTRAN_COMPONENTS)" --eula=accept --continue-with-optional-error=yes --log-dir=.
227 installer_exit_code=$?
228 hdiutil detach /Volumes/"$(basename "$URL" .dmg)" -quiet
229 exit $installer_exit_code
231 condition: ne(variables.CACHE_RESTORED, 'true')
233 source /opt/intel/oneapi/setvars.sh
234 make CC=/usr/local/opt/llvm/bin/clang FC=ifort
238 vmImage: 'macOS-10.15'
242 brew install --cask android-ndk
243 export ANDROID_NDK_HOME=/usr/local/share/android-ndk
244 make TARGET=ARMV7 ONLY_CBLAS=1 CC=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/armv7a-linux-androideabi21-clang AR=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-ar HOSTCC=gcc ARM_SOFTFP_ABI=1 -j4
250 CC: /Applications/Xcode_12.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
251 CFLAGS: -O2 -Wno-macro-redefined -isysroot /Applications/Xcode_12.4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk -arch arm64 -miphoneos-version-min=10.0
254 make TARGET=ARMV8 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
258 vmImage: 'macOS-10.15'
260 CC: /Applications/Xcode_12.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
261 CFLAGS: -O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode_12.4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.4.sdk -arch armv7 -miphoneos-version-min=5.1
264 make TARGET=ARMV7 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
268 vmImage: 'ubuntu-latest'
271 wget https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.13.2/alpine-chroot-install \
272 && echo '60c7e0b5d82e21d1a549fc9a46ba3b36688c09dc alpine-chroot-install' | sha1sum -c \
274 alpine() { /alpine/enter-chroot -u "$USER" "$@"; }
275 sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers sudo'
276 alpine make DYNAMIC_ARCH=1 BINARY=64
277 alpine make DYNAMIC_ARCH=1 BINARY=64 PREFIX=mytestdir install
278 alpine ls -l mytestdir/include
279 alpine echo "// tests that inclusion of openblas_config.h works with musl" >test_install.c
280 alpine echo "#include <openblas_config.h>" >>test_install.c
281 alpine echo "int main(){" >> test_install.c
282 alpine echo "cpu_set_t* cpu_set = NULL;}" >>test_install.c
283 alpine gcc -Imytestdir/include test_install.c -Lmytestdir/lib -lopenblas -lpthread -lgfortran -o test_install