Skip to content

Commit e46971b

Browse files
authored
Merge branch 'develop' into release-0.3.0
2 parents b89fb70 + 5736dba commit e46971b

File tree

2,603 files changed

+155586
-112404
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,603 files changed

+155586
-112404
lines changed

.github/workflows/dynamic_arch.yml

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ name: continuous build
22

33
on: [push, pull_request]
44

5+
permissions:
6+
contents: read # to fetch code (actions/checkout)
7+
58
jobs:
69
build:
710
runs-on: ${{ matrix.os }}
@@ -34,7 +37,7 @@ jobs:
3437
- name: Install Dependencies
3538
run: |
3639
if [ "$RUNNER_OS" == "Linux" ]; then
37-
sudo apt-get install -y gfortran cmake ccache
40+
sudo apt-get install -y gfortran cmake ccache libtinfo5
3841
elif [ "$RUNNER_OS" == "macOS" ]; then
3942
# It looks like "gfortran" isn't working correctly unless "gcc" is re-installed.
4043
brew reinstall gcc
@@ -150,6 +153,7 @@ jobs:
150153
matrix:
151154
msystem: [MINGW64, MINGW32, CLANG64]
152155
idx: [int32, int64]
156+
build-type: [Release]
153157
include:
154158
- msystem: MINGW64
155159
idx: int32
@@ -173,6 +177,11 @@ jobs:
173177
idx64-flags: -DBINARY=64 -DINTERFACE64=1
174178
target-prefix: mingw-w64-clang-x86_64
175179
c-lapack-flags: -DC_LAPACK=ON
180+
- msystem: MINGW64
181+
idx: int32
182+
target-prefix: mingw-w64-x86_64
183+
fc-pkg: mingw-w64-x86_64-gcc-fortran
184+
build-type: None
176185
exclude:
177186
- msystem: MINGW32
178187
idx: int64
@@ -215,11 +224,11 @@ jobs:
215224
path: C:/msys64/home/runneradmin/.ccache
216225
# We include the commit sha in the cache key, as new cache entries are
217226
# only created if there is no existing entry for the key yet.
218-
key: ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ github.ref }}-${{ github.sha }}
227+
key: ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ matrix.build-type }}-${{ github.ref }}-${{ github.sha }}
219228
# Restore a matching ccache cache entry. Prefer same branch.
220229
restore-keys: |
221-
ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ github.ref }}
222-
ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}
230+
ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ matrix.build-type }}-${{ github.ref }}
231+
ccache-msys2-${{ matrix.msystem }}-${{ matrix.idx }}-${{ matrix.build-type }}
223232
224233
- name: Configure ccache
225234
# Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota.
@@ -235,7 +244,8 @@ jobs:
235244
- name: Configure OpenBLAS
236245
run: |
237246
mkdir build && cd build
238-
cmake -DBUILD_SHARED_LIBS=ON \
247+
cmake -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} \
248+
-DBUILD_SHARED_LIBS=ON \
239249
-DBUILD_STATIC_LIBS=ON \
240250
-DDYNAMIC_ARCH=ON \
241251
-DUSE_THREAD=ON \
@@ -257,3 +267,54 @@ jobs:
257267
- name: Run tests
258268
timeout-minutes: 60
259269
run: cd build && ctest
270+
271+
272+
cross_build:
273+
runs-on: ubuntu-22.04
274+
275+
strategy:
276+
fail-fast: false
277+
matrix:
278+
include:
279+
- target: mips64el
280+
triple: mips64el-linux-gnuabi64
281+
opts: DYNAMIC_ARCH=1 TARGET=GENERIC
282+
- target: riscv64
283+
triple: riscv64-linux-gnu
284+
opts: TARGET=RISCV64_GENERIC
285+
- target: mipsel
286+
triple: mipsel-linux-gnu
287+
opts: TARGET=MIPS1004K
288+
- target: alpha
289+
triple: alpha-linux-gnu
290+
opts: TARGET=EV4
291+
292+
steps:
293+
- name: Checkout repository
294+
uses: actions/checkout@v3
295+
296+
- name: Install Dependencies
297+
run: |
298+
sudo apt-get install -y ccache gcc-${{ matrix.triple }} gfortran-${{ matrix.triple }} libgomp1-${{ matrix.target }}-cross
299+
300+
- name: Compilation cache
301+
uses: actions/cache@v3
302+
with:
303+
path: ~/.ccache
304+
key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }}
305+
restore-keys: |
306+
ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}
307+
ccache-${{ runner.os }}-${{ matrix.target }}
308+
309+
- name: Configure ccache
310+
run: |
311+
# Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota (5 GB).
312+
test -d ~/.ccache || mkdir -p ~/.ccache
313+
echo "max_size = 300M" > ~/.ccache/ccache.conf
314+
echo "compression = true" >> ~/.ccache/ccache.conf
315+
ccache -s
316+
317+
318+
- name: Build OpenBLAS
319+
run: |
320+
make -j$(nproc) HOSTCC="ccache gcc" CC="ccache ${{ matrix.triple }}-gcc" FC="ccache ${{ matrix.triple }}-gfortran" ARCH=${{ matrix.target }} ${{ matrix.opts }}

.github/workflows/mips64.yml

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
name: mips64 qemu test
2+
3+
on: [push, pull_request]
4+
5+
permissions:
6+
contents: read # to fetch code (actions/checkout)
7+
8+
jobs:
9+
TEST:
10+
runs-on: ubuntu-latest
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
include:
15+
- target: MIPS64_GENERIC
16+
triple: mips64el-linux-gnuabi64
17+
opts: NO_SHARED=1 TARGET=MIPS64_GENERIC
18+
- target: SICORTEX
19+
triple: mips64el-linux-gnuabi64
20+
opts: NO_SHARED=1 TARGET=SICORTEX
21+
- target: I6400
22+
triple: mipsisa64r6el-linux-gnuabi64
23+
opts: NO_SHARED=1 TARGET=I6400
24+
- target: P6600
25+
triple: mipsisa64r6el-linux-gnuabi64
26+
opts: NO_SHARED=1 TARGET=P6600
27+
- target: I6500
28+
triple: mipsisa64r6el-linux-gnuabi64
29+
opts: NO_SHARED=1 TARGET=I6500
30+
31+
steps:
32+
- name: Checkout repository
33+
uses: actions/checkout@v3
34+
35+
- name: install build deps
36+
run: |
37+
sudo apt-get update
38+
sudo apt-get install autoconf automake autotools-dev ninja-build make ccache \
39+
gcc-${{ matrix.triple }} gfortran-${{ matrix.triple }} libgomp1-mips64el-cross
40+
41+
- name: checkout qemu
42+
uses: actions/checkout@v3
43+
with:
44+
repository: qemu/qemu
45+
path: qemu
46+
ref: 79dfa177ae348bb5ab5f97c0915359b13d6186e2
47+
48+
- name: build qemu
49+
run: |
50+
cd qemu
51+
./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=mips64el-linux-user --disable-system
52+
make -j$(nproc)
53+
make install
54+
55+
- name: Compilation cache
56+
uses: actions/cache@v3
57+
with:
58+
path: ~/.ccache
59+
key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }}
60+
restore-keys: |
61+
ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}
62+
ccache-${{ runner.os }}-${{ matrix.target }}
63+
64+
- name: Configure ccache
65+
run: |
66+
test -d ~/.ccache || mkdir -p ~/.ccache
67+
echo "max_size = 300M" > ~/.ccache/ccache.conf
68+
echo "compression = true" >> ~/.ccache/ccache.conf
69+
ccache -s
70+
71+
- name: build OpenBLAS
72+
run: make CC='ccache ${{ matrix.triple }}-gcc -static' FC='ccache ${{ matrix.triple }}-gfortran -static' ${{ matrix.opts }} HOSTCC='ccache gcc' -j$(nproc)
73+
74+
- name: test
75+
run: |
76+
export PATH=$GITHUB_WORKSPACE/qemu-install/bin/:$PATH
77+
qemu-mips64el ./utest/openblas_utest
78+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xscblat1
79+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xdcblat1
80+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xccblat1
81+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xzcblat1
82+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xscblat2 < ./ctest/sin2
83+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xdcblat2 < ./ctest/din2
84+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xccblat2 < ./ctest/cin2
85+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xzcblat2 < ./ctest/zin2
86+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xscblat3 < ./ctest/sin3
87+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xdcblat3 < ./ctest/din3
88+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xccblat3 < ./ctest/cin3
89+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./ctest/xzcblat3 < ./ctest/zin3
90+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/sblat1
91+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/dblat1
92+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/cblat1
93+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/zblat1
94+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/sblat1
95+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/dblat1
96+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/cblat1
97+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/zblat1
98+
rm -f ./test/?BLAT2.SUMM
99+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/sblat2 < ./test/sblat2.dat
100+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/dblat2 < ./test/dblat2.dat
101+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/cblat2 < ./test/cblat2.dat
102+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/zblat2 < ./test/zblat2.dat
103+
rm -f ./test/?BLAT2.SUMM
104+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/sblat2 < ./test/sblat2.dat
105+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/dblat2 < ./test/dblat2.dat
106+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/cblat2 < ./test/cblat2.dat
107+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/zblat2 < ./test/zblat2.dat
108+
rm -f ./test/?BLAT3.SUMM
109+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/sblat3 < ./test/sblat3.dat
110+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/dblat3 < ./test/dblat3.dat
111+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/cblat3 < ./test/cblat3.dat
112+
OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 qemu-mips64el ./test/zblat3 < ./test/zblat3.dat
113+
rm -f ./test/?BLAT3.SUMM
114+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/sblat3 < ./test/sblat3.dat
115+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/dblat3 < ./test/dblat3.dat
116+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/cblat3 < ./test/cblat3.dat
117+
OPENBLAS_NUM_THREADS=2 qemu-mips64el ./test/zblat3 < ./test/zblat3.dat

.github/workflows/nightly-Homebrew-build.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ on:
1717
# it only makes sense to test if this file has been changed
1818

1919
name: Nightly-Homebrew-Build
20+
21+
permissions:
22+
contents: read # to fetch code (actions/checkout)
23+
2024
jobs:
2125
build-OpenBLAS-with-Homebrew:
2226
runs-on: macos-latest
@@ -28,6 +32,8 @@ jobs:
2832
HOMEBREW_NO_AUTO_UPDATE: "ON"
2933
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: "ON"
3034
HOMEBREW_NO_INSTALL_CLEANUP: "ON"
35+
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: "ON"
36+
HOMEBREW_NO_INSTALL_FROM_API: "ON"
3137

3238
steps:
3339
- name: Random delay for cron job

.travis.yml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ matrix:
3030
before_script: &common-before
3131
- COMMON_FLAGS="DYNAMIC_ARCH=1 TARGET=POWER8 NUM_THREADS=32"
3232
script:
33-
- travis_wait 20 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
33+
- travis_wait 50 make QUIET_MAKE=1 $COMMON_FLAGS $BTYPE
3434
- make -C test $COMMON_FLAGS $BTYPE
3535
- make -C ctest $COMMON_FLAGS $BTYPE
3636
- make -C utest $COMMON_FLAGS $BTYPE
@@ -104,7 +104,7 @@ matrix:
104104
- sudo apt-get update
105105
- sudo apt-get install gcc-9 gfortran-9 -y
106106
script:
107-
- travis_wait 20 make QUIET_MAKE=1 BINARY=64 USE_OPENMP=1 CC=gcc-9 FC=gfortran-9
107+
- travis_wait 50 make QUIET_MAKE=1 BINARY=64 USE_OPENMP=1 CC=gcc-9 FC=gfortran-9
108108
- make -C test $COMMON_FLAGS $BTYPE
109109
- make -C ctest $COMMON_FLAGS $BTYPE
110110
- make -C utest $COMMON_FLAGS $BTYPE
@@ -121,7 +121,7 @@ matrix:
121121
- sudo apt-get update
122122
- sudo apt-get install gcc-9 gfortran-9 -y
123123
script:
124-
- travis_wait 20 make QUIET_MAKE=1 BUILD_BFLOAT16=1 BINARY=64 USE_OPENMP=1 CC=gcc-9 FC=gfortran-9
124+
- travis_wait 50 make QUIET_MAKE=1 BUILD_BFLOAT16=1 BINARY=64 USE_OPENMP=1 CC=gcc-9 FC=gfortran-9
125125
- make -C test $COMMON_FLAGS $BTYPE
126126
- make -C ctest $COMMON_FLAGS $BTYPE
127127
- make -C utest $COMMON_FLAGS $BTYPE
@@ -285,6 +285,25 @@ matrix:
285285
- gfortran
286286
script:
287287
- travis_wait 45 make && make lapack-test
288+
env:
289+
- TARGET_BOX=NEOVERSE_N1
290+
291+
- &test-neon1-gcc8
292+
os: linux
293+
arch: arm64
294+
dist: focal
295+
group: edge
296+
virt: lxd
297+
compiler: gcc
298+
addons:
299+
apt:
300+
packages:
301+
- gcc-8
302+
- gfortran-8
303+
script:
304+
- travis_wait 45 make QUIET_MAKE=1 CC=gcc-8 FC=gfortran-8 DYNAMIC_ARCH=1
305+
env:
306+
- TARGET_BOX=NEOVERSE_N1-GCC8
288307

289308
# whitelist
290309
branches:

CMakeLists.txt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ project(OpenBLAS C ASM)
88

99
set(OpenBLAS_MAJOR_VERSION 0)
1010
set(OpenBLAS_MINOR_VERSION 3)
11-
set(OpenBLAS_PATCH_VERSION 21)
11+
set(OpenBLAS_PATCH_VERSION 22)
1212

1313
set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}")
1414

@@ -36,6 +36,8 @@ option(USE_LOCKING "Use locks even in single-threaded builds to make them callab
3636

3737
option(USE_PERL "Use the older PERL scripts for build preparation instead of universal shell scripts" OFF)
3838

39+
option(NO_WARMUP "Do not run a benchmark on each startup just to find the best location for the memory buffer" ON)
40+
3941
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
4042
option(NO_AFFINITY "Disable support for CPU affinity masks to avoid binding processes from e.g. R or numpy/scipy to a single core" ON)
4143
else()
@@ -212,10 +214,10 @@ if(NOT NO_LAPACKE)
212214
add_library(LAPACKE OBJECT ${LAPACKE_SOURCES})
213215
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACKE>")
214216
endif()
215-
if(BUILD_RELAPACK)
216-
add_library(RELAPACK OBJECT ${RELA_SOURCES})
217-
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:RELAPACK>")
218-
endif()
217+
#if(BUILD_RELAPACK)
218+
# add_library(RELAPACK OBJECT ${RELA_SOURCES})
219+
# list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:RELAPACK>")
220+
#endif()
219221
set(OpenBLAS_LIBS "")
220222
if(BUILD_STATIC_LIBS)
221223
add_library(${OpenBLAS_LIBNAME}_static STATIC ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})
@@ -236,7 +238,7 @@ endif()
236238
set_target_properties(${OpenBLAS_LIBS} PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME})
237239

238240
# Android needs to explicitly link against libm
239-
if(ANDROID)
241+
if (${CMAKE_SYSTEM_NAME} MATCHES "AIX|Android|Linux|FreeBSD|OpenBSD|NetBSD|DragonFly|Darwin")
240242
if(BUILD_STATIC_LIBS)
241243
target_link_libraries(${OpenBLAS_LIBNAME}_static m)
242244
endif()
@@ -396,7 +398,7 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
396398
message(STATUS "adding suffix ${SYMBOLSUFFIX} to names of exported symbols in ${OpenBLAS_LIBNAME}")
397399
endif()
398400

399-
if (NOT DEFINED USE_PERL)
401+
if (NOT USE_PERL)
400402
add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD
401403
COMMAND ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BUILD_LAPACK_DEPRECATED}" "${BUILD_BFLOAT16}" "${BUILD_SINGLE}" "${BUILD_DOUBLE}" "${BUILD_COMPLEX}" "${BUILD_COMPLEX16}" > ${PROJECT_BINARY_DIR}/objcopy.def
402404
COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so

CONTRIBUTORS.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,4 +211,5 @@ In chronological order:
211211
* PLCT Lab, Institute of Software Chinese Academy of Sciences
212212
* [2022-03] Support RISC-V Vector Intrinisc 1.0 version.
213213

214-
214+
* Pablo Romero <https://github.com/pablorcum>
215+
* [2022-08] Fix building from sources for QNX

GotoBLAS_01Readme.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
SUN
8181
Fujitsu
8282

83-
4. Suported precision
83+
4. Supported precision
8484

8585
Now x86/x86_64 version support 80bit FP precision in addition to
8686
normal double presicion and single precision. Currently only

0 commit comments

Comments
 (0)