You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

azure-pipelines.yml 13 kB

4 years ago
4 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316
  1. trigger:
  2. # start a new build for every push
  3. batch: False
  4. branches:
  5. include:
  6. - develop
  7. resources:
  8. containers:
  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'
  15. jobs:
  16. # manylinux1 is useful to test because the
  17. # standard Docker container uses an old version
  18. # of gcc / glibc
  19. - job: manylinux1_gcc
  20. pool:
  21. vmImage: 'ubuntu-latest'
  22. steps:
  23. - script: |
  24. echo "FROM quay.io/pypa/manylinux1_x86_64
  25. COPY . /tmp/openblas
  26. RUN cd /tmp/openblas && \
  27. COMMON_FLAGS='DYNAMIC_ARCH=1 TARGET=NEHALEM NUM_THREADS=32' && \
  28. BTYPE='BINARY=64' CC=gcc && \
  29. make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE && \
  30. make -C test $COMMON_FLAGS $BTYPE && \
  31. make -C ctest $COMMON_FLAGS $BTYPE && \
  32. make -C utest $COMMON_FLAGS $BTYPE" > Dockerfile
  33. docker build .
  34. displayName: Run manylinux1 docker build
  35. - job: Intel_SDE_skx
  36. pool:
  37. vmImage: 'ubuntu-latest'
  38. steps:
  39. - script: |
  40. # at the time of writing the available Azure Ubuntu vm image
  41. # does not support AVX512VL, so use more recent LTS version
  42. echo "FROM ubuntu:bionic
  43. COPY . /tmp/openblas
  44. RUN apt-get -y update && apt-get -y install \\
  45. cmake \\
  46. gfortran \\
  47. make \\
  48. wget
  49. RUN mkdir /tmp/SDE && cd /tmp/SDE && \\
  50. mkdir sde-external-8.35.0-2019-03-11-lin && \\
  51. 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 && \\
  52. 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
  53. RUN cd /tmp/openblas && CC=gcc make QUIET_MAKE=1 DYNAMIC_ARCH=1 NUM_THREADS=32 BINARY=64
  54. 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
  55. docker build -t intel_sde .
  56. # we need a privileged docker run for sde process attachment
  57. docker run --privileged intel_sde
  58. displayName: 'Run AVX512 SkylakeX docker build / test'
  59. - job: Windows_cl
  60. pool:
  61. vmImage: 'windows-latest'
  62. steps:
  63. - task: CMake@1
  64. inputs:
  65. workingDirectory: 'build' # Optional
  66. cmakeArgs: '-G "Visual Studio 17 2022" ..'
  67. - task: CMake@1
  68. inputs:
  69. cmakeArgs: '--build . --config Release'
  70. workingDirectory: 'build'
  71. - script: |
  72. cd build
  73. cd utest
  74. dir
  75. openblas_utest.exe
  76. - job: Windows_mingw_gmake
  77. pool:
  78. vmImage: 'windows-latest'
  79. steps:
  80. - script: |
  81. mingw32-make CC=gcc FC=gfortran DYNAMIC_ARCH=1 DYNAMIC_LIST="SANDYBRIDGE"
  82. - job: Windows_clang_cmake
  83. pool:
  84. vmImage: 'windows-latest'
  85. steps:
  86. - script: |
  87. set "PATH=C:\Miniconda\Scripts;C:\Miniconda\Library\bin;C:\Miniconda\Library\usr\bin;C:\Miniconda\condabin;%PATH%"
  88. set "LIB=C:\Miniconda\Library\lib;%LIB%"
  89. set "CPATH=C:\Miniconda\Library\include;%CPATH%
  90. conda config --add channels conda-forge --force
  91. conda config --set auto_update_conda false
  92. conda install --yes ninja
  93. call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
  94. mkdir build
  95. cd build
  96. 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 ..
  97. cmake --build . --config Release
  98. ctest
  99. - job: Windows_flang_clang
  100. pool:
  101. vmImage: 'windows-2022'
  102. steps:
  103. - script: |
  104. set "PATH=C:\Miniconda\Scripts;C:\Miniconda\Library\bin;C:\Miniconda\Library\usr\bin;C:\Miniconda\condabin;%PATH%"
  105. set "LIB=C:\Miniconda\Library\lib;%LIB%"
  106. set "CPATH=C:\Miniconda\Library\include;%CPATH%"
  107. conda config --add channels conda-forge --force
  108. conda config --set auto_update_conda false
  109. conda install --yes --quiet ninja flang
  110. mkdir build
  111. cd build
  112. call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
  113. cmake -G "Ninja" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_Fortran_COMPILER="flang -I C:\Miniconda\Library\include\flang" -DBUILD_TESTING=OFF -DCMAKE_MT=mt -DCMAKE_BUILD_TYPE=Release -DMSVC_STATIC_CRT=ON ..
  114. cmake --build . --config Release
  115. ctest
  116. - job: Windows_cl_flang
  117. pool:
  118. vmImage: 'windows-2022'
  119. steps:
  120. - script: |
  121. set "PATH=C:\Miniconda\Scripts;C:\Miniconda\Library\bin;C:\Miniconda\Library\usr\bin;C:\Miniconda\condabin;%PATH%"
  122. set "LIB=C:\Miniconda\Library\lib;%LIB%"
  123. set "CPATH=C:\Miniconda\Library\include;%CPATH%"
  124. conda config --add channels conda-forge --force
  125. conda config --set auto_update_conda false
  126. conda install --yes --quiet ninja flang
  127. mkdir build
  128. cd build
  129. call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
  130. cmake -G "Ninja" -DCMAKE_C_COMPILER=cl -DCMAKE_Fortran_COMPILER=flang-new -DC_LAPACK=1 -DCMAKE_MT=mt -DCMAKE_BUILD_TYPE=Release -DMSVC_STATIC_CRT=ON ..
  131. cmake --build . --config Release
  132. ctest
  133. ctest --rerun-failed --output-on-failure
  134. - job: OSX_OpenMP
  135. pool:
  136. vmImage: 'macOS-13'
  137. steps:
  138. - script: |
  139. brew update
  140. make TARGET=CORE2 DYNAMIC_ARCH=1 USE_OPENMP=1 INTERFACE64=1 CC=gcc-13 FC=gfortran-13
  141. make TARGET=CORE2 DYNAMIC_ARCH=1 USE_OPENMP=1 INTERFACE64=1 CC=gcc-13 FC=gfortran-13 PREFIX=../blasinst install
  142. ls -lR ../blasinst
  143. - job: OSX_GCC_Nothreads
  144. pool:
  145. vmImage: 'macOS-13'
  146. steps:
  147. - script: |
  148. brew update
  149. make USE_THREADS=0 CC=gcc-13 FC=gfortran-13
  150. - job: OSX_GCC12
  151. pool:
  152. vmImage: 'macOS-latest'
  153. steps:
  154. - script: |
  155. brew update
  156. make CC=gcc-12 FC=gfortran-12
  157. - job: OSX_LLVM_flangnew
  158. pool:
  159. vmImage: 'macOS-latest'
  160. variables:
  161. LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
  162. LIBRARY_PATH: /usr/local/opt/llvm/lib
  163. steps:
  164. - script: |
  165. brew update
  166. brew install llvm flang
  167. make TARGET=NEHALEM CC=/usr/local/opt/llvm/bin/clang FC=/usr/local/opt/flang/bin/flang NO_SHARED=1
  168. - job: OSX_OpenMP_Clang
  169. pool:
  170. vmImage: 'macOS-latest'
  171. variables:
  172. LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
  173. LIBRARY_PATH: /usr/local/opt/llvm/lib
  174. steps:
  175. - script: |
  176. brew update
  177. brew install llvm libomp
  178. make TARGET=CORE2 USE_OPENMP=1 DYNAMIC_ARCH=1 CC=/usr/local/opt/llvm/bin/clang NOFORTRAN=1
  179. - job: OSX_OpenMP_Clang_cmake
  180. pool:
  181. vmImage: 'macOS-latest'
  182. variables:
  183. LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
  184. LIBRARY_PATH: /usr/local/opt/llvm/lib
  185. steps:
  186. - script: |
  187. brew update
  188. brew install llvm libomp
  189. mkdir build
  190. cd build
  191. 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 ..
  192. make
  193. ctest
  194. - job: OSX_dynarch_cmake
  195. pool:
  196. vmImage: 'macOS-13'
  197. variables:
  198. LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
  199. LIBRARY_PATH: /usr/local/opt/llvm/lib
  200. steps:
  201. - script: |
  202. mkdir build
  203. cd build
  204. cmake -DTARGET=CORE2 -DDYNAMIC_ARCH=1 -DDYNAMIC_LIST='NEHALEM HASWELL SKYLAKEX' -DCMAKE_C_COMPILER=gcc-13 -DCMAKE_Fortran_COMPILER=gfortran-13 -DBUILD_SHARED_LIBS=ON ..
  205. cmake --build .
  206. ctest
  207. - job: OSX_Ifort_Clang
  208. pool:
  209. vmImage: 'macOS-latest'
  210. variables:
  211. LD_LIBRARY_PATH: /usr/local/opt/llvm/lib
  212. MACOS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/edb4dc2f-266f-47f2-8d56-21bc7764e119/m_HPCKit_p_2023.2.0.49443.dmg
  213. LIBRARY_PATH: /usr/local/opt/llvm/lib
  214. MACOS_FORTRAN_COMPONENTS: intel.oneapi.mac.ifort-compiler
  215. steps:
  216. - script: |
  217. brew update
  218. brew install llvm libomp
  219. sudo mkdir -p /opt/intel
  220. sudo chown $USER /opt/intel
  221. displayName: prepare for cache restore
  222. - task: Cache@2
  223. inputs:
  224. path: /opt/intel/oneapi
  225. key: '"install" | "$(MACOS_HPCKIT_URL)" | "$(MACOS_FORTRAN_COMPONENTS)"'
  226. cacheHitVar: CACHE_RESTORED
  227. - script: |
  228. curl --output webimage.dmg --url $(MACOS_HPCKIT_URL) --retry 5 --retry-delay 5
  229. hdiutil attach webimage.dmg
  230. 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=.
  231. installer_exit_code=$?
  232. hdiutil detach /Volumes/"$(basename "$URL" .dmg)" -quiet
  233. exit $installer_exit_code
  234. displayName: install
  235. condition: ne(variables.CACHE_RESTORED, 'true')
  236. - script: |
  237. source /opt/intel/oneapi/setvars.sh
  238. make CC=/usr/local/opt/llvm/bin/clang FC=ifort
  239. - job: OSX_NDK_ARMV7
  240. pool:
  241. vmImage: 'macOS-13'
  242. steps:
  243. - script: |
  244. brew update
  245. brew install --cask android-ndk
  246. export ANDROID_NDK_HOME=/usr/local/share/android-ndk
  247. 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
  248. - job: OSX_IOS_ARMV8
  249. pool:
  250. vmImage: 'macOS-13'
  251. variables:
  252. CC: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
  253. CFLAGS: -O2 -Wno-macro-redefined -isysroot /Applications/Xcode_14.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.2.sdk -arch arm64 -miphoneos-version-min=10.0
  254. steps:
  255. - script: |
  256. make TARGET=ARMV8 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
  257. - job: OSX_IOS_ARMV7
  258. pool:
  259. vmImage: 'macOS-13'
  260. variables:
  261. CC: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
  262. CFLAGS: -O2 -mno-thumb -Wno-macro-redefined -isysroot /Applications/Xcode_14.2.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.2.sdk -arch armv7 -miphoneos-version-min=5.1
  263. steps:
  264. - script: |
  265. make TARGET=ARMV7 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
  266. - job: OSX_xbuild_DYNAMIC_ARM64
  267. pool:
  268. vmImage: 'macOS-13'
  269. variables:
  270. CC: /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
  271. CFLAGS: -O2 -Wno-macro-redefined -isysroot /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -arch arm64
  272. steps:
  273. - script: |
  274. ls /Applications/Xcode_14.2.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
  275. /Applications/Xcode_12.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 --print-supported-cpus
  276. /Applications/Xcode_14.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang --version
  277. make TARGET=ARMV8 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1
  278. - job: ALPINE_MUSL
  279. pool:
  280. vmImage: 'ubuntu-latest'
  281. steps:
  282. - script: |
  283. wget https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.14.0/alpine-chroot-install \
  284. && echo 'ccbf65f85cdc351851f8ad025bb3e65bae4d5b06 alpine-chroot-install' | sha1sum -c \
  285. || exit 1
  286. alpine() { /alpine/enter-chroot -u "$USER" "$@"; }
  287. sudo sh alpine-chroot-install -p 'build-base gfortran perl linux-headers sudo'
  288. alpine make DYNAMIC_ARCH=1 BINARY=64
  289. alpine make DYNAMIC_ARCH=1 BINARY=64 PREFIX=mytestdir install
  290. alpine ls -l mytestdir/include
  291. alpine echo "// tests that inclusion of openblas_config.h works with musl" >test_install.c
  292. alpine echo "#include <openblas_config.h>" >>test_install.c
  293. alpine echo "int main(){" >> test_install.c
  294. alpine echo "cpu_set_t* cpu_set = NULL;}" >>test_install.c
  295. alpine gcc -Imytestdir/include test_install.c -Lmytestdir/lib -lopenblas -lpthread -lgfortran -o test_install