Merge branch 'develop' into arm_soft_fp_abi
[platform/upstream/openblas.git] / Changelog.txt
1 OpenBLAS ChangeLog
2 ====================================================================
3 Version 0.2.15
4 27-Oct-2015
5 common:
6         * Support cmake on x86/x86-64. Natively compiling on MS Visual Studio.
7           (experimental. Thank Hank Anderson for the initial cmake porting work.)
8           
9           On Linux and Mac OSX, OpenBLAS cmake supports assembly kernels.
10           e.g. cmake .
11                make
12                make test (Optional)
13
14           On Windows MS Visual Studio, OpenBLAS cmake only support C kernels.
15           (OpenBLAS uses AT&T style assembly, which is not supported by MSVC.)
16           e.g. cmake -G "Visual Studio 12 Win64" .
17                Open OpenBLAS.sln and build.
18           
19         * Enable MAX_STACK_ALLOC flags by default.
20           Improve ger and gemv for small matrices.
21         * Improve gemv parallel with small m and large n case.
22         * Improve ?imatcopy when lda==ldb (#633. Thanks, Martin Koehler)
23         * Add vecLib benchmarks (#565. Thanks, Andreas Noack.)
24         * Fix LAPACK lantr for row major matrices (#634. Thanks, Dan Kortschak)
25         * Fix LAPACKE lansy (#640. Thanks, Dan Kortschak)
26         * Import bug fixes for LAPACKE s/dormlq, c/zunmlq 
27         * Raise the signal when pthread_create fails (#668. Thanks, James K. Lowden)
28         * Remove g77 from compiler list.
29         * Enable AppVeyor Windows CI.
30
31 x86/x86-64:
32         * Support pure C generic kernels for x86/x86-64.
33         * Support Intel Boardwell and Skylake by Haswell kernels.
34         * Support AMD Excavator by Steamroller kernels.
35         * Optimize s/d/c/zdot for Intel SandyBridge and Haswell.
36         * Optimize s/d/c/zdot for AMD Piledriver and Steamroller.
37         * Optimize s/d/c/zapxy for Intel SandyBridge and Haswell.
38         * Optimize s/d/c/zapxy for AMD Piledriver and Steamroller.
39         * Optimize d/c/zscal for Intel Haswell, dscal for Intel SandyBridge.
40         * Optimize d/c/zscal for AMD Bulldozer, Piledriver and Steamroller.
41         * Optimize s/dger for Intel SandyBridge.
42         * Optimize s/dsymv for Intel SandyBridge.
43         * Optimize ssymv for Intel Haswell.
44         * Optimize dgemv for Intel Nehalem and Haswell.
45         * Optimize dtrmm for Intel Haswell.
46
47 ARM:
48         * Support Android NDK armeabi-v7a-hard ABI (-mfloat-abi=hard)
49           e.g. make HOSTCC=gcc CC=arm-linux-androideabi-gcc NO_LAPACK=1 TARGET=ARMV7
50         * Fix lock, rpcc bugs (#616, #617. Thanks, Grazvydas Ignotas)
51 POWER:
52         * Support ppc64le platform (ELF ABI v2. #612. Thanks, Matthew Brandyberry.)
53         * Support POWER7/8 by POWER6 kernels. (#612. Thanks, Fábio Perez.)
54
55 ====================================================================
56 Version 0.2.14
57 24-Mar-2015
58 common:
59         * Improve OpenBLASConfig.cmake. (#474, #475. Thanks, xantares.)
60         * Improve ger and gemv for small matrices by stack allocation.
61           e.g. make -DMAX_STACK_ALLOC=2048 (#482. Thanks, Jerome Robert.)
62         * Introduce openblas_get_num_threads and openblas_get_num_procs.
63           (#497. Thanks, Erik Schnetter.)
64         * Add ATLAS-style ?geadd function. (#509. Thanks, Martin Köhler.)
65         * Fix c/zsyr bug with negative incx. (#492.)
66         * Fix race condition during shutdown causing a crash in
67           gotoblas_set_affinity(). (#508. Thanks, Ton van den Heuvel.)
68
69 x86/x86-64:
70         * Support AMD Streamroller.
71
72 ARM:
73         * Add Cortex-A9 and Cortex-A15 targets.
74
75 ====================================================================
76 Version 0.2.13
77 3-Dec-2014
78 common:
79         * Add SYMBOLPREFIX and SYMBOLSUFFIX makefile options
80           for adding a prefix or suffix to all exported symbol names
81           in the shared library.(#459, Thanks Tony Kelman)
82         * Provide OpenBLASConfig.cmake at installation.
83         * Fix Fortran compiler detection on FreeBSD.
84           (#470, Thanks Mike Nolta)
85
86
87 x86/x86-64:
88         * Add generic kernel files for x86-64. make TARGET=GENERIC
89         * Fix a bug of sgemm kernel on Intel Sandy Bridge.
90         * Fix c_check bug on some amd64 systems. (#471, Thanks Mike Nolta)
91
92 ARM:
93         * Support APM's X-Gene 1 AArch64 processors.
94           Optimize trmm and sgemm. (#465, Thanks Dave Nuechterlein)
95
96 ====================================================================
97 Version 0.2.12
98 13-Oct-2014
99 common:
100         * Added CBLAS interface for ?omatcopy and ?imatcopy.
101         * Enable ?gemm3m functions.
102         * Added benchmark for ?gemm3m.
103         * Optimized multithreading lower limits.
104         * Disabled SYMM3M and HEMM3M functions 
105           because of segment violations.
106
107 x86/x86-64:
108         * Improved axpy and symv performance on AMD Bulldozer.
109         * Improved gemv performance on modern Intel and AMD CPUs.
110
111 ====================================================================
112 Version 0.2.11
113 18-Aug-2014
114 common:
115         * Added some benchmark codes.
116         * Fix link error on Linux/musl.(Thanks Isaac Dunham)
117
118 x86/x86-64:
119         * Improved s/c/zgemm performance for Intel Haswell.
120         * Improved s/d/c/zgemv performance.
121         * Support the big numa machine.(EXPERIMENT)
122
123 ARM:
124         * Fix detection when cpuinfo uses "Processor". (Thanks Isaiah)
125
126 ====================================================================
127 Version 0.2.10
128 16-Jul-2014
129 common:
130         * Added BLAS extensions as following.
131           s/d/c/zaxpby, s/d/c/zimatcopy, s/d/c/zomatcopy.
132         * Added OPENBLAS_CORETYPE environment for dynamic_arch. (a86d34)
133         * Added NO_AVX2 flag for old binutils. (#401)
134         * Support outputing the CPU corename on runtime.(#407)
135         * Patched LAPACK to fix bug 114, 117, 118. 
136           (http://www.netlib.org/lapack/bug_list.html)
137         * Disabled ?gemm3m for a work-around fix. (#400)
138 x86/x86-64:
139         * Fixed lots of bugs for optimized kernels on sandybridge,Haswell, 
140           bulldozer, and piledriver.
141           https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List
142
143 ARM:
144         * Improved LAPACK testing.
145
146 ====================================================================
147 Version 0.2.9
148 10-Jun-2014
149 common:
150         * Improved the result for LAPACK testing. (#372)
151         * Installed DLL to prefix/bin instead of prefix/lib. (#366)
152         * Build import library on Windows.(#374)
153 x86/x86-64:
154         * To improve LAPACK testing, we fallback some kernels. (#372)
155         https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List
156
157 ====================================================================
158 Version 0.2.9.rc2
159 06-Mar-2014
160 common:
161         * Added OPENBLAS_VERBOSE environment variable.(#338)
162         * Make OpenBLAS thread-pool resilient to fork via pthread_atfork.
163           (#294, Thank Olivier Grisel)
164         * Rewrote rotmg
165         * Fixed sdsdot bug.
166 x86/x86-64:
167         * Detect Intel Haswell for new Macbook.
168
169 ====================================================================
170 Version 0.2.9.rc1
171 13-Jan-2013
172 common:
173         * Update LAPACK to 3.5.0 version
174         * Fixed compatiable issues with Clang and Pathscale compilers.
175
176 x86/x86-64:
177         * Optimization on Intel Haswell.
178         * Enable optimization kernels on AMD Bulldozer and Piledriver.
179
180 ARM:
181         * Support ARMv6 and ARMv7 ISA.
182         * Optimization on ARM Cortex-A9.
183
184 ====================================================================
185 Version 0.2.8
186 01-Aug-2013
187 common:
188         * Support Open64 5.0. (#266)
189         * Add executable stack markings. (#262, Thank Sébastien Fabbro)
190         * Respect user's LDFLAGS (Thank Sébastien Fabbro)
191
192 x86/x86-64:
193         * Rollback bulldozer and piledriver kernels to barcelona kernels (#263)
194           We will fix the compuational error bug in bulldozer and piledriver kernels.
195
196 ====================================================================
197 Version 0.2.7
198 20-Jul-2013
199 common:
200         * Support LSB (Linux Standard Base) 4.1.
201           e.g. make CC=lsbcc
202         * Include LAPACK 3.4.2 source codes to the repo.
203           Avoid downloading at compile time.
204         * Add NO_PARALLEL_MAKE flag to disable parallel make.
205         * Create openblas_get_parallel to retrieve information which
206           parallelization model is used by OpenBLAS. (Thank grisuthedragon)
207         * Detect LLVM/Clang compiler. The default compiler is Clang on Mac OS X.
208         * Change LIBSUFFIX from .lib to .a on windows.
209         * A work-around for dtrti_U single thread bug. Replace it with LAPACK codes. (#191)
210
211 x86/x86-64:
212         * Optimize c/zgemm, trsm, dgemv_n, ddot, daxpy, dcopy on
213           AMD Bulldozer. (Thank Werner Saar)
214         * Add Intel Haswell support (using Sandybridge optimizations).
215           (Thank Dan Luu)
216         * Add AMD Piledriver support (using Bulldozer optimizations).
217         * Fix the computational error in zgemm avx kernel on
218           Sandybridge. (#237)
219         * Fix the overflow bug in gemv.
220         * Fix the overflow bug in multi-threaded BLAS3, getrf when NUM_THREADS
221           is very large.(#214, #221, #246).
222 MIPS64:
223         * Support loongcc (Open64 based) compiler for ICT Loongson 3A/B.
224
225 Power:
226         * Support Power7 by old Power6 kernels. (#220)
227
228 ====================================================================
229 Version 0.2.6
230 2-Mar-2013
231 common:
232         * Improved OpenMP performance slightly. (d744c9)
233         * Improved cblas.h compatibility with Intel MKL.(#185)
234         * Fixed the overflowing bug in single thread cholesky factorization.
235         * Fixed the overflowing buffer bug of multithreading hbmv and sbmv.(#174)
236
237 x86/x86-64:
238         * Added AMD Bulldozer x86-64 S/DGEMM AVX kernels. (Thank Werner Saar)
239           We will tune the performance in future.
240         * Auto-detect Intel Xeon E7540.
241         * Fixed the overflowing buffer bug of gemv. (#173)
242         * Fixed the bug of s/cdot about invalid reading NAN on x86_64. (#189)
243
244 MIPS64:
245
246 ====================================================================
247 Version 0.2.5
248 26-Nov-2012
249 common:
250         * Added NO_SHARED flag to disable generating the shared library.
251         * Compile LAPACKE with ILP64 modle when INTERFACE64=1 (#158)
252         * Export LAPACK 3.4.2 symbols in shared library. (#147)
253         * Only detect the number of physical CPU cores on Mac OSX. (#157)
254         * Fixed NetBSD build. (#155)
255         * Fixed compilation with TARGET=GENERIC. (#160)
256 x86/x86-64:
257         * Restore the original CPU affinity when calling
258           openblas_set_num_threads(1) (#153)
259         * Fixed a SEGFAULT bug in dgemv_t when m is very large.(#154)
260 MIPS64:
261
262 ====================================================================
263 Version 0.2.4
264 8-Oct-2012
265 common:
266         * Upgraded LAPACK to 3.4.2 version. (#145)
267         * Provided support for passing CFLAGS, FFLAGS, PFLAGS,
268           FPFLAGS to make. (#137)
269         * f77blas.h:compatibility for compilers without C99 complex
270           number support. (#141)
271 x86/x86-64:
272         * Added NO_AVX flag. Check OS supporting AVX on runtime. (#139)
273         * Fixed zdot incompatibility ABI issue with GCC 4.7 on
274           Windows 32-bit. (#140)
275 MIPS64:
276         * Fixed the generation of shared library bug.
277         * Fixed the detection bug on the Loongson 3A server.
278 ====================================================================
279 Version 0.2.3
280 20-Aug-2012
281 common:
282         * Fixed LAPACK unstable bug about ?laswp. (#130)
283         * Fixed the shared library bug about unloading the library on
284           Linux (#132).
285         * Fixed the compilation failure on BlueGene/P (TARGET=PPC440FP2)
286           Please use gcc and IBM xlf. (#134)
287 x86/x86-64:
288         * Supported goto_set_num_threads and openblas_set_num_threads
289           APIs in Windows. They can set the number of threads on runtime.
290
291 ====================================================================
292 Version 0.2.2
293 6-July-2012
294 common:
295         * Fixed exporting DLL functions bug on Windows/MingW
296         * Support GNU Hurd (Thank Sylvestre Ledru)
297         * Support kfreebsd kernel (Thank Sylvestre Ledru)
298 x86/x86-64:
299         * Support Intel Sandy Bridge 22nm desktop/mobile CPU
300 SPARC:
301         * Improve the detection of SPARC (Thank Sylvestre Ledru)
302
303 ====================================================================
304 Version 0.2.1
305 30-Jun-2012
306 common:
307 x86/x86-64:
308         * Fixed the SEGFAULT bug about hyper-theading
309         * Support AMD Bulldozer by using GotoBLAS2 AMD Barcelona codes
310
311 ====================================================================
312 Version 0.2.0
313 26-Jun-2012
314 common:
315         * Removed the limitation (64) of numbers of CPU cores.
316           Now, it supports 256 cores at max.
317         * Supported clang compiler.
318         * Fixed some build bugs on FreeBSD
319 x86/x86-64:
320         * Optimized Level-3 BLAS on Intel Sandy Bridge x86-64 by AVX instructions.
321           Please use gcc >= 4.6 or clang >=3.1.
322         * Support AMD Bobcat by using GotoBLAS2 AMD Barcelona codes.
323
324 ====================================================================
325 Version 0.1.1
326 29-Apr-2012
327 common:
328         * Upgraded LAPACK to 3.4.1 version. (Thank Zaheer Chothia)
329         * Supported LAPACKE, a C interface to LAPACKE. (Thank Zaheer Chothia)
330         * Fixed the build bug (MD5 and download) on Mac OSX.
331         * Auto download CUnit 2.1.2-2 from SF.net with UTEST_CHECK=1.
332         * Fxied the compatibility issue for compilers without C99 complex number
333           (e.g. Visual Studio)
334 x86/x86_64:
335         * Auto-detect Intel Sandy Bridge Core i7-3xxx & Xeon E7 Westmere-EX.
336         * Test alpha=Nan in dscale.
337         * Fixed a SEGFAULT bug in samax on x86 windows.
338
339 ====================================================================
340 Version 0.1.0
341 23-Mar-2012
342 common:
343         * Set soname of shared library on Linux.
344         * Added LIBNAMESUFFIX flag in Makefile.rule. The user can use
345           this flag to control the library name, e.g. libopenblas.a,
346           libopenblas_ifort.a or libopenblas_omp.a.
347         * Added GEMM_MULTITHREAD_THRESHOLD flag in Makefile.rule.
348           The lib use single thread in GEMM function with small matrices.
349 x86/x86_64:
350         * Used GEMV SSE/SSE2 kernels on x86 32-bit.
351         * Exported CBLAS functions in Windows DLL.
352 MIPS64:
353         * Completed Level-3 BLAS optimization on Loongson 3A CPU.
354         * Improved GEMV performance on Loongson 3A CPU.
355         * Improved Level-3 BLAS performance on Loongson 3B CPU. (EXPERIMENT)
356
357 ====================================================================
358 Version 0.1 alpha2.5
359 19-Feb-2012
360 common:
361         * Fixed missing "#include <sched.h>" bug on Mac OS X.
362           Thank Mike Nolta for the patch.
363         * Upgraded LAPACK to 3.4.0 version
364         * Fixed a bug on Mac OS X. Don't require SystemStubs on OS X.
365           SystemStubs does not exist on Lion. Thank Stefan Karpinski.
366         * Improved README with using OpenMP. Check the internal threads
367           count less than or equal to omp_get_max_threads()
368 x86/x86_64:
369         * Auto-detect Intel Core i6/i7 (Sandy Bridge) CPU with Nehalem assembly kernels
370         * Fixed some bugs on MingW 64-bit including zgemv, cdot, zdot.
371
372 ====================================================================
373 Version 0.1 alpha2.4
374 18-Sep-2011
375 common:
376         * Fixed a bug about installation. The header file "fblas77.h"
377           works fine now.
378         * Fixed #61 a building bug about setting TARGET and DYNAMIC_ARCH.
379         * Try to handle absolute path of shared library in OSX. (#57)
380           Thank Dr Kane O'Donnell.
381         * Changed the installation folder layout to $(PREFIX)/include and
382           $(PREFIX)/lib
383
384 x86/x86_64:
385         * Fixed #58 zdot/xdot SEGFAULT bug with GCC-4.6 on x86. According
386           to i386 calling convention, The callee should remove the first
387           hidden parameter.Thank Mr. John for this patch.
388
389 ====================================================================
390 Version 0.1 alpha2.3
391 5-Sep-2011
392
393 x86/x86_64:
394         *  Added DTB_ENTRIES into dynamic arch setting parameters. Now,
395            it can read DTB_ENTRIES on runtime. (Refs issue #55 on github)
396
397 ====================================================================
398 Version 0.1 alpha2.2
399 14-Jul-2011
400
401 common:
402         * Fixed a building bug when DYNAMIC_ARCH=1 & INTERFACE64=1.
403           (Refs issue #44 on github)
404
405 ====================================================================
406 Version 0.1 alpha2.1
407 28-Jun-2011
408
409 common:
410         * Stop the build and output the error message when detecting
411           fortran compiler failed. (Refs issue #42 on github)
412
413 ====================================================================
414 Version 0.1 alpha2
415 23-Jun-2011
416
417 common:
418         * Fixed blasint undefined bug in <cblas.h> file. Other software
419           could include this header successfully(Refs issue #13 on github)
420         * Fixed the SEGFAULT bug on 64 cores. On SMP server, the number
421           of CPUs or cores should be less than or equal to 64.(Refs issue #14
422           on github)
423         * Support "void goto_set_num_threads(int num_threads)" and "void
424           openblas_set_num_threads(int num_threads)" when USE_OPENMP=1
425         * Added extern "C" to support C++. Thank Tasio for the patch(Refs
426           issue #21 on github)
427         * Provided an error message when the arch is not supported.(Refs
428           issue #19 on github)
429         * Fixed issue #23. Fixed a bug of f_check script about generating link flags.
430         * Added openblas_set_num_threads for Fortran.
431         * Fixed #25 a wrong result of rotmg.
432         * Fixed a bug about detecting underscore prefix in c_check.
433         * Print the wall time (cycles) with enabling FUNCTION_PROFILE
434         * Fixed #35 a build bug with NO_LAPACK=1 & DYNAMIC_ARCH=1
435         * Added install target. You can use "make install". (Refs #20)
436
437
438 x86/x86_64:
439         * Fixed #28 a wrong result of dsdot on x86_64.
440         * Fixed #32 a SEGFAULT bug of zdotc with gcc-4.6.
441         * Fixed #33 ztrmm bug on Nehalem.
442         * Work-around #27 the low performance axpy issue with small imput size & multithreads.
443
444 MIPS64:
445         * Fixed #28 a wrong result of dsdot on Loongson3A/MIPS64.
446         * Optimized single/double precision BLAS Level3 on Loongson3A/MIPS64. (Refs #2)
447         * Optimized single/double precision axpy function on Loongson3A/MIPS64. (Refs #3)
448
449 ====================================================================
450 Version 0.1 alpha1
451 20-Mar-2011
452
453 common:
454         * Support "make  NO_LAPACK=1" to build the library without
455           LAPACK functions.
456         * Fixed randomly SEGFAULT when nodemask==NULL with above Linux 2.6.34.
457           Thank Mr.Ei-ji Nakama providing this patch. (Refs issue #12 on github)
458         * Added DEBUG=1 rule in Makefile.rule to build debug version.
459         * Disable compiling quad precision in reference BLAS library(netlib BLAS).
460         * Added unit testcases in utest/ subdir. Used  CUnit framework.
461         * Supported OPENBLAS_* & GOTO_* environment variables (Pleas see README)
462         * Imported GotoBLAS2 1.13 BSD version
463
464 x86/x86_64:
465         * On x86 32bits, fixed a bug in zdot_sse2.S line 191. This would casue
466           zdotu & zdotc failures. Instead, work-around it. (Refs issue #8 #9 on github)
467         * Modified ?axpy functions to return same netlib BLAS results
468           when incx==0 or incy==0 (Refs issue #7 on github)
469         * Modified ?swap functions to return same netlib BLAS results
470           when incx==0 or incy==0 (Refs issue #6 on github)
471         * Modified ?rot functions to return same netlib BLAS results
472           when incx==0 or incy==0 (Refs issue #4 on github)
473         * Detect Intel Westmere,Intel Clarkdale and Intel Arrandale
474           to use Nehalem codes.
475         * Fixed a typo bug about compiling dynamic ARCH library.
476 MIPS64:
477         * Improve daxpy performance on ICT Loongson 3A.
478         * Supported ICT Loongson 3A CPU (Refs issue #1 on github)
479 ====================================================================