Marius Hillenbrand [Tue, 11 Aug 2020 10:55:53 +0000 (12:55 +0200)]
s390x: Factor out small block sizes for SGEMM/DGEMM on z14
For small register blockings that are too small to fill up vector
registers with column vectors, we currently use a generic code block.
Replace that with instantiations of the generic code as individual
functions, so that the compiler can optimize each one separately.
Signed-off-by: Marius Hillenbrand <mhillen@linux.ibm.com>
Marius Hillenbrand [Tue, 11 Aug 2020 10:55:42 +0000 (12:55 +0200)]
s390x: Optimize SGEMM/DGEMM blocks for z14 with explicit loop unrolling/interleaving
Improve performance of SGEMM and DGEMM on z14 and z15 by unrolling and
interleaving the inner loop of the SGEMM 16x4 and DGEMM 8x4 blocks.
Specifically, we explicitly interleave vector register loads and
computation of two iterations.
Note that this change only adds one C function, since SGEMM 16x4 and
DGEMM 8x4 actually map to the same C code: they both hold intermediate
results in a 4x4 grid of vector registers, and the C implementation is
built around that.
Signed-off-by: Marius Hillenbrand <mhillen@linux.ibm.com>
Martin Kroeker [Mon, 3 Aug 2020 21:30:26 +0000 (23:30 +0200)]
Merge pull request #2758 from martin-frbg/undef_shift
Fix GCC ubsan warnings in x86_64 complex dot and gemv_t kernels
Martin Kroeker [Sun, 2 Aug 2020 21:05:21 +0000 (23:05 +0200)]
Merge pull request #2757 from martin-frbg/cmake64
Fix lapack-tests linking to a suffixed libopenblas in cmake builds
Martin Kroeker [Sun, 2 Aug 2020 16:29:56 +0000 (18:29 +0200)]
Multiply by 2 instead of left-shifting a potentially negative number
fixes GCC ubsan warning in the BLAS tests
Martin Kroeker [Sun, 2 Aug 2020 16:27:40 +0000 (18:27 +0200)]
Multiply instead of doing a left shift of a potentially negative number
fixes GCC ubsan report in the BLAS tests
Martin Kroeker [Sun, 2 Aug 2020 16:25:09 +0000 (18:25 +0200)]
Multiply by two instead of left-shifting one place
fixes GCC ubsan report of "left shift of negative value -2" in the BLAS tests
Martin Kroeker [Sun, 2 Aug 2020 16:22:31 +0000 (18:22 +0200)]
Multiply by two rather than left shift by one place
fixes GCC ubsan report of "left shift of negative value -2" in the BLAS tests
Martin Kroeker [Sun, 2 Aug 2020 15:58:33 +0000 (17:58 +0200)]
Apply current library name suffix
Martin Kroeker [Sun, 2 Aug 2020 15:57:12 +0000 (17:57 +0200)]
Apply library name suffix to openblas if any
Martin Kroeker [Sun, 2 Aug 2020 15:50:06 +0000 (17:50 +0200)]
Merge pull request #75 from xianyi/develop
rebase
Martin Kroeker [Sun, 2 Aug 2020 13:32:46 +0000 (15:32 +0200)]
Merge pull request #2753 from martin-frbg/issue2751
Add SYMBOLPREFIX and/or SYMBOLSUFFIX to cblas prototypes
Martin Kroeker [Sun, 2 Aug 2020 09:20:08 +0000 (11:20 +0200)]
Add SYMBOLPREFIX and/or -SUFFIX to cblas.h if needed
Martin Kroeker [Sat, 1 Aug 2020 15:06:03 +0000 (17:06 +0200)]
Improve substitution rules for SYMBOLPREFIX and -SUFFIX addition
Martin Kroeker [Sat, 1 Aug 2020 13:19:02 +0000 (15:19 +0200)]
Merge pull request #2756 from martin-frbg/issue2755
Protect against inadvertent activation of USE_CUDA
Martin Kroeker [Sat, 1 Aug 2020 10:31:39 +0000 (12:31 +0200)]
Protect against inadvertent activation of USE_CUDA
Martin Kroeker [Fri, 31 Jul 2020 14:03:33 +0000 (16:03 +0200)]
Add SYMBOLPREFIX and/or SYMBOLSUFFIX to cblas prototypes
Martin Kroeker [Fri, 31 Jul 2020 10:52:24 +0000 (12:52 +0200)]
Merge pull request #2752 from kadler/cpuid_aix
Use systemcfg APIs for CPU detection on AIX
Kevin Adler [Fri, 31 Jul 2020 01:52:16 +0000 (20:52 -0500)]
Use systemcfg APIs for CPU detection on AIX
AIX libc already provides ready access to an integer that contains a bit
identifying the CPU it's running on, so there's no need to call a
program and grep its output. Additionally, prtconf is not available in
the PASE runtime, which provides an AIX emulation layer on the IBM i
operating system.
The AIX systemcfg.h also provides macro definitions like POWER_8,
POWER_9, etc for all the bits defining the CPUs as well as macros like
__power_8(), __power_9_andup() that return booleans, but I did not use
them. Since these macros depend on the level of the OS in which it is
built, they may not be defined and instead the associated hex literals
are used directly.
Martin Kroeker [Thu, 30 Jul 2020 09:40:52 +0000 (11:40 +0200)]
Fix inadvertent version number reversal to 0.3.9.dev caused by #2710
Martin Kroeker [Thu, 30 Jul 2020 09:35:53 +0000 (11:35 +0200)]
Merge pull request #2749 from martin-frbg/make_ppc
Reorganize OpenMP build options for POWER and allow compiling for POWER9 with old gcc
Martin Kroeker [Thu, 30 Jul 2020 08:13:19 +0000 (10:13 +0200)]
Merge pull request #2750 from RajalakshmiSR/dgemv_p10
dgemv optimization for POWER10
Rajalakshmi Srinivasaraghavan [Wed, 29 Jul 2020 23:59:32 +0000 (18:59 -0500)]
dgemv optimization for POWER10
Making use of new vector pair POWER10 instructions in dgemv_n and dgemv_t.
Also adding a new block 4x128 to make use of Matrix-Multiply Assist (MMA)
feature introduced in POWER ISA v3.1. Tested on simulator and there
are no new test failures.
Martin Kroeker [Wed, 29 Jul 2020 23:14:08 +0000 (01:14 +0200)]
Separate OpenMP handling and allow compilation of Power9 code with older gcc
Martin Kroeker [Wed, 29 Jul 2020 23:04:09 +0000 (01:04 +0200)]
Merge pull request #74 from xianyi/develop
rebase
Martin Kroeker [Wed, 29 Jul 2020 08:01:14 +0000 (10:01 +0200)]
Merge pull request #2741 from martin-frbg/issue2739
Adjust A53 SGEMM parameters to reflect recent switch to 8x8 kernel
Martin Kroeker [Tue, 28 Jul 2020 17:32:04 +0000 (19:32 +0200)]
Merge pull request #2744 from martin-frbg/issue2738
Add AMD Renoir/Matisse cpu autodetection and preliminary support for Zen3
Martin Kroeker [Tue, 28 Jul 2020 16:15:25 +0000 (18:15 +0200)]
Merge pull request #2740 from RajalakshmiSR/clang-power
Fix compilation issues with clang on POWER
Martin Kroeker [Tue, 28 Jul 2020 14:22:41 +0000 (14:22 +0000)]
Put hint to use git develop rather than master branch in README
Martin Kroeker [Tue, 28 Jul 2020 13:53:17 +0000 (13:53 +0000)]
Add AMD Renoir/Matisse and preliminary support for Zen3 as Zen2
also support AMD family 22 Jaguar/Puma as Bobcat
Martin Kroeker [Tue, 28 Jul 2020 13:45:23 +0000 (13:45 +0000)]
Add AMD Renoir models and preliminary support for ZEN3 as ZEN2
also remap erroneous family 16 entry to BOBCAT and reclaim erroneous family 25 "Barcelona" for Zen3
Martin Kroeker [Mon, 27 Jul 2020 20:19:22 +0000 (20:19 +0000)]
missing braces
Martin Kroeker [Mon, 27 Jul 2020 19:54:46 +0000 (19:54 +0000)]
Adjust A53 SGEMM parameters to reflect move to 8x8 kernel
Rajalakshmi Srinivasaraghavan [Mon, 27 Jul 2020 19:11:07 +0000 (14:11 -0500)]
Fix compilation issues with clang on POWER
As gcc defaults to -malign-power, removing that option. Also
adding -fno-integrated-as to use GNU assembler for powerpc
assembly optimization files. Fixed other compilation errors
reported in dgemv_t.c file.
Martin Kroeker [Mon, 27 Jul 2020 13:19:47 +0000 (15:19 +0200)]
Merge pull request #2737 from ashwinyes/add_thunderx3_target
ARM64: Add THUNDERX3T110 Target
Ashwin Sekhar T K [Thu, 11 Jun 2020 11:12:49 +0000 (04:12 -0700)]
ARM64: Add THUNDERX3T110 Target
Martin Kroeker [Sun, 26 Jul 2020 17:54:11 +0000 (19:54 +0200)]
Merge pull request #2735 from martin-frbg/move_potrf
Move potrf_parallel.c from lapack/getrf to lapack/potrf where it belongs
Martin Kroeker [Sat, 25 Jul 2020 07:02:32 +0000 (09:02 +0200)]
Merge pull request #2734 from RajalakshmiSR/p10_fix
Fix to store results in correct order for POWER10 GEMM kernels
Martin Kroeker [Sat, 25 Jul 2020 06:52:24 +0000 (08:52 +0200)]
Use _Atomic instead of volatile where available (file moved from ../getrf)
must have misplaced this in ../getrf when I made that change in March 2018 (40160ff)
the only changes since then were
RFC : Add half precision gemm for bfloat16 in OpenBLAS Rajalakshmi Srinivasaraghavan
Rajalakshmi Srinivasaraghavan committed on 14 Apr 2020 as 7ebbb50
Change _STDC_VERSION__ to __STDC_VERSION__
Zhiyong Dang committed on 11 May 2018 as 3716267
Martin Kroeker [Sat, 25 Jul 2020 06:42:39 +0000 (06:42 +0000)]
Delete potrf_parallel.c (moving it to ../potrf)
Rajalakshmi Srinivasaraghavan [Sat, 25 Jul 2020 04:08:11 +0000 (23:08 -0500)]
Fix to store results in correct order for POWER10 GEMM kernels
There is a recent compiler change in __builtin_mma_disassemble_acc() which
affects the order of storing result in POWER10. Also removing new LDFLAG
-mno-power10-stub as it is handled by linker automatically.
Martin Kroeker [Fri, 24 Jul 2020 21:19:45 +0000 (23:19 +0200)]
Merge pull request #2720 from martin-frbg/issue2694
WIP Further fixes for 32bit POWER8
Martin Kroeker [Fri, 24 Jul 2020 16:04:58 +0000 (16:04 +0000)]
Typo fix
Martin Kroeker [Fri, 24 Jul 2020 10:13:46 +0000 (10:13 +0000)]
Regroup the 32 and 64bit sections and restore 64bit CAXPY
Martin Kroeker [Fri, 24 Jul 2020 09:06:20 +0000 (11:06 +0200)]
Merge pull request #2721 from martin-frbg/p8align
Fix alignment errors in the power8 saxpy kernel
Martin Kroeker [Fri, 24 Jul 2020 09:05:16 +0000 (11:05 +0200)]
Merge pull request #2731 from martin-frbg/pgippc
Fixes for compilation on POWER with PGI compilers
Martin Kroeker [Thu, 23 Jul 2020 20:40:13 +0000 (20:40 +0000)]
Use OPENBLAS_MAKE_COMPLEX_FLOAT on PPC only
Martin Kroeker [Thu, 23 Jul 2020 18:30:42 +0000 (18:30 +0000)]
Add ifdefs around call to altivec microkernel
Martin Kroeker [Thu, 23 Jul 2020 17:34:56 +0000 (17:34 +0000)]
Typo fix
Martin Kroeker [Thu, 23 Jul 2020 15:10:59 +0000 (17:10 +0200)]
Rewrite assignment to complex for better portability
Martin Kroeker [Thu, 23 Jul 2020 15:08:20 +0000 (17:08 +0200)]
Exclude altivec code paths if the compiler does not support them
Martin Kroeker [Thu, 23 Jul 2020 15:03:28 +0000 (17:03 +0200)]
Avoid undefining NAME,CNAME etc for pgcc as it makes it ignore the new defininitions
Martin Kroeker [Thu, 23 Jul 2020 14:59:06 +0000 (16:59 +0200)]
Merge pull request #73 from xianyi/develop
rebase
Martin Kroeker [Wed, 22 Jul 2020 20:45:57 +0000 (22:45 +0200)]
Merge pull request #2729 from martin-frbg/issue2728
Unify BUFFER_SIZE settings for x86_64 again to fix DYNAMIC_ARCH crashes
Martin Kroeker [Wed, 22 Jul 2020 17:30:55 +0000 (17:30 +0000)]
Unify BUFFER_SIZE settings for x86_64 again to fix potentially fatal mismatch in DYNAMIC_ARCH builds
Martin Kroeker [Tue, 21 Jul 2020 15:06:53 +0000 (17:06 +0200)]
Merge pull request #2727 from wyphan/develop
Patch for building on POWERPC with PGI compilers (was Patch for building on Summit)
Martin Kroeker [Tue, 21 Jul 2020 14:42:06 +0000 (16:42 +0200)]
Merge pull request #2726 from martin-frbg/2725-2
Add detection of stdatomic.h for cmake
Wileam Phan [Tue, 21 Jul 2020 03:30:28 +0000 (23:30 -0400)]
Patch for building on Summit
Martin Kroeker [Mon, 20 Jul 2020 22:52:09 +0000 (22:52 +0000)]
Add trivial check for stdatomic.h
Martin Kroeker [Mon, 20 Jul 2020 22:49:12 +0000 (00:49 +0200)]
Merge pull request #72 from xianyi/develop
rebase
Martin Kroeker [Sat, 18 Jul 2020 21:08:08 +0000 (23:08 +0200)]
Merge pull request #2725 from martin-frbg/ccheck_c11
Have c_check probe availability of C11 atomics support and stdatomic.h
Martin Kroeker [Sat, 18 Jul 2020 17:19:59 +0000 (17:19 +0000)]
Update conditional for atomics to use HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 17:14:50 +0000 (17:14 +0000)]
Update conditional for atomics to use HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 17:13:24 +0000 (17:13 +0000)]
Update conditional for C11 atomics to use HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 17:09:56 +0000 (17:09 +0000)]
Update conditional for atomics to use HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 17:09:01 +0000 (17:09 +0000)]
Update conditional for atomics to use HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 17:07:38 +0000 (17:07 +0000)]
Update conditional for atomics to HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 17:05:59 +0000 (17:05 +0000)]
Update conditional for atomics to use HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 17:03:31 +0000 (17:03 +0000)]
Update conditional for atomics to use HAVE_C11
Martin Kroeker [Sat, 18 Jul 2020 16:59:33 +0000 (16:59 +0000)]
Report availability of C11 support
Martin Kroeker [Sat, 18 Jul 2020 16:57:41 +0000 (16:57 +0000)]
Add a check for C11 atomics and stdatomic.h
Martin Kroeker [Sat, 18 Jul 2020 16:08:40 +0000 (18:08 +0200)]
Merge pull request #2724 from martin-frbg/loongsonreadme
Update cross-compiling example in README to reflect change in Loongson gcc
Martin Kroeker [Sat, 18 Jul 2020 12:51:37 +0000 (12:51 +0000)]
Update cross-compiling example to reflect change in Loongson gcc
for #2723
Martin Kroeker [Fri, 17 Jul 2020 08:33:03 +0000 (10:33 +0200)]
Merge pull request #2722 from martin-frbg/cmakefcheck
Handle lack of fortran compiler more gracefully in cmake
Martin Kroeker [Thu, 16 Jul 2020 22:36:35 +0000 (22:36 +0000)]
include CheckLanguage module
Martin Kroeker [Thu, 16 Jul 2020 22:17:39 +0000 (22:17 +0000)]
handle missing lack of fortran compiler more gracefully
Martin Kroeker [Thu, 16 Jul 2020 21:32:54 +0000 (23:32 +0200)]
Use vec_vsx_ld/st to fix misaligned accesses flagged by asan
Martin Kroeker [Wed, 15 Jul 2020 08:00:07 +0000 (10:00 +0200)]
remove debug output and revert changes to cdot and crot
Martin Kroeker [Tue, 14 Jul 2020 23:20:54 +0000 (01:20 +0200)]
Merge pull request #2716 from RajalakshmiSR/p10_ldflag
Add new linker option for POWER10
Rajalakshmi Srinivasaraghavan [Tue, 14 Jul 2020 16:54:04 +0000 (11:54 -0500)]
Add new linker option for POWER10
While building with DYNAMIC_ARCH on POWER9 with POWER10
aware toolchain, new LDFLAG is needed to avoid POWER10
instructions on PLT calls .
Martin Kroeker [Tue, 14 Jul 2020 16:20:03 +0000 (18:20 +0200)]
fix trailing whitespace
Martin Kroeker [Tue, 14 Jul 2020 16:11:19 +0000 (18:11 +0200)]
Use POWER6 GEMM, TRMM and DTRSM on 32bit POWER8
Martin Kroeker [Tue, 14 Jul 2020 16:10:12 +0000 (18:10 +0200)]
Do not define USE_TRMM for 32bit POWER8
Martin Kroeker [Tue, 14 Jul 2020 16:07:58 +0000 (18:07 +0200)]
Use POWER6 GEMM parameters on 32bit POWER8
Martin Kroeker [Tue, 14 Jul 2020 16:01:34 +0000 (18:01 +0200)]
Merge pull request #71 from xianyi/develop
rebase
Martin Kroeker [Mon, 13 Jul 2020 12:43:24 +0000 (14:43 +0200)]
Merge pull request #2682 from martin-frbg/aix
[WIP] fix compilation on AIX
Martin Kroeker [Mon, 13 Jul 2020 11:00:39 +0000 (13:00 +0200)]
Merge pull request #2651 from leezu/actionsflang
Add flang build to Github Actions
Martin Kroeker [Sun, 12 Jul 2020 18:37:29 +0000 (20:37 +0200)]
Merge branch 'develop' into actionsflang
Martin Kroeker [Sun, 12 Jul 2020 18:17:11 +0000 (20:17 +0200)]
Merge pull request #2706 from jussienko/use-always-omp-threads
Fix OpenMP builds defaulting to singlethreading with OMP_PLACES or OMP_PROC_BIND set
Martin Kroeker [Sun, 12 Jul 2020 16:59:01 +0000 (18:59 +0200)]
Make 32bit POWER8 use POWER6 kernels for now
Martin Kroeker [Sun, 12 Jul 2020 16:51:58 +0000 (18:51 +0200)]
merge overwritten part of power10 support
Martin Kroeker [Fri, 10 Jul 2020 10:06:50 +0000 (12:06 +0200)]
Merge pull request #2710 from martin-frbg/cmake-lapacktest
Add LAPACK-TESTING to the cmake build
Martin Kroeker [Fri, 10 Jul 2020 08:43:33 +0000 (10:43 +0200)]
Merge pull request #2713 from RajalakshmiSR/p10-gcc10
Change minimum gcc version for POWER10
Rajalakshmi Srinivasaraghavan [Fri, 10 Jul 2020 02:46:06 +0000 (21:46 -0500)]
Change minimum gcc version for POWER10
As the MMA patches for POWER10 are backported to gcc10.2, changing
the minimum gcc version needed to build OpenBLAS for POWER10.
Martin Kroeker [Thu, 9 Jul 2020 11:57:27 +0000 (13:57 +0200)]
Do not build lapack-test on MSVC for now (same as with BLAS test)
Martin Kroeker [Thu, 9 Jul 2020 11:44:25 +0000 (13:44 +0200)]
enable fortran for cmake
Martin Kroeker [Thu, 9 Jul 2020 11:13:16 +0000 (13:13 +0200)]
Modify for building with OpenBLAS
Martin Kroeker [Thu, 9 Jul 2020 11:12:35 +0000 (13:12 +0200)]
Modify for building with OpenBLAS
Martin Kroeker [Thu, 9 Jul 2020 09:44:31 +0000 (11:44 +0200)]
Append crude hack for enabling lapack tests in the OpenBLAS build
Martin Kroeker [Thu, 9 Jul 2020 09:42:02 +0000 (11:42 +0200)]
Add lapack-test