Martin Kroeker [Sat, 15 Dec 2018 19:18:59 +0000 (20:18 +0100)]
should be core-avx2
Martin Kroeker [Sat, 15 Dec 2018 19:17:44 +0000 (20:17 +0100)]
fix elseifeq and use older option core2-avx for compatibility
Martin Kroeker [Sat, 15 Dec 2018 18:35:35 +0000 (19:35 +0100)]
Add -march=haswell to HASWELL part of DYNAMIC_ARCH build
Arjan van de Ven [Sat, 15 Dec 2018 13:43:07 +0000 (13:43 +0000)]
Use sgemm_ncopy_4_skylakex.c also for Haswell
sgemm_ncopy_4_skylakex.c uses SSE transpose operations where the
real perf win happens; this also works great for Haswell.
This gives double digit percentage gains on small and skinny matrices
Arjan van de Ven [Sat, 15 Dec 2018 13:18:59 +0000 (13:18 +0000)]
Use the skylake sgemm beta code also for haswell
with a few small changes it's possible to use the skylake sgemm code
also for haswell, this gives a modest gain (10% range) for smallish
matrixes but does wonders for very skinny matrixes
Martin Kroeker [Thu, 13 Dec 2018 18:08:14 +0000 (19:08 +0100)]
Merge pull request #1914 from fenrus75/smallmatrix
Add a "sgemm direct" mode for small matrixes
Arjan van de Ven [Wed, 12 Dec 2018 16:45:57 +0000 (16:45 +0000)]
Add a "sgemm direct" mode for small matrixes
OpenBLAS has a fancy algorithm for copying the input data while laying
it out in a more CPU friendly memory layout.
This is great for large matrixes; the cost of the copy is easily
ammortized by the gains from the better memory layout.
But for small matrixes (on CPUs that can do efficient unaligned loads) this
copy can be a net loss.
This patch adds (for SKYLAKEX initially) a "sgemm direct" mode, that bypasses
the whole copy machinary for ALPHA=1/BETA=0/... standard arguments,
for small matrixes only.
What is small? For the non-threaded case this has been measured to be
in the M*N*K = 28 * 512 * 512 range, while in the threaded case it's
less, around M*N*K = 1 * 512 * 512
Martin Kroeker [Wed, 12 Dec 2018 13:56:25 +0000 (14:56 +0100)]
Merge pull request #1910 from martin-frbg/issue1909
Fix for DYNAMIC_ARCH builds made on a AVX512-capable host
Martin Kroeker [Tue, 11 Dec 2018 21:47:32 +0000 (22:47 +0100)]
make sure the added march=skylake-avx512 does not cause problems on Windows
Martin Kroeker [Tue, 11 Dec 2018 20:10:38 +0000 (21:10 +0100)]
Add -march=skylake-avx512 to SkylakeX part of DYNAMIC_ARCH builds
Martin Kroeker [Tue, 11 Dec 2018 20:09:26 +0000 (21:09 +0100)]
Avoid adding blanket march=skylake-avx512 to dynamic_arch builds
Martin Kroeker [Fri, 7 Dec 2018 18:37:33 +0000 (19:37 +0100)]
Fix typo in previous commit for arm dynamic arch
Martin Kroeker [Fri, 7 Dec 2018 16:42:23 +0000 (17:42 +0100)]
Add DYNAMIC_CORE list for ARM64
cf #1908
Martin Kroeker [Fri, 7 Dec 2018 15:25:55 +0000 (16:25 +0100)]
Make sure to use the arm version of dynamic.c in ARM64 DYNAMIC_ARCH
cf. #1908
Martin Kroeker [Thu, 6 Dec 2018 22:01:23 +0000 (23:01 +0100)]
Merge pull request #1904 from martin-frbg/issue1870
Fix cmake parsing of GEMM kernels for ARMV8
Martin Kroeker [Thu, 6 Dec 2018 17:33:05 +0000 (18:33 +0100)]
Fix missing parameter in popen call
Martin Kroeker [Thu, 6 Dec 2018 13:04:27 +0000 (14:04 +0100)]
Rewrite the conditional for OSX to fix cmake parsing on others
The Makefile variable parser in utils.cmake currently does not handle conditionals. Having the definitions for non-OSX last will at least make cmake builds work again on non-OSX platforms.
Martin Kroeker [Thu, 6 Dec 2018 12:56:06 +0000 (13:56 +0100)]
Avoid creating spurious non-suffixed c/zgemm_kernels
Plain cgemm_kernel and zgemm_kernel are not used anywhere, only cgemm_kernel_b etc.
Needlessly building them (without any define like NN, CN, etc.) just happened to work on most platforms, but not on arm64. See #1870
Martin Kroeker [Thu, 6 Dec 2018 12:42:25 +0000 (13:42 +0100)]
Fix typo that broke CNRM2 on ARMV8 since 0.3.0
must have happened in my #1449
Martin Kroeker [Wed, 5 Dec 2018 21:10:53 +0000 (22:10 +0100)]
Merge pull request #1903 from rengolin/armv8
Fix two mistakes on Arm64 builds
Renato Golin [Wed, 5 Dec 2018 18:51:38 +0000 (18:51 +0000)]
Fix two mistakes on Arm64 builds
* Falkor is an ARMv8.0 with ARMv8.1 features, and chosing armv8.1-a for
march generates instructions it cannot cope with. Reverting it back
to armv8-a.
* ThunderX2's build was left with a #define VULCAN, which made it miss
the right compiler flags in Makefile.arm64, although it did create
the right library in the end.
Martin Kroeker [Mon, 3 Dec 2018 12:06:43 +0000 (13:06 +0100)]
Use p2align instead of align for OSX compatibility
fixes #1902
Martin Kroeker [Mon, 3 Dec 2018 11:50:27 +0000 (12:50 +0100)]
Merge pull request #1899 from brada4/fbsd12
Add mutually supported architecture mappings for FreeBSD12 ports
Martin Kroeker [Mon, 3 Dec 2018 11:50:14 +0000 (12:50 +0100)]
Merge branch 'develop' into fbsd12
Martin Kroeker [Mon, 3 Dec 2018 11:48:53 +0000 (12:48 +0100)]
Merge pull request #1894 from pkubaj/patch-2
Use correct ARCH name on BSD powerpc64
Martin Kroeker [Mon, 3 Dec 2018 07:59:10 +0000 (08:59 +0100)]
Update Makefile.system
Martin Kroeker [Sun, 2 Dec 2018 22:44:13 +0000 (23:44 +0100)]
Update with the changes from 0.3.4
Martin Kroeker [Sun, 2 Dec 2018 22:43:15 +0000 (23:43 +0100)]
Increment version to 0.3.5.dev
Martin Kroeker [Sun, 2 Dec 2018 22:42:33 +0000 (23:42 +0100)]
Increment version to 0.3.5.dev
Martin Kroeker [Sun, 2 Dec 2018 22:38:49 +0000 (23:38 +0100)]
Merge branch 'release-0.3.0' into develop
Martin Kroeker [Sun, 2 Dec 2018 22:24:53 +0000 (23:24 +0100)]
fixup BSD naming of powerpc arch
Andrew [Sun, 2 Dec 2018 19:27:53 +0000 (20:27 +0100)]
oops
Andrew [Sun, 2 Dec 2018 11:07:41 +0000 (12:07 +0100)]
Add architecture mappings for FreeBSD12
Andrew [Sun, 2 Dec 2018 11:05:15 +0000 (12:05 +0100)]
init
Martin Kroeker [Sat, 1 Dec 2018 19:56:11 +0000 (20:56 +0100)]
Handle Android environments that identify as Linux (#1898)
* Handle Android environments that identify as Linux
termux terminal emulator does this, causing build failures through missed defines in common.h
Martin Kroeker [Fri, 30 Nov 2018 20:32:01 +0000 (21:32 +0100)]
Really revert xDOT changes from 1832
neglected to rebase #1892 on merging
Martin Kroeker [Fri, 30 Nov 2018 20:28:21 +0000 (21:28 +0100)]
Merge pull request #1892 from martin-frbg/mipsdot
revert MIPS64 xDOT kernel changes from #1832
pkubaj [Fri, 30 Nov 2018 16:04:07 +0000 (16:04 +0000)]
Fix build on POWER, remove DragonFly, add NetBSD
__asm is complete on its own
DBSD developers state they will only support amd64, but NetBSD supports POWER.
pkubaj [Fri, 30 Nov 2018 16:05:49 +0000 (16:05 +0000)]
Use correct Makefile on powerpc64
FreeBSD uses powerpc64 name for POWER architecture. Use correct Makefile for this platform.
Andrew [Thu, 11 Oct 2018 20:29:34 +0000 (23:29 +0300)]
remove surplus locking code , only enabled w x86, disabled or never enabled on all others
Martin Kroeker [Fri, 30 Nov 2018 10:16:24 +0000 (11:16 +0100)]
Revert DOT kernel changes from #1834
as the failures seen on Loongson3A appear to be limited to DSDOT/SDSDOT (i.e. my hackish "fix" from #1684)
Martin Kroeker [Fri, 30 Nov 2018 09:57:09 +0000 (10:57 +0100)]
Use generic kernel for DSDOT/SDSDOT
as discussed in #1834
Martin Kroeker [Fri, 30 Nov 2018 09:48:46 +0000 (10:48 +0100)]
Merge pull request #1834 from fengrl/develop
register push/pop command change
Martin Kroeker [Thu, 29 Nov 2018 14:47:35 +0000 (15:47 +0100)]
Merge pull request #1890 from martin-frbg/issue1889
Include version number in openblas_get_config output
Martin Kroeker [Thu, 29 Nov 2018 10:52:08 +0000 (11:52 +0100)]
call it OpenBLAS not just version
Martin Kroeker [Thu, 29 Nov 2018 10:28:19 +0000 (11:28 +0100)]
Improve formatting of config output
Martin Kroeker [Wed, 28 Nov 2018 23:12:04 +0000 (00:12 +0100)]
Propagate version number for openblas_get_config
Martin Kroeker [Wed, 28 Nov 2018 23:10:49 +0000 (00:10 +0100)]
propagate verison number for openblas_config_version
Martin Kroeker [Wed, 28 Nov 2018 23:06:44 +0000 (00:06 +0100)]
Add version information to openblas_get_config output
Martin Kroeker [Sun, 25 Nov 2018 21:20:13 +0000 (22:20 +0100)]
Merge pull request #1885 from brada4/freebsd
Fix freebsd clang compilation of skylakex
Andrew [Sun, 25 Nov 2018 20:35:01 +0000 (21:35 +0100)]
Add return value so that freebsd system clang does not err out
Andrew [Sun, 25 Nov 2018 20:34:09 +0000 (21:34 +0100)]
init
Martin Kroeker [Sun, 25 Nov 2018 19:53:46 +0000 (20:53 +0100)]
Merge pull request #1875 from martin-frbg/issue1851
Serialize accesses to parallelized level3 functions from multiple cal…
Martin Kroeker [Sun, 25 Nov 2018 19:52:49 +0000 (20:52 +0100)]
Merge pull request #1869 from martin-frbg/axpy0
Handle special case INCX=0,INCY=0 in the axpy interface
Martin Kroeker [Sun, 25 Nov 2018 19:51:50 +0000 (20:51 +0100)]
Merge pull request #1878 from kiwifb/PGI_f_check
Correct link flags for PGI compiler.
Martin Kroeker [Sun, 25 Nov 2018 19:51:24 +0000 (20:51 +0100)]
Merge pull request #1876 from rengolin/armv8-cleanup
Simplifying ARMv8 build parameters
François Bissey [Wed, 21 Nov 2018 01:24:56 +0000 (14:24 +1300)]
Correct link flags for PGI compiler.
Martin Kroeker [Tue, 20 Nov 2018 16:25:57 +0000 (17:25 +0100)]
Merge pull request #1868 from martin-frbg/aix_cpuid
Use prtconf to determine CPU type on AIX
Martin Kroeker [Mon, 19 Nov 2018 20:01:36 +0000 (21:01 +0100)]
fix missing parenthesis
Martin Kroeker [Mon, 19 Nov 2018 16:58:22 +0000 (17:58 +0100)]
Add CriticalSection handling instead of mutexes for Windows
Renato Golin [Fri, 16 Nov 2018 15:45:12 +0000 (15:45 +0000)]
Simplifying ARMv8 build parameters
ARMv8 builds were a bit mixed up, with ThunderX2 code in ARMv8 mode
(which is not right because TX2 is ARMv8.1) as well as requiring a few
redundancies in the defines, making it harder to maintain and understand
what core has what. A few other minor issues were also fixed.
Tests were made on the following cores: A53, A57, A72, Falkor, ThunderX,
ThunderX2, and XGene.
Tests were: OpenBLAS/test, OpenBLAS/benchmark, BLAS-Tester.
A summary:
* Removed TX2 code from ARMv8 build, to make sure it is compatible with
all ARMv8 cores, not just v8.1. Also, the TX2 code has actually
harmed performance on big cores.
* Commoned up ARMv8 architectures' defines in params.h, to make sure
that all will benefit from ARMv8 settings, in addition to their own.
* Adding a few more cores, using ARMv8's include strategy, to benefit
from compiler optimisations using mtune. Also updated cache
information from the manuals, making sure we set good conservative
values by default. Removed Vulcan, as it's an alias to TX2.
* Auto-detecting most of those cores, but also updating the forced
compilation in getarch.c, to make sure the parameters are the same
whether compiled natively or forced arch.
Benefits:
* ARMv8 build is now guaranteed to work on all ARMv8 cores
* Improved performance for ARMv8 builds on some cores (A72, Falkor,
ThunderX1 and 2: up to 11%) over current develop
* Improved performance for *all* cores comparing to develop branch
before TX2's patch (9% ~ 36%)
* ThunderX1 builds are 14% faster than ARMv8 on TX1, 9% faster than
current develop's branch and 8% faster than deveop before tx2 patches
Issues:
* Regression from current develop branch for A53 (-12%) and A57 (-3%)
with ARMv8 builds, but still faster than before TX2's commit (+15%
and +24% respectively). This can be improved with a simplification of
TX2's code, to be done in future patches. At least the code is
guaranteed to be ARMv8.0 now.
Comments:
* CortexA57 builds are unchanged on A57 hardware from develop's branch,
which makes sense, as it's untouched.
* CortexA72 builds improve over A57 on A72 hardware, even if they're
using the same includes due to new compiler tunning in the makefile.
Martin Kroeker [Mon, 19 Nov 2018 13:02:50 +0000 (14:02 +0100)]
Serialize accesses to parallelized level3 functions from multiple callers
for #1851
Martin Kroeker [Fri, 16 Nov 2018 13:58:28 +0000 (14:58 +0100)]
Fix harmless typo
fixes #1872
Martin Kroeker [Fri, 16 Nov 2018 11:10:44 +0000 (12:10 +0100)]
Fix copy-paste errors (POWER8/9 and extraneous return)
fengruilin [Thu, 15 Nov 2018 03:11:59 +0000 (11:11 +0800)]
fix dot problem on 64bit mips
Martin Kroeker [Tue, 13 Nov 2018 12:57:18 +0000 (13:57 +0100)]
Handle special case INCX=0,INCY=0 in the axpy interface
Martin Kroeker [Tue, 13 Nov 2018 07:16:14 +0000 (08:16 +0100)]
Detect POWER9 as POWER8 on AIX and Linux
(already supported by the *BSD version)
Martin Kroeker [Mon, 12 Nov 2018 17:52:29 +0000 (18:52 +0100)]
Use prtconf to determine CPU type on AIX
for #1803
Martin Kroeker [Mon, 12 Nov 2018 16:30:44 +0000 (17:30 +0100)]
Merge pull request #1865 from martin-frbg/issue1844
Optimize gemv for small M, large N only if it can be done in a threadsafe manner
Martin Kroeker [Mon, 12 Nov 2018 13:30:28 +0000 (14:30 +0100)]
Merge pull request #1864 from aytekinar/patch-1
Add ARM tests on Travis
Arda Aytekin [Thu, 8 Nov 2018 23:25:30 +0000 (00:25 +0100)]
Update .travis.yml
Updated `.travis.yml` file to add emulated tests for `ARMV6` and `ARMV8`
architectures with `gcc` and `clang`. Created prebuilt images with
required dependencies. Squashed layers into one.
Martin Kroeker [Sat, 10 Nov 2018 18:23:31 +0000 (19:23 +0100)]
Merge pull request #1866 from martin-frbg/issue1859
Fix argument in SLASET call to zero S
Martin Kroeker [Sat, 10 Nov 2018 16:16:53 +0000 (17:16 +0100)]
Fix argument in SLASET call to zero S
fixes #1859 in accordance with https://github.com/LAPACK-Reference/issue/296
Martin Kroeker [Sat, 10 Nov 2018 14:45:54 +0000 (15:45 +0100)]
Allow optimization for small m, large n only if it can be made threadsafe
otherwise the introduction of a static array in 8e5a108 to improve #532 breaks concurrent calls from multiple threads as seen in #1844
Martin Kroeker [Sat, 10 Nov 2018 14:37:25 +0000 (15:37 +0100)]
Merge pull request #2 from xianyi/develop
merge develop
Martin Kroeker [Fri, 9 Nov 2018 12:12:06 +0000 (13:12 +0100)]
Merge pull request #1863 from martin-frbg/aix_install3
Set LIBSONAME suffix to .a for AIX
Martin Kroeker [Thu, 8 Nov 2018 21:39:10 +0000 (22:39 +0100)]
Set LIBSONAME suffix to .a for AIX
another fix for #1803
Martin Kroeker [Wed, 7 Nov 2018 20:01:29 +0000 (21:01 +0100)]
Merge pull request #1856 from rengolin/armv8-a57
[Arm64) Revert A53 detection as A57
Martin Kroeker [Wed, 7 Nov 2018 07:49:21 +0000 (08:49 +0100)]
Merge pull request #1831 from brada4/hemv
disable threading in C/ZSWAP copying from S/DSWAP
Martin Kroeker [Wed, 7 Nov 2018 07:48:31 +0000 (08:48 +0100)]
Merge pull request #1857 from brada4/fc-1847
Add gfortran -frecursive option from upstream and #1847
Martin Kroeker [Wed, 7 Nov 2018 07:47:52 +0000 (08:47 +0100)]
Merge branch 'develop' into fc-1847
Martin Kroeker [Wed, 7 Nov 2018 07:46:55 +0000 (08:46 +0100)]
Merge pull request #1858 from brada4/buff-1847
Add minimum threshold for number of buffers
Andrew [Tue, 6 Nov 2018 17:51:24 +0000 (17:51 +0000)]
lets fit it in one 4k page
Andrew [Tue, 6 Nov 2018 09:45:49 +0000 (09:45 +0000)]
handle cmake too
Andrew [Tue, 6 Nov 2018 09:40:13 +0000 (09:40 +0000)]
add low bound for number of buffers
Andrew [Tue, 6 Nov 2018 09:39:05 +0000 (09:39 +0000)]
init
Andrew [Tue, 6 Nov 2018 08:20:55 +0000 (08:20 +0000)]
Add -frecursive gfortran option by default
Andrew [Tue, 6 Nov 2018 08:19:08 +0000 (08:19 +0000)]
init
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)