Renato Golin [Mon, 5 Nov 2018 11:30:12 +0000 (11:30 +0000)]
[Arm64) Revert A53 detection as A57
This patch reverts the decision of treating A53 like A57, which was
based on an analysis done on server class hardware and is not
representative of all A53s out there.
Fixes #1855.
Martin Kroeker [Fri, 2 Nov 2018 12:18:01 +0000 (13:18 +0100)]
Merge pull request #1846 from fenrus75/threadsize
gemm/dgemm: add a way for an arch kernel to specify preferred sizes
Martin Kroeker [Fri, 2 Nov 2018 08:50:51 +0000 (09:50 +0100)]
Merge pull request #1850 from martin-frbg/issue1811
Restore Android/ARMv7 build fix from #778
Martin Kroeker [Thu, 1 Nov 2018 19:39:16 +0000 (20:39 +0100)]
Merge pull request #1849 from martin-frbg/aix_install2
Use installbsd on AIX
Martin Kroeker [Thu, 1 Nov 2018 17:50:25 +0000 (18:50 +0100)]
Restore Android/ARMv7 build fix from #778
for #1811
Martin Kroeker [Thu, 1 Nov 2018 17:26:08 +0000 (18:26 +0100)]
Use installbsd on AIX
(and fix misplaced parenthesis from previous commit). See #1803
Martin Kroeker [Thu, 1 Nov 2018 08:53:10 +0000 (09:53 +0100)]
Merge pull request #1845 from martin-frbg/aix_install
Accomodate AIX install, which has different syntax
Arjan van de Ven [Thu, 1 Nov 2018 01:43:20 +0000 (01:43 +0000)]
sgemm/dgemm: add a way for an arch kernel to specify prefered sizes
The current gemm threading code can make very unfortunate choices, for
example on my 10 core system a 1024x1024x1024 matrix multiply ends up
chunking into blocks of 102... which is not a vector friendly size
and performance ends up horrible.
this patch adds a helper define where an architecture can specify
a preference for size multiples.
This is different from existing defines that are minimum sizes and such.
The performance increase with this patch for the 1024x1024x1024 sgemm
is 2.3x (!!)
Arjan van de Ven [Thu, 1 Nov 2018 01:42:09 +0000 (01:42 +0000)]
skylakex: Make the sgemm/dgemm beta code robust for a N=0 or M=0 case
in the threading code there are cases where N or M can become 0,
and the optimized beta code did not handle this well, leading
to a crash
during the audit for the crash a few edge conditions on the if statements
were found and fixed as well
Martin Kroeker [Wed, 31 Oct 2018 20:50:34 +0000 (21:50 +0100)]
Accomodate AIX install, which has different syntax
for #1803
Martin Kroeker [Wed, 31 Oct 2018 20:25:15 +0000 (21:25 +0100)]
Merge pull request #1843 from martin-frbg/aix_numprocs
Add get_num_procs implementation for AIX
Martin Kroeker [Wed, 31 Oct 2018 17:38:22 +0000 (18:38 +0100)]
Add get_num_procs implementation for AIX
(and copy HAIKU implementation to the non-TLS version of the code as well)
Martin Kroeker [Tue, 30 Oct 2018 11:41:24 +0000 (12:41 +0100)]
Merge pull request #1837 from embray/set-num-thread-after-fork
Ensure that blas_thread_init has been called in openblas_set_num_threads
Erik M. Bray [Sun, 28 Oct 2018 21:16:52 +0000 (21:16 +0000)]
ensure that threading has been initialized in the first place before calling openblas_set_num_threads
Martin Kroeker [Sun, 28 Oct 2018 19:00:01 +0000 (20:00 +0100)]
Merge pull request #1836 from martin-frbg/zen2core
Fix detection of Ryzen2 (missing CORE_ZEN)
Martin Kroeker [Sun, 28 Oct 2018 17:36:55 +0000 (18:36 +0100)]
Fix detection of Ryzen2 (missing CORE_ZEN)
Martin Kroeker [Tue, 23 Oct 2018 16:14:28 +0000 (18:14 +0200)]
Merge pull request #1829 from ashwinyes/develop_aarch64_dynamic_arch_support
Add DYNAMIC_ARCH support for ARM64
Ashwin Sekhar T K [Thu, 18 Oct 2018 12:15:45 +0000 (05:15 -0700)]
ARM64: Enable DYNAMIC_ARCH
Enable DYNAMIC_ARCH feature on ARM64. This patch uses the cpuid
feature in linux kernel to detect the core type at runtime
(https://www.kernel.org/doc/Documentation/arm64/cpu-feature-registers.txt).
If this feature is missing in kernel, then the user should use the
OPENBLAS_CORETYPE env variable to select the desired core type.
Ashwin Sekhar T K [Mon, 22 Oct 2018 08:49:16 +0000 (01:49 -0700)]
ARM64: Remove #define ARMV8 for THUNDERX
Ashwin Sekhar T K [Thu, 18 Oct 2018 12:13:02 +0000 (05:13 -0700)]
ARM64: Fix DYNAMIC_ARCH compilation for cores which dont use GEMM3M
Ashwin Sekhar T K [Thu, 18 Oct 2018 12:02:23 +0000 (05:02 -0700)]
ARM64: Move parameters from parameter.c to param.h
Remove the runtime setting of P, Q, R parameters for
targets ARMV8, THUNDERX2T99. Instead set them as constants
in param.h at compile time.
Ashwin Sekhar T K [Thu, 18 Oct 2018 11:51:24 +0000 (04:51 -0700)]
ARM64: Remove XGENE1 references
Remove XGENE1 target as the implementation for the
same is incomplete. Moreover whoever wishes to use
on XGENE1 can use the generic ARMV8 target as there
are no XGENE1 specific optimizations in OpenBLAS.
Martin Kroeker [Sun, 21 Oct 2018 18:34:05 +0000 (20:34 +0200)]
Merge pull request #1825 from brada4/hemv
Delay _hemv threading in attempt to address #1820
Andrew [Sat, 20 Oct 2018 18:37:53 +0000 (21:37 +0300)]
re-arrange new code for readability
Andrew [Sat, 20 Oct 2018 08:13:29 +0000 (11:13 +0300)]
Attempt to tame _hemv threading #1820
Andrew [Sat, 20 Oct 2018 07:55:04 +0000 (10:55 +0300)]
init
Martin Kroeker [Thu, 18 Oct 2018 06:13:05 +0000 (08:13 +0200)]
Merge pull request #1821 from ashwinyes/develop_aarch64_armv8neonkernels
Use ThunderX2 Neon Kernels for ARMV8 Target
Ashwin Sekhar T K [Wed, 17 Oct 2018 15:11:27 +0000 (08:11 -0700)]
ARM64: Use THUNDERX2T99 Neon Kernels for ARMV8
Currently the generic ARMV8 target uses C implementations
for many routines. Replace these with the neon implementations
written for THUNDERX2T99 target which are upto 6x faster for
certain routines.
Ashwin Sekhar T K [Wed, 17 Oct 2018 15:02:40 +0000 (08:02 -0700)]
ARM64: Remove dependency of THUNDERX2T99 Makefile on CORTEXA57 Makefile
Ashwin Sekhar T K [Wed, 17 Oct 2018 15:02:16 +0000 (08:02 -0700)]
ARM64: Remove dependency of THUNDERX Makefile on ARMV8 Makefile
Ashwin Sekhar T K [Wed, 17 Oct 2018 15:01:45 +0000 (08:01 -0700)]
ARM64: Remove dependency of CORTEXA57 Makefile on ARMV8 Makefile
Ashwin Sekhar T K [Wed, 17 Oct 2018 15:01:27 +0000 (08:01 -0700)]
ARM64: Remove dependency of XGENE1 Makefile on ARMV8 Makefile
Martin Kroeker [Sun, 14 Oct 2018 17:57:34 +0000 (19:57 +0200)]
Merge pull request #1815 from fenrus75/sgemm_beta_fix
enable the SGEMM/SKX C based kernel
Arjan van de Ven [Fri, 12 Oct 2018 09:30:35 +0000 (09:30 +0000)]
enable the SGEMM/SKX C based kernel
In QA the final bug was found so now the sklyakex sgemm C based kernel can
be activated....
Martin Kroeker [Thu, 11 Oct 2018 19:51:31 +0000 (21:51 +0200)]
Merge pull request #1812 from martin-frbg/issue1806-2
Use KERNEL_DEFINITIONS rather than COMMON_OPTS to pass -march=skylake…
Martin Kroeker [Thu, 11 Oct 2018 09:03:27 +0000 (11:03 +0200)]
Use KERNEL_DEFINITIONS rather than COMMON_OPTS to pass -march=skylake-avx512
Martin Kroeker [Thu, 11 Oct 2018 05:48:08 +0000 (07:48 +0200)]
Merge pull request #1808 from martin-frbg/issue1806
Add -march=skylake-avx512 to CFLAGS when the target is Skylake
Martin Kroeker [Thu, 11 Oct 2018 05:47:53 +0000 (07:47 +0200)]
Merge pull request #1807 from xianyi/revert-1798-cmake-avx512
Revert "Add -march=skylake-avx512 when required"
Martin Kroeker [Wed, 10 Oct 2018 21:47:35 +0000 (23:47 +0200)]
Syntax fix
Martin Kroeker [Wed, 10 Oct 2018 17:22:01 +0000 (19:22 +0200)]
Add -march=skylake-avx512 to CFLAGS when the target is Skylake
Should fix 1806 and #1801
Martin Kroeker [Wed, 10 Oct 2018 17:15:32 +0000 (19:15 +0200)]
Revert "Add -march=skylake-avx512 when required"
Martin Kroeker [Wed, 10 Oct 2018 06:52:53 +0000 (08:52 +0200)]
Merge pull request #1802 from martin-frbg/issue1801
Use avx512 workaround with msys2/mingw64 as well
Martin Kroeker [Wed, 10 Oct 2018 06:50:44 +0000 (08:50 +0200)]
Merge pull request #1804 from fenrus75/sgemm
Add a C+intrinsics version of the SGEMM/skylakex kernel
Arjan van de Ven [Wed, 10 Oct 2018 01:49:22 +0000 (01:49 +0000)]
Add a C+intrinsics version of the SGEMM/skylakex kernel
for most sizes this is 1.2x to 1.4x faster than the current code
Martin Kroeker [Tue, 9 Oct 2018 08:56:37 +0000 (10:56 +0200)]
Merge pull request #1800 from fengrl/patch-1
Update common_mips64.h for the 1st loop of blas_memory_alloc
Martin Kroeker [Tue, 9 Oct 2018 08:34:52 +0000 (10:34 +0200)]
Merge pull request #1792 from martin-frbg/cmakesuffix
Improve CMake help output and add SYMBOLPREFIX and -SUFFIX options
Martin Kroeker [Tue, 9 Oct 2018 08:31:59 +0000 (10:31 +0200)]
Use cygwin compilation workaround for avx512 on msys2/mingw64 as well
Martin Kroeker [Tue, 9 Oct 2018 06:20:52 +0000 (08:20 +0200)]
Merge pull request #1799 from martin-frbg/issue1796
Handle conflicting usage of ARCH in at least some BSD environments
Martin Kroeker [Tue, 9 Oct 2018 06:19:14 +0000 (08:19 +0200)]
Merge pull request #1793 from fenrus75/ncopy
Add optimized *copy versions for skylakex
fengrl [Tue, 9 Oct 2018 03:20:16 +0000 (11:20 +0800)]
Update common_mips64.h
Martin Kroeker [Mon, 8 Oct 2018 20:29:35 +0000 (22:29 +0200)]
Catch conflicting usage of ARCH in at least some BSD environments
fixes #1796
Martin Kroeker [Mon, 8 Oct 2018 20:26:59 +0000 (22:26 +0200)]
Use override for ARCH in make.inc
in case a conflicting setting of ARCH (for architecture) gets pulled in from the environment
(originally suggested by dloghin in #1753)
Martin Kroeker [Mon, 8 Oct 2018 19:15:17 +0000 (21:15 +0200)]
Merge pull request #1798 from martin-frbg/cmake-avx512
Add -march=skylake-avx512 when required
Martin Kroeker [Mon, 8 Oct 2018 17:18:12 +0000 (19:18 +0200)]
Add -march=skylake-avx512 when required
fixes #1797
Arjan van de Ven [Sat, 6 Oct 2018 23:13:26 +0000 (23:13 +0000)]
dgemm/skylakex: replace discrete mul/add with fma
very minor gains since it's not super hot code, but general principles
Arjan van de Ven [Sat, 6 Oct 2018 21:18:12 +0000 (21:18 +0000)]
Add vector optimizations for ncopy as well for dgemm/skylakex
Arjan van de Ven [Sat, 6 Oct 2018 16:36:26 +0000 (16:36 +0000)]
add a skylakex optimized dgemm beta function
Martin Kroeker [Sat, 6 Oct 2018 14:29:29 +0000 (16:29 +0200)]
Merge pull request #1791 from dev-zero/develop
fix parallel build issues with APFS/HFS+/ext2/3 in netlib-lapack
Arjan van de Ven [Sat, 6 Oct 2018 14:12:32 +0000 (14:12 +0000)]
dgemm/avx512 simplify and speed up the 4x4 kernel
Arjan van de Ven [Sat, 6 Oct 2018 14:00:37 +0000 (14:00 +0000)]
undo slow dgemm/skylake microoptimization
the compare is more costly than the work
Arjan van de Ven [Sat, 6 Oct 2018 13:47:20 +0000 (13:47 +0000)]
Add optimized *copy versions for skylakex
Add optimized n/t copy versions for skylakex; in the patch the
tcopy is also rewritten using intrinsics; the ncopy file
will be worked on in a future commit
Martin Kroeker [Sat, 6 Oct 2018 12:36:36 +0000 (14:36 +0200)]
Merge pull request #6 from xianyi/develop
merge develop
Martin Kroeker [Sat, 6 Oct 2018 12:28:04 +0000 (14:28 +0200)]
Add SYMBOLPREFIX and -SUFFIX options and improve help output
Tiziano Müller [Sat, 6 Oct 2018 12:10:02 +0000 (14:10 +0200)]
fix parallel build issues with APFS/HFS+/ext2/3 in netlib-lapack
The problem is that OpenBLAS sets the LAPACKE_LIB and the TMGLIB to the
same object and uses the `ar` feature to update the archive file. If the
underlying filesystem does not have sub-second timestamp resolution and
the system is fast enough (or `ccache` is used), the timestamp of the
builds which should be added to the previously generated archive is the
same as the archive file itself and therefore `make` does not update the
archive.
Since OpenBLAS takes care to not run the different targets updating the
archive in parallel, the easiest solution is to declare the respective
targets `.PHONY`, forcing `make` to always update them.
fixes #1682
Martin Kroeker [Fri, 5 Oct 2018 18:42:37 +0000 (20:42 +0200)]
Merge pull request #1789 from brada4/develop
update travis alpine chroot with avx512 intrinsics headers
Martin Kroeker [Fri, 5 Oct 2018 18:40:38 +0000 (20:40 +0200)]
Merge pull request #1788 from fenrus75/avx512-8x16
skylake dgemm: Add a 16x8 kernel
Arjan van de Ven [Fri, 5 Oct 2018 13:22:21 +0000 (13:22 +0000)]
Add a 24x8 kernel to the skylakex dgemm implementation
Minor gains for small matrixes, but at 512x512 and above the gain
gets more significant.
Arjan van de Ven [Fri, 5 Oct 2018 11:49:43 +0000 (11:49 +0000)]
skylake dgemm: Add a 16x8 kernel
The next step for the avx512 dgemm code is adding a 16x8 kernel.
In the 8x8 kernel, each FMA has a matching load (the broadcast);
in the 16x8 kernel we can reuse this load for 2 FMAs, which
in turn reduces pressure on the load ports of the CPU and gives
a nice performance boost (in the 25% range).
Andrew [Fri, 5 Oct 2018 12:47:55 +0000 (15:47 +0300)]
update travis alpine chroot with avx512 intrinsics headers
Andrew [Fri, 5 Oct 2018 12:41:52 +0000 (15:41 +0300)]
update travis alpine chroot with avx512 intrinsics headers
Martin Kroeker [Fri, 5 Oct 2018 06:25:38 +0000 (08:25 +0200)]
Merge pull request #1785 from brada4/develop
address #1782 2nd loop
Martin Kroeker [Fri, 5 Oct 2018 06:03:27 +0000 (08:03 +0200)]
Merge pull request #1784 from fenrus75/dgemm-avx512
Create a AVX512 enabled version of DGEMM
Martin Kroeker [Thu, 4 Oct 2018 17:14:59 +0000 (19:14 +0200)]
Function name needs to be CNAME, set from outside to allow suffixing for dynamic_arch
Martin Kroeker [Thu, 4 Oct 2018 16:41:47 +0000 (18:41 +0200)]
Merge pull request #1787 from jeromerobert/develop
Fix unknown type name __WAIT_STATUS on RHEL5
Jerome Robert [Thu, 4 Oct 2018 10:27:44 +0000 (12:27 +0200)]
Fix unknown type name __WAIT_STATUS on RHEL5
With glibc 2.5 one must have #define _XOPEN_SOURCE >= 500 to use wait.
But reading glibc code this is actually needed only if stdlib.h was
included before sys/wait.h. This was the case here through
openblas_utest.h. So changing include fix compilation on RHEL5 and
should ne hurt with more recent distro.
* Problem found when using with gcc 5.5 and 4.7.2 on RHEL5/CENTOS5
* Fix #1519
Martin Kroeker [Thu, 4 Oct 2018 07:07:09 +0000 (09:07 +0200)]
Merge pull request #1786 from martin-frbg/immintrin
Check for Immintrin.h presence in the AVX512 compatibility test as well
Martin Kroeker [Thu, 4 Oct 2018 05:36:49 +0000 (07:36 +0200)]
Check availability of immintrin.h in the AVX512 compatibility test
Martin Kroeker [Thu, 4 Oct 2018 05:35:30 +0000 (07:35 +0200)]
Check availability of immintrin.h in the AVX512 compatibility test
Andrew [Wed, 3 Oct 2018 19:20:50 +0000 (21:20 +0200)]
address #1782 2nd loop
Arjan van de Ven [Wed, 3 Oct 2018 14:45:25 +0000 (14:45 +0000)]
Create a AVX512 enabled version of DGEMM
This patch adds dgemm_kernel_4x8_skylakex.c which is
* dgemm_kernel_4x8_haswell.s converted to C + intrinsics
* 8x8 support added
* 8x8 kernel implemented using AVX512
Performance is a work in progress, but already shows a 10% - 20%
increase for a wide range of matrix sizes.
Martin Kroeker [Sat, 29 Sep 2018 07:27:47 +0000 (09:27 +0200)]
Merge pull request #1780 from martin-frbg/issue1774-2
Convert fldmia/fstmia instructions to UAL syntax for clang7
Martin Kroeker [Fri, 28 Sep 2018 21:05:15 +0000 (23:05 +0200)]
Convert fldmia/fstmia instructions to UAL syntax for clang7
second part of fix for #1774, containing files missed in #1775
Martin Kroeker [Wed, 26 Sep 2018 09:14:58 +0000 (11:14 +0200)]
Merge pull request #1778 from fengrl/develop
test_axpy work error on LOONGSON3A platform #1777
fengruilin [Wed, 26 Sep 2018 07:14:04 +0000 (15:14 +0800)]
test_axpy work error on LOONGSON3A platform #1777
Martin Kroeker [Tue, 25 Sep 2018 16:58:39 +0000 (18:58 +0200)]
Merge pull request #1775 from martin-frbg/issue1774
Convert fldmia/fstmia instructions to UAL syntax for clang7
Martin Kroeker [Tue, 25 Sep 2018 07:41:58 +0000 (09:41 +0200)]
Convert fldmia/fstmia instructions to UAL syntax for clang7
fixes #1774
Martin Kroeker [Sun, 23 Sep 2018 21:25:15 +0000 (23:25 +0200)]
Merge pull request #1773 from martin-frbg/issue1767
Include thread numbers in failure message from blas_thread_init
Martin Kroeker [Sat, 22 Sep 2018 12:00:15 +0000 (14:00 +0200)]
Include thread numbers in failure message from blas_thread_init
to aid in debugging cases like #1767
Martin Kroeker [Sat, 22 Sep 2018 11:11:39 +0000 (13:11 +0200)]
Merge pull request #1771 from staticfloat/sf/ldflags
Add `$(LDFLAGS)` to `$(CC)` and `$(FC)` invocations within `exports/Makefile`
Martin Kroeker [Sat, 22 Sep 2018 10:31:37 +0000 (12:31 +0200)]
Document the stub status of the QUAD_PRECiSION code (#1772)
* Document the stub status of the QUAD_PRECiSION code inherited from GotoBLAS2
in response to #1769
Elliot Saba [Fri, 21 Sep 2018 09:19:51 +0000 (09:19 +0000)]
Add `$(LDFLAGS)` to `$(CC)` and `$(FC)` invocations within `exports/Makefile`
Martin Kroeker [Wed, 19 Sep 2018 20:02:21 +0000 (22:02 +0200)]
Merge pull request #1765 from martin-frbg/issue1761
Do not use the new TLS-enabled memory allocator for non-threaded builds, and disable TLS by default in gmake as well
Martin Kroeker [Wed, 19 Sep 2018 16:16:38 +0000 (18:16 +0200)]
Merge pull request #1764 from yurivict/64-suffix
Allow to install the 'interface64' version concurrently with the regular version
Martin Kroeker [Wed, 19 Sep 2018 16:16:21 +0000 (18:16 +0200)]
Merge pull request #1762 from martin-frbg/issue1710-2
Add explicit casts to silence compiler warnings
Martin Kroeker [Wed, 19 Sep 2018 16:08:31 +0000 (18:08 +0200)]
Fix default settings - USE_TLS and USE_SIMPLE_THREADED_LEVEL3 should both be off
Martin Kroeker [Wed, 19 Sep 2018 16:03:43 +0000 (18:03 +0200)]
Catch inadvertent USE_TLS=0 declaration
for #1766
Martin Kroeker [Sun, 16 Sep 2018 10:43:36 +0000 (12:43 +0200)]
Do not use the new TLS code for non-threaded builds even if USE_TLS is set
Workaround for #1761 as that exposed a problem in the new code (which was intended to speed up multithreaded code only anyway).
Martin Kroeker [Sun, 16 Sep 2018 10:36:49 +0000 (12:36 +0200)]
Merge pull request #4 from xianyi/develop
Update branch
Yuri [Sun, 16 Sep 2018 02:59:17 +0000 (19:59 -0700)]
Allow to install the 'interfare64' version concurrently with the regular version
Martin Kroeker [Thu, 13 Sep 2018 12:24:29 +0000 (14:24 +0200)]
Add an explicit cast to silence a warning
for #1710