Merge branch 'develop' into risc-v
[platform/upstream/openblas.git] / Changelog.txt
1 OpenBLAS ChangeLog
2 ====================================================================
3 Version 0.3.8
4  9-Feb-2020
5
6 common: 
7 `       * LAPACK has been updated to 3.9.0 (plus patches up to 
8           January 2nd, 2020)
9         * CMAKE support has been improved in several areas including
10           cross-compilation
11         * a thread race condition in the GEMM3M kernels was resolved
12         * the "generic" (plain C) gemm beta kernel used by many targets
13           has been sped up
14         * an optimized version of the LAPACK trtrs functions has been added
15         * an incompatibilty between the LAPACK tests and the OpenBLAS
16           implementation of XERBLA was resolved, removing the numerous
17           warnings about wrong error exits in the former 
18         * support for NetBSD has been added
19         * support for compilation with g95 and non-GNU versions of ld
20           has been improved
21         * support for compilation with (upcoming) gcc 10 has been added
22
23 POWER:
24         * worked around miscompilation of several POWER8 and POWER9 
25           kernels by older versions of gcc
26         * added support for big-endian POWER8 and for compilation on AIX
27         * corrected bugs in the big-endian support for PPC440 and PPC970
28         * DYNAMIC_ARCH support is now available in CMAKE builds as well
29
30 ARMV8:
31         * performance of DGEMM_BETA and SGEMM_NCOPY has been improved
32         * compilation for 32bit works again 
33         * performance of the RPCC function has been improved
34         * improved performance on small systems
35         * DYNAMIC_ARCH support is now available in CMAKE builds as well
36         * cross-compilation from OSX to IOS was simplified
37  
38 x86_64:
39         * a new AVX512 DGEMM kernel was added and the AVX512 SGEMM kernel
40           was significantly improved
41         * optimized AVX512 kernels for CGEMM and ZGEMM have been added
42         * AVX2 kernels for STRMM, SGEMM, and CGEMM have been significantly
43           sped up and optimized CGEMM3M and ZGEMM3M kernels have been added 
44         * added support for QEMU virtual cpus
45         * a compilation problem with PGI and SUN compilers was fixed
46         * Intel "Goldmont plus" is now autodetected
47         * a potential crash on program exit on MS Windows has been fixed
48
49 x86:
50         * an unwanted case sensitivity in the implementation of LSAME
51           on older 32bit AMD cpus was fixed
52
53 zarch:
54         * Z15 is now supported as Z14
55         * DYNAMIC_ARCH is now available on ZARCH as well
56
57 ====================================================================
58 Version 0.3.7
59 11-Aug 2019
60
61 common:
62   * having the gmake special variables TARGET_ARCH or TARGET_MACH
63     defined no longer causes build failures in ctest or utest
64   * defining NO_AFFINITY or USE_TLS to 0 in gmake builds no longer
65     has the same effect as setting them to 1
66   * a new test program was added to allow checking the library for
67     thread safety
68   * a new option USE_LOCKING was added to ensure thread safety when
69     OpenBLAS itself is built without multithreading but will be 
70     called from multiple threads.
71   * a build failure on Linux with glibc versions earlier than 2.5
72     was fixed
73   * a runtime error with CPU enumeration (and NO_AFFINITY not set)
74     on glibc 2.6 was fixed
75   * NO_AFFINITY was added to the CMAKE options (and defaults to being
76     active on Linux, as in the gmake builds)
77
78 x86_64:
79   * the build-time logic for detection of AVX512 availability in
80     the processor and compiler was fixed
81   * gmake builds on OSX now set the internal name of the library to 
82     libopenblas.0.dylib (consistent with CMAKE)
83   * the Haswell DGEMM kernel received a significant speedup through
84     improved prefetch and load instructions
85   * performance of DGEMM, DTRMM, DTRSM and ZDOT on Zen/Zen2 was markedly
86     increased by avoiding vpermpd instructions
87   * the SKYLAKEX (AVX512) DGEMM helper functions have now been disabled
88     to fix remaining errors in DGEMM, DSYMM and DTRMM
89
90 POWER:
91   * added support for building on FreeBSD/powerpc64 and FreeBSD/ppc970
92   * added optimized kernels for POWER9 SGEMM and STRMM
93
94 ARMV7:
95   * fixed the softfp implementations of xAMAX and IxAMAX
96   * removed the predefined -march= flags on both ARMV5 and ARMV6 as
97     they were appropriate for only a subset of platforms
98
99 ====================================================================
100 Version 0.3.6
101 29-Apr-2019
102
103 common:
104         * the build tools now check that a given cpu TARGET is actually valid
105         * the build-time check of system features (c_check) has been made
106           less dependent on particular perl features (this should mainly
107           benefit building on Windows)
108         * several problem with the ReLAPACK integration were fixed,
109           including INTERFACE64 support and building a shared library
110         * building with CMAKE on BSD systems was improved
111         * a non-absolute SUM function was added based on the
112           existing optimized code for ASUM
113         * CBLAS interfaces to the IxMIN and IxMAX functions were added
114         * a name clash between LAPACKE and BOOST headers was resolved
115         * CMAKE builds with OpenMP failed to include the appropriate getrf_parallel
116           kernels
117         * a crash on thread (key) deletion with the USE_TLS=1 memory management
118           option was fixed
119         * restored several earlier fixes, in particular for OpenMP performance,
120           building on BSD, and calling fork on CYGWIN, which had inadvertently
121           been dropped in the 0.3.3 rewrite of the memory management code.
122
123 x86_64:
124         * the AVX512 DGEMM kernel has been disabled again due to unsolved problems
125         * building with old versions of MSVC was fixed
126         * it is now possible to build a static library on Windows with CMAKE
127         * accessing environment variables on CYGWIN at run time was fixed
128         * the CMAKE build system now recognizes 32bit userspace on 64bit hardware
129         * Intel "Denverton" atom and Hygon "Dhyana" zen CPUs are now autodetected
130         * building for DYNAMIC_ARCH with a DYNAMIC_LIST of targets is now supported
131           with CMAKE as well
132         * building for DYNAMIC_ARCH with GENERIC as the default target is now supported
133         * a buffer overflow in the SSE GEMM kernel for Intel Nano targets was fixed
134         * assembly bugs involving undeclared modification of input operands were fixed
135           in the AXPY, DOT, GEMV, GER, SCAL, SYMV and TRSM microkernels for Nehalem,
136           Sandybridge, Haswell, Bulldozer and Piledriver. These would typically cause
137           test failures or segfaults when compiled with recent versions of gcc from 8 onward.
138         * a similar bug was fixed in the blas_quickdivide code used to split workloads
139           in most functions
140         * a bug in the IxMIN implementation for the GENERIC target made it return the result of IxMAX
141         * fixed building on SkylakeX systems when either the compiler or the (emulated) operating
142           environment does not support AVX512
143         * improved GEMM performance on ZEN targets
144
145 x86:
146         * build failures caused by the recently added checks for AVX512 were fixed
147         * an inline assembly bug involving undeclared modification of an input argument was
148           fixed in the blas_quickdivide code used to split workloads in most functions
149         * a bug in the IMIN implementation for the GENERIC target made it return the result of IMAX
150
151 MIPS32:
152         * a bug in the IMIN implementation made it return the result of IMAX
153
154 POWER:
155         * single precision BLAS1/2 functions have received optimized POWER8 kernels
156         * POWER9 is now a separate target, with an optimized DGEMM/DTRMM kernel
157         * building on PPC970 systems under OSX Leopard or Tiger is now supported
158         * out-of-bounds memory accesses in the gemm_beta microkernels were fixed
159         * building a shared library on AIX is now supported for POWER6
160         * DYNAMIC_ARCH support has been added for POWER6 and newer
161
162 ARMv7:
163         * corrected xDOT behaviour with zero INC_X or INC_Y
164         * a bug in the IMIN implementation made it return the result of IMAX
165
166 ARMv8:
167         * added support for HiSilicon TSV110 cpus
168         * the CMAKE build system now recognizes 32bit userspace on 64bit hardware
169         * cross-compilation with CMAKE now works again
170         * a bug in the IMIN implementation made it return the result of IMAX
171         * ARMV8 builds with the BINARY=32 option are now automatically handled as ARMV7
172
173 IBM Z:
174         * optimized microkernels for single precicion BLAS1/2 functions have been added
175           for both Z13 and Z14
176
177 ====================================================================
178 Version 0.3.5
179 31-Dec-2018
180
181 common:
182         * loop unrolling in TRMV has been enabled again.
183         * A domain error in the thread workload distribution for SYRK
184           has been fixed.
185         * gmake builds will now automatically add -fPIC to the build
186           options if the platform requires it.
187         * a pthreads key leakage (and associate crash on dlclose) in
188           the USE_TLS codepath was fixed.
189         * building of the utest cases on systems that do not provide
190           an implementation of complex.h was fixed.
191           
192 x86_64:
193         * the SkylakeX code was changed to compile on OSX.
194         * unwanted application of the -march=skylake-avx512 option
195           to the common code parts of a DYNAMIC_ARCH build was fixed.
196         * improved performance of SGEMM for small workloads on Skylake X.
197         * performance of SGEMM and DGEMM was improved on Haswell.
198
199 ARMV8:
200         * a configuration error that broke the CNRM2 kernel was corrected.
201         * compilation of the GEMM kernels with CMAKE was fixed.
202         * DYNAMIC_ARCH builds are now available with CMAKE as well.
203         * using CMAKE for cross-compilation to the new cpu TARGETs
204           introduced in 0.3.4 now works.
205           
206 POWER:
207         * a problem in cpu autodetection for AIX has been corrected.
208         
209 ====================================================================
210 Version 0.3.4
211 02-Dec-2018
212
213 common:
214         * the new, experimental thread-local memory allocation had 
215           inadvertently been left enabled for gmake builds in 0.3.3
216           despite the announcement. It is now disabled by default, and
217           single-threaded builds will keep using the old allocator even
218           if the USE_TLS option is turned on.
219         * OpenBLAS will now provide enough buffer space for at least 50
220           threads by default.
221         * The output of openblas_get_config() now contains the version
222           number.
223         * A serious thread safety bug in GEMV operation with small M and
224           large N size has been fixed.
225         * The code will now automatically call blas_thread_init after a
226           fork if needed before handling a call to openblas_set_num_threads
227         * Accesses to parallelized level3 functions from multiple callers
228           are now serialized to avoid thread races (unless using OpenMP).
229           This should provide better performance than the known-threadsafe
230           (but non-default) USE_SIMPLE_THREADED_LEVEL3 option.
231         * When building LAPACK with gfortran, -frecursive is now (again)
232           enabled by default to ensure correct behaviour.
233         * The OpenBLAS version cblas.h now supports both CBLAS_ORDER and
234           CBLAS_LAYOUT as the name of the matrix row/column order option.
235         * Externally set LDFLAGS are now passed through to the final compile/link
236           steps to facilitate setting platform-specific linker flags.
237         * A potential race condition during the build of LAPACK (that would 
238           usually manifest itself as a failure to build TESTING/MATGEN) has been 
239           fixed.
240         * xHEMV has been changed to stay single-threaded for small input sizes
241           where the overhead of multithreading exceeds any possible gains
242         * CSWAP and ZSWAP have been limited to a single thread except on ARMV8 or
243           ThunderX hardware with sizable input.
244         * Linker flags for the PGI compiler have been updated
245         * Behaviour of AXPY with zero increments is now handled in the C interface,
246           correcting the result on at least Intel Atom.
247         * The result matrix from calling SGELSS with an all-zero input matrix is 
248           now zeroed completely.
249           
250 x86_64:
251         * Autodetection of AMD Ryzen2 has been fixed (again).
252         * CMAKE builds now support labeling of an INTERFACE64=1 build of
253           the library with the _64 suffix.
254         * AVX512 version of DGEMM has been added and the AVX512 SGEMM kernel
255           has been sped up by rewriting with C intrinsics
256         * Fixed compilation on RHEL5/CENTOS5 (issue with typename __WAIT_STATUS)
257         
258 POWER:
259         * added support for building on AIX (with gcc and GNU tools from AIX Toolbox).
260         * CPU type detection has been implemented for AIX.
261         * CPU type detection has been fixed for NETBSD.
262         
263 MIPS64:
264         * AXPY on LOONGSON3A has been corrected to pass "zero increment" utest.
265         * DSDOT on LOONGSON3A has been fixed.
266         * the SGEMM microkernel has been hardened against potential data loss.
267         
268 ARMV8:
269         * DYNAMic_ARCH support is now available for 64bit ARM
270         * cross-compiling for ARMV8 under iOS now works.
271         * cpu-specific code has been rearranged to make better use of both
272           hardware commonalities and model-specific compiler optimizations.
273         * XGENE1 has been removed as a TARGET, superseded by the improved generic
274           ARMV8 support.
275         
276 ARMV7:
277         * Older assembly mnemonics have been converted to UAL form to allow
278           building with clang 7.0
279         * Cross compiling LAPACKE for Android has been fixed again (broken by
280           update to LAPACK 3.7.0 some while ago).  
281           
282 ====================================================================
283 Version 0.3.3
284 31-Aug-2018
285
286 common:
287         * thread memory allocation has been switched back to the method
288           used before version 0.3.1 due to unexpected problems caused by
289           the new code under some circumstances. A new compile-time option
290           USE_TLS has been added to enable the new code, and it is hoped
291           that this can become the default again in the next version.
292         * LAPAck PR272 has been integrated, which fixes spurious errors
293           in DSYEVR and related functions caused by missing conversion 
294           from ILAENV to ILAENV_2STAGE in several _2stage routines.
295         * the cmake-generated OpenBLASConfig.cmake now uses correct case
296           for the name of the library
297         * added support for Haiku OS  
298
299 x86_64:
300         * added AVX512 implementations of SDOT, DDOT, SAXPY, DAXPY,
301           DSCAL, DGEMVN and DSYMVL 
302         * added a workaround for a cygwin issue that prevented compilation
303           of AVX512 code
304           
305 IBM Z:
306         * added autodetection of Z14
307         * fixed TRMM errors in the generic target
308         
309 ====================================================================
310 Version 0.3.2
311 30-Jul-2018
312
313 common:
314         * fixes for regressions caused by the rewrite of the thread
315           initialization code in 0.3.1
316
317 POWER:
318         * fixed cpu autodetection for the BSDs
319
320 MIPS64:
321         * fixed utest errors in AXPY, DSDOT, ROT and SWAP
322
323 x86_64:
324         * added autodetection of AMD Ryzen 2
325         * fixed build with older versions of MSVC
326
327 ====================================================================
328 Version 0.3.1
329 01-Jul-2018
330
331 common:
332         * rewritten thread initialization code with significantly reduced overhead
333         * added CBLAS interfaces to the IxAMIN BLAS extension functions
334         * fixed the lapack-test target
335         * CMAKE builds now create an OpenBLASConfig.cmake file
336         * ZAXPY now uses a single thread for small input sizes
337         * the LAPACK code was updated from Reference-LAPACK/lapack#253
338           (fixing LAPACKE interfaces to Aasen's functions)
339
340 POWER:
341         * corrected CROT and ZROT behaviour with zero INC_X
342
343 ARMV7:
344         * corrected xDOT behaviour with zero INC_X or INC_Y
345
346 x86_64:
347         * retired some older targets of DYNAMIC_ARCH builds to a new option DYNAMIC_OLDER,
348           this affects PENRYN,DUNNINGTON,OPTERON,OPTERON_SSE3,BOBCAT,ATOM and NANO
349           (which will still be supported via the slower PRESCOTT kernels when this option is not set)
350         * added an option DYNAMIC_LIST that (used in conjunction with DYNAMIC_ARCH) allows to 
351           specify the list of x86_64 targets to include. Any target not on the list will be supported 
352           by the Sandybridge or Nehalem kernels if available, or by Prescott.
353         * improved SWITCH_RATIO on Haswell for increased GEMM throughput
354         * added initial support for Intel Skylake X, including an AVX512 SGEMM kernel
355         * added autodetection of Intel Cannon Lake series as Skylake X
356         * added a default L2 cache size for hypervisors that return zero here (Chromebook)
357         * fixed a name clash with recent Windows10 headers that broke the build with (at least)
358           recent mingw from MSYS2
359         * fixed a link error in mixed clang/gfortran builds with OpenMP
360         * updated the OSX deployment target to 10.8
361         * switched on parallel make for builds on MS Windows by default
362
363 x86:
364         * fixed SSWAP and DSWAP behaviour with zero INC_X and INC_Y
365
366 ====================================================================
367 Version 0.3.0
368 23-May-2108
369
370 common:
371         * fixed some more thread race and locking bugs
372         * added preliminary support for calling an OpenMP build of the library from multiple threads
373         * removed performance impact of thread locks added in 0.2.20 on OpenMP code
374         * general code cleanup 
375         * optimized DSDOT implementation
376         * improved thread distribution for GEMM
377         * corrected IMATCOPY/OMATCOPY implementation
378         * fixed out-of-bounds accesses in the multithreaded xBMV/xPMV and SYMV implementations
379         * cmake build improvements
380         * pkgconfig file now contains build options
381         * openblas_get_config() now reports USE_OPENMP and NUM_THREADS settings used for the build
382         * corrections and improvements for systems with more than 64 cpus
383         * LAPACK code updated to 3.8.0 including later fixes
384         * added ReLAPACK, a recursive implementation of several LAPACK functions
385         * Rewrote ROTMG to handle cases that the netlib code failed to address
386         * Disabled (broken) multithreading code for xTRMV
387         * corrected prototypes of complex CBLAS functions to make our cblas.h match the generally accepted standard
388         * shared memory access failures on startup are now handled more gracefully
389         * restored utests from earlier releases (and made them pass on all affected systems)
390
391 SPARC:
392         * several fixes for cpu autodetection
393
394 POWER:
395         * corrected vector register overwriting in several Power8 kernels
396         * optimized additional BLAS functions
397
398 ARM:
399         * added support for CortexA53 and A72 
400         * added autodetection for ThunderX2T99
401         * made most optimized kernels the default for generic ARMv8 targets 
402
403 x86_64:
404         * parallelized DDOT kernel for Haswell
405         * changed alignment directives in assembly kernels to boost performance on OSX
406         * fixed register handling in the GEMV microkernels (bug exposed by gcc7)
407         * added support for building on OpenBSD and Dragonfly 
408         * updated compiler options to work with Intel release 2018
409         * support fully optimized build with clang/flang on Microsoft Windows
410         * fixed building on AIX
411
412 IBM Z:
413         * added optimized BLAS 1/2 functions
414
415 MIPS:
416         * fixed cpu autodetection helper code
417         * added mips32 1004K cpu (Mediatek MT7621 and similar SoC)
418         * added mips64 I6500 cpu
419
420 ====================================================================
421 Version 0.2.20
422 24-Jul-2017
423
424 common:
425         * Improved CMake support
426         * Fixed several thread race and locking bugs
427         * Fixed default LAPACK optimization level
428         * Updated LAPACK to 3.7.0
429         * Added ReLAPACK (https://github.com/HPAC/ReLAPACK, make BUILD_RELAPACK=1)
430
431 POWER:
432         * Optimizations for Power9
433         * Fixed several Power8 assembly bugs
434
435 ARM:
436         * New optimized Vulcan and ThunderX2T99 targets
437         * Support for ARMV7 SOFT_FP ABI (make ARM_SOFTFP_ABI=1)
438         * Detect all cpu cores including offline ones
439         * Fix compilation with CLANG
440         * Support building a shared library for Android
441
442 MIPS:
443         * Fixed several threading issues
444         * Fix compilation with CLANG
445
446 x86_64:
447         * Detect Intel Bay Trail and Apollo Lake
448         * Detect Intel Sky Lake and Kaby Lake
449         * Detect Intel Knights Landing
450         * Detect AMD A8, A10, A12 and Ryzen
451         * Support 64bit builds with Visual Studio
452         * Fix building with Intel and PGI compilers
453         * Fix building with MINGW and TDM-GCC
454         * Fix cmake builds for Haswell and related cpus
455         * Fix building for Sandybridge with CLANG 3.9
456         * Add support for the FLANG compiler
457
458 IBM Z:
459         * New target z13 with BLAS3 optimizations
460
461 ====================================================================
462 Version 0.2.19
463 1-Sep-2016
464 common:
465         * Improved cross compiling.
466         * Fix the bug on musl libc.
467
468 POWER:
469         * Optimize BLAS on Power8
470         * Fixed Julia+OpenBLAS bugs on Power8
471
472 MIPS:
473         * Optimize BLAS on MIPS P5600 and I6400 (Thanks, Shivraj Patil, Kaustubh Raste)
474
475 ARM:
476         * Improved on ARM Cortex-A57. (Thanks, Ashwin Sekhar T K)
477
478
479 ====================================================================
480 Version 0.2.18
481 12-Apr-2016
482 common:
483         * If you set MAKE_NB_JOBS flag less or equal than zero,
484           make will be without -j.
485
486 x86/x86_64:
487         * Support building Visual Studio static library. (#813, Thanks, theoractice)
488         * Fix bugs to pass buidbot CI tests (http://build.openblas.net)
489
490 ARM:
491         * Provide DGEMM 8x4 kernel for Cortex-A57 (Thanks, Ashwin Sekhar T K)
492
493 POWER:
494         * Optimize S and C BLAS3 on Power8
495         * Optimize BLAS2/1 on Power8
496
497 ====================================================================
498 Version 0.2.17
499 20-Mar-2016
500 common:
501         * Enable BUILD_LAPACK_DEPRECATED=1 by default.
502
503 ====================================================================
504 Version 0.2.16
505 15-Mar-2016
506 common:
507         * Avoid potential getenv segfault. (#716)
508         * Import LAPACK svn bugfix #142-#147,#150-#155
509
510 x86/x86_64:
511         * Optimize c/zgemv for AMD Bulldozer, Piledriver, Steamroller
512         * Fix bug with scipy linalg test.
513
514 ARM:
515         * Improve DGEMM for ARM Cortex-A57. (Thanks, Ashwin Sekhar T K)
516
517 POWER:
518         * Optimize D and Z BLAS3 functions for Power8.
519
520 ====================================================================
521 Version 0.2.16.rc1
522 23-Feb-2016
523 common:
524         * Upgrade LAPACK to 3.6.0 version.
525           Add BUILD_LAPACK_DEPRECATED option in Makefile.rule to build
526           LAPACK deprecated functions.
527         * Add MAKE_NB_JOBS option in Makefile.
528           Force number of make jobs.This is particularly
529           useful when using distcc. (#735. Thanks, Jerome Robert.)
530         * Redesign unit test. Run unit/regression test at every build (Travis-CI and Appveyor).
531         * Disable multi-threading for small size swap and ger. (#744. Thanks, Jerome Robert)
532         * Improve small zger, zgemv, ztrmv using stack alloction (#727. Thanks, Jerome Robert)
533         * Let openblas_get_num_threads return the number of active threads. 
534           (#760. Thanks, Jerome Robert)
535         * Support illumos(OmniOS). (#749. Thanks, Lauri Tirkkonen)
536         * Fix LAPACK Dormbr, Dormlq bug. (#711, #713. Thanks, Brendan Tracey)
537         * Update scipy benchmark script. (#745. Thanks, John Kirkham)
538
539 x86/x86_64:
540         * Optimize trsm kernels for AMD Bulldozer, Piledriver, Steamroller.
541         * Detect Intel Avoton.
542         * Detect AMD Trinity, Richland, E2-3200.
543         * Fix gemv performance bug on Mac OSX Intel Haswell.
544         * Fix some bugs with CMake and Visual Studio
545
546 ARM:
547         * Support and optimize Cortex-A57 AArch64.
548           (#686. Thanks, Ashwin Sekhar TK)
549         * Fix Android build on ARMV7 (#778. Thanks, Paul Mustiere)
550         * Update ARMV6 kernels.
551
552 POWER:
553         * Fix detection of POWER architecture
554           (#684. Thanks, Sebastien Villemot)
555
556 ====================================================================
557 Version 0.2.15
558 27-Oct-2015
559 common:
560         * Support cmake on x86/x86-64. Natively compiling on MS Visual Studio.
561           (experimental. Thank Hank Anderson for the initial cmake porting work.)
562           
563           On Linux and Mac OSX, OpenBLAS cmake supports assembly kernels.
564           e.g. cmake .
565                make
566                make test (Optional)
567
568           On Windows MS Visual Studio, OpenBLAS cmake only support C kernels.
569           (OpenBLAS uses AT&T style assembly, which is not supported by MSVC.)
570           e.g. cmake -G "Visual Studio 12 Win64" .
571                Open OpenBLAS.sln and build.
572           
573         * Enable MAX_STACK_ALLOC flags by default.
574           Improve ger and gemv for small matrices.
575         * Improve gemv parallel with small m and large n case.
576         * Improve ?imatcopy when lda==ldb (#633. Thanks, Martin Koehler)
577         * Add vecLib benchmarks (#565. Thanks, Andreas Noack.)
578         * Fix LAPACK lantr for row major matrices (#634. Thanks, Dan Kortschak)
579         * Fix LAPACKE lansy (#640. Thanks, Dan Kortschak)
580         * Import bug fixes for LAPACKE s/dormlq, c/zunmlq 
581         * Raise the signal when pthread_create fails (#668. Thanks, James K. Lowden)
582         * Remove g77 from compiler list.
583         * Enable AppVeyor Windows CI.
584
585 x86/x86-64:
586         * Support pure C generic kernels for x86/x86-64.
587         * Support Intel Boardwell and Skylake by Haswell kernels.
588         * Support AMD Excavator by Steamroller kernels.
589         * Optimize s/d/c/zdot for Intel SandyBridge and Haswell.
590         * Optimize s/d/c/zdot for AMD Piledriver and Steamroller.
591         * Optimize s/d/c/zapxy for Intel SandyBridge and Haswell.
592         * Optimize s/d/c/zapxy for AMD Piledriver and Steamroller.
593         * Optimize d/c/zscal for Intel Haswell, dscal for Intel SandyBridge.
594         * Optimize d/c/zscal for AMD Bulldozer, Piledriver and Steamroller.
595         * Optimize s/dger for Intel SandyBridge.
596         * Optimize s/dsymv for Intel SandyBridge.
597         * Optimize ssymv for Intel Haswell.
598         * Optimize dgemv for Intel Nehalem and Haswell.
599         * Optimize dtrmm for Intel Haswell.
600
601 ARM:
602         * Support Android NDK armeabi-v7a-hard ABI (-mfloat-abi=hard)
603           e.g. make HOSTCC=gcc CC=arm-linux-androideabi-gcc NO_LAPACK=1 TARGET=ARMV7
604         * Fix lock, rpcc bugs (#616, #617. Thanks, Grazvydas Ignotas)
605 POWER:
606         * Support ppc64le platform (ELF ABI v2. #612. Thanks, Matthew Brandyberry.)
607         * Support POWER7/8 by POWER6 kernels. (#612. Thanks, Fábio Perez.)
608
609 ====================================================================
610 Version 0.2.14
611 24-Mar-2015
612 common:
613         * Improve OpenBLASConfig.cmake. (#474, #475. Thanks, xantares.)
614         * Improve ger and gemv for small matrices by stack allocation.
615           e.g. make -DMAX_STACK_ALLOC=2048 (#482. Thanks, Jerome Robert.)
616         * Introduce openblas_get_num_threads and openblas_get_num_procs.
617           (#497. Thanks, Erik Schnetter.)
618         * Add ATLAS-style ?geadd function. (#509. Thanks, Martin Köhler.)
619         * Fix c/zsyr bug with negative incx. (#492.)
620         * Fix race condition during shutdown causing a crash in
621           gotoblas_set_affinity(). (#508. Thanks, Ton van den Heuvel.)
622
623 x86/x86-64:
624         * Support AMD Streamroller.
625
626 ARM:
627         * Add Cortex-A9 and Cortex-A15 targets.
628
629 ====================================================================
630 Version 0.2.13
631 3-Dec-2014
632 common:
633         * Add SYMBOLPREFIX and SYMBOLSUFFIX makefile options
634           for adding a prefix or suffix to all exported symbol names
635           in the shared library.(#459, Thanks Tony Kelman)
636         * Provide OpenBLASConfig.cmake at installation.
637         * Fix Fortran compiler detection on FreeBSD.
638           (#470, Thanks Mike Nolta)
639
640
641 x86/x86-64:
642         * Add generic kernel files for x86-64. make TARGET=GENERIC
643         * Fix a bug of sgemm kernel on Intel Sandy Bridge.
644         * Fix c_check bug on some amd64 systems. (#471, Thanks Mike Nolta)
645
646 ARM:
647         * Support APM's X-Gene 1 AArch64 processors.
648           Optimize trmm and sgemm. (#465, Thanks Dave Nuechterlein)
649
650 ====================================================================
651 Version 0.2.12
652 13-Oct-2014
653 common:
654         * Added CBLAS interface for ?omatcopy and ?imatcopy.
655         * Enable ?gemm3m functions.
656         * Added benchmark for ?gemm3m.
657         * Optimized multithreading lower limits.
658         * Disabled SYMM3M and HEMM3M functions 
659           because of segment violations.
660
661 x86/x86-64:
662         * Improved axpy and symv performance on AMD Bulldozer.
663         * Improved gemv performance on modern Intel and AMD CPUs.
664
665 ====================================================================
666 Version 0.2.11
667 18-Aug-2014
668 common:
669         * Added some benchmark codes.
670         * Fix link error on Linux/musl.(Thanks Isaac Dunham)
671
672 x86/x86-64:
673         * Improved s/c/zgemm performance for Intel Haswell.
674         * Improved s/d/c/zgemv performance.
675         * Support the big numa machine.(EXPERIMENT)
676
677 ARM:
678         * Fix detection when cpuinfo uses "Processor". (Thanks Isaiah)
679
680 ====================================================================
681 Version 0.2.10
682 16-Jul-2014
683 common:
684         * Added BLAS extensions as following.
685           s/d/c/zaxpby, s/d/c/zimatcopy, s/d/c/zomatcopy.
686         * Added OPENBLAS_CORETYPE environment for dynamic_arch. (a86d34)
687         * Added NO_AVX2 flag for old binutils. (#401)
688         * Support outputing the CPU corename on runtime.(#407)
689         * Patched LAPACK to fix bug 114, 117, 118. 
690           (http://www.netlib.org/lapack/bug_list.html)
691         * Disabled ?gemm3m for a work-around fix. (#400)
692 x86/x86-64:
693         * Fixed lots of bugs for optimized kernels on sandybridge,Haswell, 
694           bulldozer, and piledriver.
695           https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List
696
697 ARM:
698         * Improved LAPACK testing.
699
700 ====================================================================
701 Version 0.2.9
702 10-Jun-2014
703 common:
704         * Improved the result for LAPACK testing. (#372)
705         * Installed DLL to prefix/bin instead of prefix/lib. (#366)
706         * Build import library on Windows.(#374)
707 x86/x86-64:
708         * To improve LAPACK testing, we fallback some kernels. (#372)
709         https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List
710
711 ====================================================================
712 Version 0.2.9.rc2
713 06-Mar-2014
714 common:
715         * Added OPENBLAS_VERBOSE environment variable.(#338)
716         * Make OpenBLAS thread-pool resilient to fork via pthread_atfork.
717           (#294, Thank Olivier Grisel)
718         * Rewrote rotmg
719         * Fixed sdsdot bug.
720 x86/x86-64:
721         * Detect Intel Haswell for new Macbook.
722
723 ====================================================================
724 Version 0.2.9.rc1
725 13-Jan-2013
726 common:
727         * Update LAPACK to 3.5.0 version
728         * Fixed compatiable issues with Clang and Pathscale compilers.
729
730 x86/x86-64:
731         * Optimization on Intel Haswell.
732         * Enable optimization kernels on AMD Bulldozer and Piledriver.
733
734 ARM:
735         * Support ARMv6 and ARMv7 ISA.
736         * Optimization on ARM Cortex-A9.
737
738 ====================================================================
739 Version 0.2.8
740 01-Aug-2013
741 common:
742         * Support Open64 5.0. (#266)
743         * Add executable stack markings. (#262, Thank Sébastien Fabbro)
744         * Respect user's LDFLAGS (Thank Sébastien Fabbro)
745
746 x86/x86-64:
747         * Rollback bulldozer and piledriver kernels to barcelona kernels (#263)
748           We will fix the compuational error bug in bulldozer and piledriver kernels.
749
750 ====================================================================
751 Version 0.2.7
752 20-Jul-2013
753 common:
754         * Support LSB (Linux Standard Base) 4.1.
755           e.g. make CC=lsbcc
756         * Include LAPACK 3.4.2 source codes to the repo.
757           Avoid downloading at compile time.
758         * Add NO_PARALLEL_MAKE flag to disable parallel make.
759         * Create openblas_get_parallel to retrieve information which
760           parallelization model is used by OpenBLAS. (Thank grisuthedragon)
761         * Detect LLVM/Clang compiler. The default compiler is Clang on Mac OS X.
762         * Change LIBSUFFIX from .lib to .a on windows.
763         * A work-around for dtrti_U single thread bug. Replace it with LAPACK codes. (#191)
764
765 x86/x86-64:
766         * Optimize c/zgemm, trsm, dgemv_n, ddot, daxpy, dcopy on
767           AMD Bulldozer. (Thank Werner Saar)
768         * Add Intel Haswell support (using Sandybridge optimizations).
769           (Thank Dan Luu)
770         * Add AMD Piledriver support (using Bulldozer optimizations).
771         * Fix the computational error in zgemm avx kernel on
772           Sandybridge. (#237)
773         * Fix the overflow bug in gemv.
774         * Fix the overflow bug in multi-threaded BLAS3, getrf when NUM_THREADS
775           is very large.(#214, #221, #246).
776 MIPS64:
777         * Support loongcc (Open64 based) compiler for ICT Loongson 3A/B.
778
779 Power:
780         * Support Power7 by old Power6 kernels. (#220)
781
782 ====================================================================
783 Version 0.2.6
784 2-Mar-2013
785 common:
786         * Improved OpenMP performance slightly. (d744c9)
787         * Improved cblas.h compatibility with Intel MKL.(#185)
788         * Fixed the overflowing bug in single thread cholesky factorization.
789         * Fixed the overflowing buffer bug of multithreading hbmv and sbmv.(#174)
790
791 x86/x86-64:
792         * Added AMD Bulldozer x86-64 S/DGEMM AVX kernels. (Thank Werner Saar)
793           We will tune the performance in future.
794         * Auto-detect Intel Xeon E7540.
795         * Fixed the overflowing buffer bug of gemv. (#173)
796         * Fixed the bug of s/cdot about invalid reading NAN on x86_64. (#189)
797
798 MIPS64:
799
800 ====================================================================
801 Version 0.2.5
802 26-Nov-2012
803 common:
804         * Added NO_SHARED flag to disable generating the shared library.
805         * Compile LAPACKE with ILP64 modle when INTERFACE64=1 (#158)
806         * Export LAPACK 3.4.2 symbols in shared library. (#147)
807         * Only detect the number of physical CPU cores on Mac OSX. (#157)
808         * Fixed NetBSD build. (#155)
809         * Fixed compilation with TARGET=GENERIC. (#160)
810 x86/x86-64:
811         * Restore the original CPU affinity when calling
812           openblas_set_num_threads(1) (#153)
813         * Fixed a SEGFAULT bug in dgemv_t when m is very large.(#154)
814 MIPS64:
815
816 ====================================================================
817 Version 0.2.4
818 8-Oct-2012
819 common:
820         * Upgraded LAPACK to 3.4.2 version. (#145)
821         * Provided support for passing CFLAGS, FFLAGS, PFLAGS,
822           FPFLAGS to make. (#137)
823         * f77blas.h:compatibility for compilers without C99 complex
824           number support. (#141)
825 x86/x86-64:
826         * Added NO_AVX flag. Check OS supporting AVX on runtime. (#139)
827         * Fixed zdot incompatibility ABI issue with GCC 4.7 on
828           Windows 32-bit. (#140)
829 MIPS64:
830         * Fixed the generation of shared library bug.
831         * Fixed the detection bug on the Loongson 3A server.
832 ====================================================================
833 Version 0.2.3
834 20-Aug-2012
835 common:
836         * Fixed LAPACK unstable bug about ?laswp. (#130)
837         * Fixed the shared library bug about unloading the library on
838           Linux (#132).
839         * Fixed the compilation failure on BlueGene/P (TARGET=PPC440FP2)
840           Please use gcc and IBM xlf. (#134)
841 x86/x86-64:
842         * Supported goto_set_num_threads and openblas_set_num_threads
843           APIs in Windows. They can set the number of threads on runtime.
844
845 ====================================================================
846 Version 0.2.2
847 6-July-2012
848 common:
849         * Fixed exporting DLL functions bug on Windows/MingW
850         * Support GNU Hurd (Thank Sylvestre Ledru)
851         * Support kfreebsd kernel (Thank Sylvestre Ledru)
852 x86/x86-64:
853         * Support Intel Sandy Bridge 22nm desktop/mobile CPU
854 SPARC:
855         * Improve the detection of SPARC (Thank Sylvestre Ledru)
856
857 ====================================================================
858 Version 0.2.1
859 30-Jun-2012
860 common:
861 x86/x86-64:
862         * Fixed the SEGFAULT bug about hyper-theading
863         * Support AMD Bulldozer by using GotoBLAS2 AMD Barcelona codes
864
865 ====================================================================
866 Version 0.2.0
867 26-Jun-2012
868 common:
869         * Removed the limitation (64) of numbers of CPU cores.
870           Now, it supports 256 cores at max.
871         * Supported clang compiler.
872         * Fixed some build bugs on FreeBSD
873 x86/x86-64:
874         * Optimized Level-3 BLAS on Intel Sandy Bridge x86-64 by AVX instructions.
875           Please use gcc >= 4.6 or clang >=3.1.
876         * Support AMD Bobcat by using GotoBLAS2 AMD Barcelona codes.
877
878 ====================================================================
879 Version 0.1.1
880 29-Apr-2012
881 common:
882         * Upgraded LAPACK to 3.4.1 version. (Thank Zaheer Chothia)
883         * Supported LAPACKE, a C interface to LAPACKE. (Thank Zaheer Chothia)
884         * Fixed the build bug (MD5 and download) on Mac OSX.
885         * Auto download CUnit 2.1.2-2 from SF.net with UTEST_CHECK=1.
886         * Fxied the compatibility issue for compilers without C99 complex number
887           (e.g. Visual Studio)
888 x86/x86_64:
889         * Auto-detect Intel Sandy Bridge Core i7-3xxx & Xeon E7 Westmere-EX.
890         * Test alpha=Nan in dscale.
891         * Fixed a SEGFAULT bug in samax on x86 windows.
892
893 ====================================================================
894 Version 0.1.0
895 23-Mar-2012
896 common:
897         * Set soname of shared library on Linux.
898         * Added LIBNAMESUFFIX flag in Makefile.rule. The user can use
899           this flag to control the library name, e.g. libopenblas.a,
900           libopenblas_ifort.a or libopenblas_omp.a.
901         * Added GEMM_MULTITHREAD_THRESHOLD flag in Makefile.rule.
902           The lib use single thread in GEMM function with small matrices.
903 x86/x86_64:
904         * Used GEMV SSE/SSE2 kernels on x86 32-bit.
905         * Exported CBLAS functions in Windows DLL.
906 MIPS64:
907         * Completed Level-3 BLAS optimization on Loongson 3A CPU.
908         * Improved GEMV performance on Loongson 3A CPU.
909         * Improved Level-3 BLAS performance on Loongson 3B CPU. (EXPERIMENT)
910
911 ====================================================================
912 Version 0.1 alpha2.5
913 19-Feb-2012
914 common:
915         * Fixed missing "#include <sched.h>" bug on Mac OS X.
916           Thank Mike Nolta for the patch.
917         * Upgraded LAPACK to 3.4.0 version
918         * Fixed a bug on Mac OS X. Don't require SystemStubs on OS X.
919           SystemStubs does not exist on Lion. Thank Stefan Karpinski.
920         * Improved README with using OpenMP. Check the internal threads
921           count less than or equal to omp_get_max_threads()
922 x86/x86_64:
923         * Auto-detect Intel Core i6/i7 (Sandy Bridge) CPU with Nehalem assembly kernels
924         * Fixed some bugs on MingW 64-bit including zgemv, cdot, zdot.
925
926 ====================================================================
927 Version 0.1 alpha2.4
928 18-Sep-2011
929 common:
930         * Fixed a bug about installation. The header file "fblas77.h"
931           works fine now.
932         * Fixed #61 a building bug about setting TARGET and DYNAMIC_ARCH.
933         * Try to handle absolute path of shared library in OSX. (#57)
934           Thank Dr Kane O'Donnell.
935         * Changed the installation folder layout to $(PREFIX)/include and
936           $(PREFIX)/lib
937
938 x86/x86_64:
939         * Fixed #58 zdot/xdot SEGFAULT bug with GCC-4.6 on x86. According
940           to i386 calling convention, The callee should remove the first
941           hidden parameter.Thank Mr. John for this patch.
942
943 ====================================================================
944 Version 0.1 alpha2.3
945 5-Sep-2011
946
947 x86/x86_64:
948         *  Added DTB_ENTRIES into dynamic arch setting parameters. Now,
949            it can read DTB_ENTRIES on runtime. (Refs issue #55 on github)
950
951 ====================================================================
952 Version 0.1 alpha2.2
953 14-Jul-2011
954
955 common:
956         * Fixed a building bug when DYNAMIC_ARCH=1 & INTERFACE64=1.
957           (Refs issue #44 on github)
958
959 ====================================================================
960 Version 0.1 alpha2.1
961 28-Jun-2011
962
963 common:
964         * Stop the build and output the error message when detecting
965           fortran compiler failed. (Refs issue #42 on github)
966
967 ====================================================================
968 Version 0.1 alpha2
969 23-Jun-2011
970
971 common:
972         * Fixed blasint undefined bug in <cblas.h> file. Other software
973           could include this header successfully(Refs issue #13 on github)
974         * Fixed the SEGFAULT bug on 64 cores. On SMP server, the number
975           of CPUs or cores should be less than or equal to 64.(Refs issue #14
976           on github)
977         * Support "void goto_set_num_threads(int num_threads)" and "void
978           openblas_set_num_threads(int num_threads)" when USE_OPENMP=1
979         * Added extern "C" to support C++. Thank Tasio for the patch(Refs
980           issue #21 on github)
981         * Provided an error message when the arch is not supported.(Refs
982           issue #19 on github)
983         * Fixed issue #23. Fixed a bug of f_check script about generating link flags.
984         * Added openblas_set_num_threads for Fortran.
985         * Fixed #25 a wrong result of rotmg.
986         * Fixed a bug about detecting underscore prefix in c_check.
987         * Print the wall time (cycles) with enabling FUNCTION_PROFILE
988         * Fixed #35 a build bug with NO_LAPACK=1 & DYNAMIC_ARCH=1
989         * Added install target. You can use "make install". (Refs #20)
990
991
992 x86/x86_64:
993         * Fixed #28 a wrong result of dsdot on x86_64.
994         * Fixed #32 a SEGFAULT bug of zdotc with gcc-4.6.
995         * Fixed #33 ztrmm bug on Nehalem.
996         * Work-around #27 the low performance axpy issue with small imput size & multithreads.
997
998 MIPS64:
999         * Fixed #28 a wrong result of dsdot on Loongson3A/MIPS64.
1000         * Optimized single/double precision BLAS Level3 on Loongson3A/MIPS64. (Refs #2)
1001         * Optimized single/double precision axpy function on Loongson3A/MIPS64. (Refs #3)
1002
1003 ====================================================================
1004 Version 0.1 alpha1
1005 20-Mar-2011
1006
1007 common:
1008         * Support "make  NO_LAPACK=1" to build the library without
1009           LAPACK functions.
1010         * Fixed randomly SEGFAULT when nodemask==NULL with above Linux 2.6.34.
1011           Thank Mr.Ei-ji Nakama providing this patch. (Refs issue #12 on github)
1012         * Added DEBUG=1 rule in Makefile.rule to build debug version.
1013         * Disable compiling quad precision in reference BLAS library(netlib BLAS).
1014         * Added unit testcases in utest/ subdir. Used  CUnit framework.
1015         * Supported OPENBLAS_* & GOTO_* environment variables (Pleas see README)
1016         * Imported GotoBLAS2 1.13 BSD version
1017
1018 x86/x86_64:
1019         * On x86 32bits, fixed a bug in zdot_sse2.S line 191. This would casue
1020           zdotu & zdotc failures. Instead, work-around it. (Refs issue #8 #9 on github)
1021         * Modified ?axpy functions to return same netlib BLAS results
1022           when incx==0 or incy==0 (Refs issue #7 on github)
1023         * Modified ?swap functions to return same netlib BLAS results
1024           when incx==0 or incy==0 (Refs issue #6 on github)
1025         * Modified ?rot functions to return same netlib BLAS results
1026           when incx==0 or incy==0 (Refs issue #4 on github)
1027         * Detect Intel Westmere,Intel Clarkdale and Intel Arrandale
1028           to use Nehalem codes.
1029         * Fixed a typo bug about compiling dynamic ARCH library.
1030 MIPS64:
1031         * Improve daxpy performance on ICT Loongson 3A.
1032         * Supported ICT Loongson 3A CPU (Refs issue #1 on github)
1033 ====================================================================