Skip to content

Commit 2fe967c

Browse files
authored
Merge branch 'develop' into issue2227
2 parents 6d85953 + f40200f commit 2fe967c

25 files changed

+782
-192
lines changed

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 2.8.5)
66
project(OpenBLAS C ASM)
77
set(OpenBLAS_MAJOR_VERSION 0)
88
set(OpenBLAS_MINOR_VERSION 3)
9-
set(OpenBLAS_PATCH_VERSION 7.dev)
9+
set(OpenBLAS_PATCH_VERSION 8.dev)
1010
set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}")
1111

1212
# Adhere to GNU filesystem layout conventions
@@ -211,7 +211,8 @@ if (USE_THREAD)
211211
target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT})
212212
endif()
213213

214-
if (MSVC OR NOT NOFORTRAN)
214+
#if (MSVC OR NOT NOFORTRAN)
215+
if (NOT NO_CBLAS)
215216
# Broken without fortran on unix
216217
add_subdirectory(utest)
217218
endif()

Changelog.txt

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,46 @@
11
OpenBLAS ChangeLog
2+
====================================================================
3+
Version 0.3.7
4+
11-Aug 2019
5+
6+
common:
7+
* having the gmake special variables TARGET_ARCH or TARGET_MACH
8+
defined no longer causes build failures in ctest or utest
9+
* defining NO_AFFINITY or USE_TLS to 0 in gmake builds no longer
10+
has the same effect as setting them to 1
11+
* a new test program was added to allow checking the library for
12+
thread safety
13+
* a new option USE_LOCKING was added to ensure thread safety when
14+
OpenBLAS itself is built without multithreading but will be
15+
called from multiple threads.
16+
* a build failure on Linux with glibc versions earlier than 2.5
17+
was fixed
18+
* a runtime error with CPU enumeration (and NO_AFFINITY not set)
19+
on glibc 2.6 was fixed
20+
* NO_AFFINITY was added to the CMAKE options (and defaults to being
21+
active on Linux, as in the gmake builds)
22+
23+
x86_64:
24+
* the build-time logic for detection of AVX512 availability in
25+
the processor and compiler was fixed
26+
* gmake builds on OSX now set the internal name of the library to
27+
libopenblas.0.dylib (consistent with CMAKE)
28+
* the Haswell DGEMM kernel received a significant speedup through
29+
improved prefetch and load instructions
30+
* performance of DGEMM, DTRMM, DTRSM and ZDOT on Zen/Zen2 was markedly
31+
increased by avoiding vpermpd instructions
32+
* the SKYLAKEX (AVX512) DGEMM helper functions have now been disabled
33+
to fix remaining errors in DGEMM, DSYMM and DTRMM
34+
35+
## POWER:
36+
* added support for building on FreeBSD/powerpc64 and FreeBSD/ppc970
37+
* added optimized kernels for POWER9 SGEMM and STRMM
38+
39+
## ARMV7:
40+
* fixed the softfp implementations of xAMAX and IxAMAX
41+
* removed the predefined -march= flags on both ARMV5 and ARMV6 as
42+
they were appropriate for only a subset of platforms
43+
244
====================================================================
345
Version 0.3.6
446
29-Apr-2019

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ endif
109109
ifeq ($(OSNAME), Darwin)
110110
@$(MAKE) -C exports dyn
111111
@ln -fs $(LIBDYNNAME) $(LIBPREFIX).dylib
112+
@ln -fs $(LIBDYNNAME) $(LIBPREFIX).$(MAJOR_VERSION).dylib
112113
endif
113114
ifeq ($(OSNAME), WINNT)
114115
@$(MAKE) -C exports dll

Makefile.arm

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
ifeq ($(CORE), $(filter $(CORE),ARMV7 CORTEXA9 CORTEXA15))
22
ifeq ($(OSNAME), Android)
3-
CCOMMON_OPT += -mfpu=neon -march=armv7-a
4-
FCOMMON_OPT += -mfpu=neon -march=armv7-a
3+
CCOMMON_OPT += -mfpu=neon
4+
FCOMMON_OPT += -mfpu=neon
55
else
66
CCOMMON_OPT += -mfpu=vfpv3 -march=armv7-a
77
FCOMMON_OPT += -mfpu=vfpv3 -march=armv7-a
88
endif
99
endif
1010

1111
ifeq ($(CORE), ARMV6)
12-
CCOMMON_OPT += -mfpu=vfp -march=armv6
13-
FCOMMON_OPT += -mfpu=vfp -march=armv6
14-
endif
15-
16-
ifeq ($(CORE), ARMV5)
17-
CCOMMON_OPT += -march=armv5
18-
FCOMMON_OPT += -march=armv5
12+
CCOMMON_OPT += -mfpu=vfp
13+
FCOMMON_OPT += -mfpu=vfp
1914
endif

Makefile.install

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ ifeq ($(OSNAME), Darwin)
8383
@-cp $(LIBDYNNAME) "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)"
8484
@-install_name_tool -id "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)/$(LIBDYNNAME)" "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)/$(LIBDYNNAME)"
8585
@cd "$(DESTDIR)$(OPENBLAS_LIBRARY_DIR)" ; \
86-
ln -fs $(LIBDYNNAME) $(LIBPREFIX).dylib
86+
ln -fs $(LIBDYNNAME) $(LIBPREFIX).dylib ; \
87+
ln -fs $(LIBDYNNAME) $(LIBPREFIX).$(MAJOR_VERSION).dylib
8788
endif
8889
ifeq ($(OSNAME), WINNT)
8990
@-cp $(LIBDLLNAME) "$(DESTDIR)$(OPENBLAS_BINARY_DIR)"

Makefile.rule

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44

55
# This library's version
6-
VERSION = 0.3.7.dev
6+
VERSION = 0.3.8.dev
77

88
# If you set the suffix, the library name will be libopenblas_$(LIBNAMESUFFIX).a
99
# and libopenblas_$(LIBNAMESUFFIX).so. Meanwhile, the soname in shared library

Makefile.system

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,9 +142,9 @@ endif
142142
endif
143143

144144

145-
# On x86_64 build getarch with march=native. This is required to detect AVX512 support in getarch.
145+
# On x86_64 build getarch with march=native unless the compiler is PGI. This is required to detect AVX512 support in getarch.
146146
ifeq ($(ARCH), x86_64)
147-
ifneq ($(C_COMPILER), PGI)
147+
ifeq ($(findstring pgcc,$(HOSTCC)),)
148148
GETARCH_FLAGS += -march=native
149149
endif
150150
endif
@@ -267,9 +267,10 @@ OBJCOPY = $(CROSS_SUFFIX)objcopy
267267
OBJCONV = $(CROSS_SUFFIX)objconv
268268

269269

270-
# For detect fortran failed, only build BLAS.
270+
# When fortran support was either not detected or actively deselected, only build BLAS.
271271
ifeq ($(NOFORTRAN), 1)
272272
NO_LAPACK = 1
273+
override FEXTRALIB =
273274
endif
274275

275276
#
@@ -1124,8 +1125,12 @@ endif
11241125
endif
11251126

11261127
ifdef NO_AFFINITY
1128+
ifeq ($(NO_AFFINITY), 0)
1129+
override undefine NO_AFFINITY
1130+
else
11271131
CCOMMON_OPT += -DNO_AFFINITY
11281132
endif
1133+
endif
11291134

11301135
ifdef FUNCTION_PROFILE
11311136
CCOMMON_OPT += -DFUNCTION_PROFILE

appveyor.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,14 @@ environment:
3535
DYNAMIC_ARCH: ON
3636
WITH_FORTRAN: no
3737
- COMPILER: cl
38-
38+
- COMPILER: MinGW64-gcc-7.2.0-mingw
39+
DYNAMIC_ARCH: OFF
40+
WITH_FORTRAN: ignore
41+
- COMPILER: MinGW64-gcc-7.2.0
42+
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
43+
COMPILER: MinGW-gcc-5.3.0
44+
WITH_FORTRAN: ignore
45+
3946
install:
4047
- if [%COMPILER%]==[clang-cl] call %CONDA_INSTALL_LOCN%\Scripts\activate.bat
4148
- if [%COMPILER%]==[clang-cl] conda config --add channels conda-forge --force
@@ -52,7 +59,14 @@ install:
5259
before_build:
5360
- ps: if (-Not (Test-Path .\build)) { mkdir build }
5461
- cd build
62+
- set PATH=%PATH:C:\Program Files\Git\usr\bin;=%
63+
- 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%
64+
- 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%
65+
- if [%COMPILER%]==[MinGW64-gcc-7.2.0] set PATH=C:\msys64\usr\bin;C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
5566
- if [%COMPILER%]==[cl] cmake -G "Visual Studio 15 2017 Win64" ..
67+
- if [%COMPILER%]==[MinGW64-gcc-7.2.0-mingw] cmake -G "MinGW Makefiles" -DNOFORTRAN=1 ..
68+
- if [%COMPILER%]==[MinGW64-gcc-7.2.0] cmake -G "MSYS Makefiles" -DBINARY=32 -DNOFORTRAN=1 ..
69+
- if [%COMPILER%]==[MinGW-gcc-5.3.0] cmake -G "MSYS Makefiles" -DNOFORTRAN=1 ..
5670
- if [%WITH_FORTRAN%]==[no] cmake -G "Ninja" -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER=clang-cl -DMSVC_STATIC_CRT=ON ..
5771
- 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 ..
5872
- if [%DYNAMIC_ARCH%]==[ON] cmake -DDYNAMIC_ARCH=ON -DDYNAMIC_LIST='CORE2;NEHALEM;SANDYBRIDGE;BULLDOZER;HASWELL' ..
@@ -64,3 +78,4 @@ test_script:
6478
- echo Running Test
6579
- cd utest
6680
- openblas_utest
81+

cmake/arch.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ if (DYNAMIC_ARCH)
8181
endif ()
8282

8383
if (NOT DYNAMIC_CORE)
84-
unset(DYNAMIC_ARCH)
84+
message (STATUS "DYNAMIC_ARCH is not supported on this architecture, removing from options")
85+
unset(DYNAMIC_ARCH CACHE)
8586
endif ()
8687
endif ()
8788

cmake/prebuild.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ set(FU "")
5959
if (APPLE OR (MSVC AND NOT ${CMAKE_C_COMPILER_ID} MATCHES "Clang"))
6060
set(FU "_")
6161
endif()
62+
if(MINGW AND NOT MINGW64)
63+
set(FU "_")
64+
endif()
6265

6366
set(COMPILER_ID ${CMAKE_C_COMPILER_ID})
6467
if (${COMPILER_ID} STREQUAL "GNU")
@@ -82,6 +85,11 @@ endif ()
8285
# f_check
8386
if (NOT NOFORTRAN)
8487
include("${PROJECT_SOURCE_DIR}/cmake/f_check.cmake")
88+
else ()
89+
file(APPEND ${TARGET_CONF_TEMP}
90+
"#define BUNDERSCORE _\n"
91+
"#define NEEDBUNDERSCORE 1\n")
92+
set(BU "_")
8593
endif ()
8694

8795
# Cannot run getarch on target if we are cross-compiling

0 commit comments

Comments
 (0)