OpenBLAS ChangeLog ==================================================================== Version 0.2.15 27-Oct-2015 common: * Support cmake on x86/x86-64. Natively compiling on MS Visual Studio. (experimental. Thank Hank Anderson for the initial cmake porting work.) On Linux and Mac OSX, OpenBLAS cmake supports assembly kernels. e.g. cmake . make make test (Optional) On Windows MS Visual Studio, OpenBLAS cmake only support C kernels. (OpenBLAS uses AT&T style assembly, which is not supported by MSVC.) e.g. cmake -G "Visual Studio 12 Win64" . Open OpenBLAS.sln and build. * Enable MAX_STACK_ALLOC flags by default. Improve ger and gemv for small matrices. * Improve gemv parallel with small m and large n case. * Improve ?imatcopy when lda==ldb (#633. Thanks, Martin Koehler) * Add vecLib benchmarks (#565. Thanks, Andreas Noack.) * Fix LAPACK lantr for row major matrices (#634. Thanks, Dan Kortschak) * Fix LAPACKE lansy (#640. Thanks, Dan Kortschak) * Import bug fixes for LAPACKE s/dormlq, c/zunmlq * Raise the signal when pthread_create fails (#668. Thanks, James K. Lowden) * Remove g77 from compiler list. * Enable AppVeyor Windows CI. x86/x86-64: * Support pure C generic kernels for x86/x86-64. * Support Intel Boardwell and Skylake by Haswell kernels. * Support AMD Excavator by Steamroller kernels. * Optimize s/d/c/zdot for Intel SandyBridge and Haswell. * Optimize s/d/c/zdot for AMD Piledriver and Steamroller. * Optimize s/d/c/zapxy for Intel SandyBridge and Haswell. * Optimize s/d/c/zapxy for AMD Piledriver and Steamroller. * Optimize d/c/zscal for Intel Haswell, dscal for Intel SandyBridge. * Optimize d/c/zscal for AMD Bulldozer, Piledriver and Steamroller. * Optimize s/dger for Intel SandyBridge. * Optimize s/dsymv for Intel SandyBridge. * Optimize ssymv for Intel Haswell. * Optimize dgemv for Intel Nehalem and Haswell. * Optimize dtrmm for Intel Haswell. ARM: * Support Android NDK armeabi-v7a-hard ABI (-mfloat-abi=hard) e.g. make HOSTCC=gcc CC=arm-linux-androideabi-gcc NO_LAPACK=1 TARGET=ARMV7 * Fix lock, rpcc bugs (#616, #617. Thanks, Grazvydas Ignotas) POWER: * Support ppc64le platform (ELF ABI v2. #612. Thanks, Matthew Brandyberry.) * Support POWER7/8 by POWER6 kernels. (#612. Thanks, Fábio Perez.) ==================================================================== Version 0.2.14 24-Mar-2015 common: * Improve OpenBLASConfig.cmake. (#474, #475. Thanks, xantares.) * Improve ger and gemv for small matrices by stack allocation. e.g. make -DMAX_STACK_ALLOC=2048 (#482. Thanks, Jerome Robert.) * Introduce openblas_get_num_threads and openblas_get_num_procs. (#497. Thanks, Erik Schnetter.) * Add ATLAS-style ?geadd function. (#509. Thanks, Martin Köhler.) * Fix c/zsyr bug with negative incx. (#492.) * Fix race condition during shutdown causing a crash in gotoblas_set_affinity(). (#508. Thanks, Ton van den Heuvel.) x86/x86-64: * Support AMD Streamroller. ARM: * Add Cortex-A9 and Cortex-A15 targets. ==================================================================== Version 0.2.13 3-Dec-2014 common: * Add SYMBOLPREFIX and SYMBOLSUFFIX makefile options for adding a prefix or suffix to all exported symbol names in the shared library.(#459, Thanks Tony Kelman) * Provide OpenBLASConfig.cmake at installation. * Fix Fortran compiler detection on FreeBSD. (#470, Thanks Mike Nolta) x86/x86-64: * Add generic kernel files for x86-64. make TARGET=GENERIC * Fix a bug of sgemm kernel on Intel Sandy Bridge. * Fix c_check bug on some amd64 systems. (#471, Thanks Mike Nolta) ARM: * Support APM's X-Gene 1 AArch64 processors. Optimize trmm and sgemm. (#465, Thanks Dave Nuechterlein) ==================================================================== Version 0.2.12 13-Oct-2014 common: * Added CBLAS interface for ?omatcopy and ?imatcopy. * Enable ?gemm3m functions. * Added benchmark for ?gemm3m. * Optimized multithreading lower limits. * Disabled SYMM3M and HEMM3M functions because of segment violations. x86/x86-64: * Improved axpy and symv performance on AMD Bulldozer. * Improved gemv performance on modern Intel and AMD CPUs. ==================================================================== Version 0.2.11 18-Aug-2014 common: * Added some benchmark codes. * Fix link error on Linux/musl.(Thanks Isaac Dunham) x86/x86-64: * Improved s/c/zgemm performance for Intel Haswell. * Improved s/d/c/zgemv performance. * Support the big numa machine.(EXPERIMENT) ARM: * Fix detection when cpuinfo uses "Processor". (Thanks Isaiah) ==================================================================== Version 0.2.10 16-Jul-2014 common: * Added BLAS extensions as following. s/d/c/zaxpby, s/d/c/zimatcopy, s/d/c/zomatcopy. * Added OPENBLAS_CORETYPE environment for dynamic_arch. (a86d34) * Added NO_AVX2 flag for old binutils. (#401) * Support outputing the CPU corename on runtime.(#407) * Patched LAPACK to fix bug 114, 117, 118. (http://www.netlib.org/lapack/bug_list.html) * Disabled ?gemm3m for a work-around fix. (#400) x86/x86-64: * Fixed lots of bugs for optimized kernels on sandybridge,Haswell, bulldozer, and piledriver. https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List ARM: * Improved LAPACK testing. ==================================================================== Version 0.2.9 10-Jun-2014 common: * Improved the result for LAPACK testing. (#372) * Installed DLL to prefix/bin instead of prefix/lib. (#366) * Build import library on Windows.(#374) x86/x86-64: * To improve LAPACK testing, we fallback some kernels. (#372) https://github.com/xianyi/OpenBLAS/wiki/Fixed-optimized-kernels-To-do-List ==================================================================== Version 0.2.9.rc2 06-Mar-2014 common: * Added OPENBLAS_VERBOSE environment variable.(#338) * Make OpenBLAS thread-pool resilient to fork via pthread_atfork. (#294, Thank Olivier Grisel) * Rewrote rotmg * Fixed sdsdot bug. x86/x86-64: * Detect Intel Haswell for new Macbook. ==================================================================== Version 0.2.9.rc1 13-Jan-2013 common: * Update LAPACK to 3.5.0 version * Fixed compatiable issues with Clang and Pathscale compilers. x86/x86-64: * Optimization on Intel Haswell. * Enable optimization kernels on AMD Bulldozer and Piledriver. ARM: * Support ARMv6 and ARMv7 ISA. * Optimization on ARM Cortex-A9. ==================================================================== Version 0.2.8 01-Aug-2013 common: * Support Open64 5.0. (#266) * Add executable stack markings. (#262, Thank Sébastien Fabbro) * Respect user's LDFLAGS (Thank Sébastien Fabbro) x86/x86-64: * Rollback bulldozer and piledriver kernels to barcelona kernels (#263) We will fix the compuational error bug in bulldozer and piledriver kernels. ==================================================================== Version 0.2.7 20-Jul-2013 common: * Support LSB (Linux Standard Base) 4.1. e.g. make CC=lsbcc * Include LAPACK 3.4.2 source codes to the repo. Avoid downloading at compile time. * Add NO_PARALLEL_MAKE flag to disable parallel make. * Create openblas_get_parallel to retrieve information which parallelization model is used by OpenBLAS. (Thank grisuthedragon) * Detect LLVM/Clang compiler. The default compiler is Clang on Mac OS X. * Change LIBSUFFIX from .lib to .a on windows. * A work-around for dtrti_U single thread bug. Replace it with LAPACK codes. (#191) x86/x86-64: * Optimize c/zgemm, trsm, dgemv_n, ddot, daxpy, dcopy on AMD Bulldozer. (Thank Werner Saar) * Add Intel Haswell support (using Sandybridge optimizations). (Thank Dan Luu) * Add AMD Piledriver support (using Bulldozer optimizations). * Fix the computational error in zgemm avx kernel on Sandybridge. (#237) * Fix the overflow bug in gemv. * Fix the overflow bug in multi-threaded BLAS3, getrf when NUM_THREADS is very large.(#214, #221, #246). MIPS64: * Support loongcc (Open64 based) compiler for ICT Loongson 3A/B. Power: * Support Power7 by old Power6 kernels. (#220) ==================================================================== Version 0.2.6 2-Mar-2013 common: * Improved OpenMP performance slightly. (d744c9) * Improved cblas.h compatibility with Intel MKL.(#185) * Fixed the overflowing bug in single thread cholesky factorization. * Fixed the overflowing buffer bug of multithreading hbmv and sbmv.(#174) x86/x86-64: * Added AMD Bulldozer x86-64 S/DGEMM AVX kernels. (Thank Werner Saar) We will tune the performance in future. * Auto-detect Intel Xeon E7540. * Fixed the overflowing buffer bug of gemv. (#173) * Fixed the bug of s/cdot about invalid reading NAN on x86_64. (#189) MIPS64: ==================================================================== Version 0.2.5 26-Nov-2012 common: * Added NO_SHARED flag to disable generating the shared library. * Compile LAPACKE with ILP64 modle when INTERFACE64=1 (#158) * Export LAPACK 3.4.2 symbols in shared library. (#147) * Only detect the number of physical CPU cores on Mac OSX. (#157) * Fixed NetBSD build. (#155) * Fixed compilation with TARGET=GENERIC. (#160) x86/x86-64: * Restore the original CPU affinity when calling openblas_set_num_threads(1) (#153) * Fixed a SEGFAULT bug in dgemv_t when m is very large.(#154) MIPS64: ==================================================================== Version 0.2.4 8-Oct-2012 common: * Upgraded LAPACK to 3.4.2 version. (#145) * Provided support for passing CFLAGS, FFLAGS, PFLAGS, FPFLAGS to make. (#137) * f77blas.h:compatibility for compilers without C99 complex number support. (#141) x86/x86-64: * Added NO_AVX flag. Check OS supporting AVX on runtime. (#139) * Fixed zdot incompatibility ABI issue with GCC 4.7 on Windows 32-bit. (#140) MIPS64: * Fixed the generation of shared library bug. * Fixed the detection bug on the Loongson 3A server. ==================================================================== Version 0.2.3 20-Aug-2012 common: * Fixed LAPACK unstable bug about ?laswp. (#130) * Fixed the shared library bug about unloading the library on Linux (#132). * Fixed the compilation failure on BlueGene/P (TARGET=PPC440FP2) Please use gcc and IBM xlf. (#134) x86/x86-64: * Supported goto_set_num_threads and openblas_set_num_threads APIs in Windows. They can set the number of threads on runtime. ==================================================================== Version 0.2.2 6-July-2012 common: * Fixed exporting DLL functions bug on Windows/MingW * Support GNU Hurd (Thank Sylvestre Ledru) * Support kfreebsd kernel (Thank Sylvestre Ledru) x86/x86-64: * Support Intel Sandy Bridge 22nm desktop/mobile CPU SPARC: * Improve the detection of SPARC (Thank Sylvestre Ledru) ==================================================================== Version 0.2.1 30-Jun-2012 common: x86/x86-64: * Fixed the SEGFAULT bug about hyper-theading * Support AMD Bulldozer by using GotoBLAS2 AMD Barcelona codes ==================================================================== Version 0.2.0 26-Jun-2012 common: * Removed the limitation (64) of numbers of CPU cores. Now, it supports 256 cores at max. * Supported clang compiler. * Fixed some build bugs on FreeBSD x86/x86-64: * Optimized Level-3 BLAS on Intel Sandy Bridge x86-64 by AVX instructions. Please use gcc >= 4.6 or clang >=3.1. * Support AMD Bobcat by using GotoBLAS2 AMD Barcelona codes. ==================================================================== Version 0.1.1 29-Apr-2012 common: * Upgraded LAPACK to 3.4.1 version. (Thank Zaheer Chothia) * Supported LAPACKE, a C interface to LAPACKE. (Thank Zaheer Chothia) * Fixed the build bug (MD5 and download) on Mac OSX. * Auto download CUnit 2.1.2-2 from SF.net with UTEST_CHECK=1. * Fxied the compatibility issue for compilers without C99 complex number (e.g. Visual Studio) x86/x86_64: * Auto-detect Intel Sandy Bridge Core i7-3xxx & Xeon E7 Westmere-EX. * Test alpha=Nan in dscale. * Fixed a SEGFAULT bug in samax on x86 windows. ==================================================================== Version 0.1.0 23-Mar-2012 common: * Set soname of shared library on Linux. * Added LIBNAMESUFFIX flag in Makefile.rule. The user can use this flag to control the library name, e.g. libopenblas.a, libopenblas_ifort.a or libopenblas_omp.a. * Added GEMM_MULTITHREAD_THRESHOLD flag in Makefile.rule. The lib use single thread in GEMM function with small matrices. x86/x86_64: * Used GEMV SSE/SSE2 kernels on x86 32-bit. * Exported CBLAS functions in Windows DLL. MIPS64: * Completed Level-3 BLAS optimization on Loongson 3A CPU. * Improved GEMV performance on Loongson 3A CPU. * Improved Level-3 BLAS performance on Loongson 3B CPU. (EXPERIMENT) ==================================================================== Version 0.1 alpha2.5 19-Feb-2012 common: * Fixed missing "#include " bug on Mac OS X. Thank Mike Nolta for the patch. * Upgraded LAPACK to 3.4.0 version * Fixed a bug on Mac OS X. Don't require SystemStubs on OS X. SystemStubs does not exist on Lion. Thank Stefan Karpinski. * Improved README with using OpenMP. Check the internal threads count less than or equal to omp_get_max_threads() x86/x86_64: * Auto-detect Intel Core i6/i7 (Sandy Bridge) CPU with Nehalem assembly kernels * Fixed some bugs on MingW 64-bit including zgemv, cdot, zdot. ==================================================================== Version 0.1 alpha2.4 18-Sep-2011 common: * Fixed a bug about installation. The header file "fblas77.h" works fine now. * Fixed #61 a building bug about setting TARGET and DYNAMIC_ARCH. * Try to handle absolute path of shared library in OSX. (#57) Thank Dr Kane O'Donnell. * Changed the installation folder layout to $(PREFIX)/include and $(PREFIX)/lib x86/x86_64: * Fixed #58 zdot/xdot SEGFAULT bug with GCC-4.6 on x86. According to i386 calling convention, The callee should remove the first hidden parameter.Thank Mr. John for this patch. ==================================================================== Version 0.1 alpha2.3 5-Sep-2011 x86/x86_64: * Added DTB_ENTRIES into dynamic arch setting parameters. Now, it can read DTB_ENTRIES on runtime. (Refs issue #55 on github) ==================================================================== Version 0.1 alpha2.2 14-Jul-2011 common: * Fixed a building bug when DYNAMIC_ARCH=1 & INTERFACE64=1. (Refs issue #44 on github) ==================================================================== Version 0.1 alpha2.1 28-Jun-2011 common: * Stop the build and output the error message when detecting fortran compiler failed. (Refs issue #42 on github) ==================================================================== Version 0.1 alpha2 23-Jun-2011 common: * Fixed blasint undefined bug in file. Other software could include this header successfully(Refs issue #13 on github) * Fixed the SEGFAULT bug on 64 cores. On SMP server, the number of CPUs or cores should be less than or equal to 64.(Refs issue #14 on github) * Support "void goto_set_num_threads(int num_threads)" and "void openblas_set_num_threads(int num_threads)" when USE_OPENMP=1 * Added extern "C" to support C++. Thank Tasio for the patch(Refs issue #21 on github) * Provided an error message when the arch is not supported.(Refs issue #19 on github) * Fixed issue #23. Fixed a bug of f_check script about generating link flags. * Added openblas_set_num_threads for Fortran. * Fixed #25 a wrong result of rotmg. * Fixed a bug about detecting underscore prefix in c_check. * Print the wall time (cycles) with enabling FUNCTION_PROFILE * Fixed #35 a build bug with NO_LAPACK=1 & DYNAMIC_ARCH=1 * Added install target. You can use "make install". (Refs #20) x86/x86_64: * Fixed #28 a wrong result of dsdot on x86_64. * Fixed #32 a SEGFAULT bug of zdotc with gcc-4.6. * Fixed #33 ztrmm bug on Nehalem. * Work-around #27 the low performance axpy issue with small imput size & multithreads. MIPS64: * Fixed #28 a wrong result of dsdot on Loongson3A/MIPS64. * Optimized single/double precision BLAS Level3 on Loongson3A/MIPS64. (Refs #2) * Optimized single/double precision axpy function on Loongson3A/MIPS64. (Refs #3) ==================================================================== Version 0.1 alpha1 20-Mar-2011 common: * Support "make NO_LAPACK=1" to build the library without LAPACK functions. * Fixed randomly SEGFAULT when nodemask==NULL with above Linux 2.6.34. Thank Mr.Ei-ji Nakama providing this patch. (Refs issue #12 on github) * Added DEBUG=1 rule in Makefile.rule to build debug version. * Disable compiling quad precision in reference BLAS library(netlib BLAS). * Added unit testcases in utest/ subdir. Used CUnit framework. * Supported OPENBLAS_* & GOTO_* environment variables (Pleas see README) * Imported GotoBLAS2 1.13 BSD version x86/x86_64: * On x86 32bits, fixed a bug in zdot_sse2.S line 191. This would casue zdotu & zdotc failures. Instead, work-around it. (Refs issue #8 #9 on github) * Modified ?axpy functions to return same netlib BLAS results when incx==0 or incy==0 (Refs issue #7 on github) * Modified ?swap functions to return same netlib BLAS results when incx==0 or incy==0 (Refs issue #6 on github) * Modified ?rot functions to return same netlib BLAS results when incx==0 or incy==0 (Refs issue #4 on github) * Detect Intel Westmere,Intel Clarkdale and Intel Arrandale to use Nehalem codes. * Fixed a typo bug about compiling dynamic ARCH library. MIPS64: * Improve daxpy performance on ICT Loongson 3A. * Supported ICT Loongson 3A CPU (Refs issue #1 on github) ====================================================================