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