riscv64: Add RISC-V target
[platform/upstream/openblas.git] / Changelog.txt
index 807c5ff..fbc10bb 100644 (file)
 OpenBLAS ChangeLog
 ====================================================================
+Version 0.3.21
+ 07-Aug-2022
+
+general:
+ - Updated the included LAPACK to Reference-LAPACK release 3.10.1
+ - when no Fortran compiler is available, OpenBLAS builds will now automatically
+   build LAPACK from an f2c-converted copy of LAPACK 3.9.0 unless the NO_LAPACK option
+   is specified
+ - similarly added C versions of the BLAS and CBLAS tests
+ - enabled building of the ReLAPACK GEMMT kernels when ReLAPACK is built
+ - function LAPACKE_lsame is now annotated with the GCC attribute "const" to aid static analyzers
+ - added USE_TLS to the list of options reported by the openblas_get_config() function
+ - CMAKE builds now support the BUILD_TESTING keyword (to disable the LAPACK testsuite) of Reference-LAPACK
+ - fixed CMAKE builds of the laswp_ncopy and neg_tcopy kernels
+ - removed the build system requirements for PERL (while keeping the original perl scripts as backup)
+ - handle building and running OpenBLAS on systems that report zero available cpu cores
+ - added SYMBOLPREFIX/SYMBOLSUFFIX handling for LAPACK 3.10.0 functions added in 0.3.20
+ - fixed linking of the utests on QNX
+ - Added support for compilation with the Intel ifx compiler
+ - Added support for compilation with the Fujitsu FCC compiler for Fugaku
+ - Added support for compilation with the Cray C and Fortran compilers
+ - reverted OpenMP threadpool behaviour in the exec_blas call to its state before 0.3.11, that is
+   the threadpool will no longer grow or shrink on demand as the overhead for this is too big at least with
+   GNU OpenMP. The adaptive behaviour introduced in 0.3.11 can still be requested at runtime by setting
+   the environment variable OMP_ADAPTIVE
+ - worked around spurious STFSM/CTFSM errors reported by the LAPACK testsuite
+
+x86_64:
+ - fixed determination of compiler support for AVX512 and removed the 0.3.19
+   workaround for building SKYLAKEX kernels on Sandybridge hardware
+ - fixed compilation for the SKYLAKEX target with gcc 6
+ - fixed compilation of the CooperLake SBGEMM kernel with LLVM
+ - fixed compilation of the SkyLakeX small matrix GEMM kernels with LLVM or ICC
+ - fixed compilation of some BFLOAT16 kernels with CMAKE
+ - added support for the Zhaoxin/Centaur KH40000 cpu
+ - fixed a potential crash in the ZSYMV kernel used for all targets except generic
+ - fixed gmake compilation for DYNAMIC_ARCH with a DYNAMIC_LIST including ATOM
+ - fixed compilation of LAPACKE with the INTEGER64 option on Windows
+ - added support for cross-compiling to individual Intel or AMD targets using CMAKE
+   (previously only CORE2 supported, added targets are ATOM, PRESCOTT, NEHALEM, SANDYBRIDGE,
+   HASWELL,SKYLAKEX, COOPERLAKE, SAPPHIRERAPIDS, OPTERON, BARCELONA, BULLDOZER, PILEDRIVER,
+   STEAMROLLER,EXCAVATOR, ZEN)
+
+SPARC:
+ - worked around an overflow error in the DNRM2 kernel
+
+POWER:
+ - worked around an overflow error in the POWER6 DNRM2 kernel
+ - fixed compilation on PPC440
+ - fixed a performance regression in the level1 BLAS on POWER10
+ - fixed the POWER10 ZGEMM kernel
+ - fixed singlethreaded builds for POWER10
+ - fixed compilation of the POWER10 DGEMV kernel with older gcc versions
+ - enabled compilation of the BFLOAT16 kernels by default
+ - enabled the small matrix kernels by default for DYNAMIC_ARCH builds
+ - added a workaround for a miscompilation of the CDOT and ZDOT kernels by GCC 12
+
+- RISCV:
+ - fixed cpu autodetection logic
+
+ARMV8:
+ - added an SBGEMM kernel for Neoverse N2
+ - worked around an overflow error in the DNRM2 kernel used on M1, NeoverseN1, ThunderX2T99
+ - added support for ARM64 systems running MS Windows
+ - added support for cross-compiling to the GENERIC ARMV8 target under CMAKE (Windows/MSVC)
+ - fixed a performance regression in the generic ARMV8 DGEMM kernel introduced in 0.3.19
+ - added initial support for the Apple M1 cpu under Linux
+ - added initial support for the Phytium FT2000 cpu
+ - added initial support for the Cortex A510, A710, X1 and X2 cpu
+ - fixed an accidental mixup of cpu identifiers in the autodetection code introduced in 0.3.20
+ - fixed linking of Apple M1 builds on macOS 12 and later with recent XCode
+ - made Neoverse N2 available in DYNAMIC_ARCH builds
+
+MIPS,MIPS64:
+ - worked around an overflow error in the DNRM2 kernel
+
+LOONGARCH64:
+ - worked around an overflow error in the DNRM2 kernel
+ - added preliminary support for the LOONGSON2K1000 cpu
+ - added DYNAMIC_ARCH support
+
+====================================================================
+Version 0.3.20
+ 20-Feb-2022
+
+general:
+ - some code cleanup, with added casts etc.
+ - fixed obtaining the cpu count with OpenMP and OMP_PROC_BIND unset
+ - fixed pivot index calculation by ?LASWP for negative increments other than one
+ - fixed input argument check in LAPACK ? GEQRT2
+ - improved the check for a Fortran compiler in CMAKE builds
+ - disabled building OpenBLAS' optimized versions of LAPACK complex SPMV,SPR,SYMV,SYR with NO_LAPACK=1
+ - fixed building of LAPACK on certain distributed filesystems with parallel gmake
+ - fixed building the shared library on MacOS with classic flang
+
+x86_64:
+ - fixed cross-compilation with CMAKE for CORE2 target
+ - fixed miscompilation of AVX512 code in DYNAMIC_ARCH builds
+ - added support for the "incidental" AVX512 hardware in Alder Lake when enabled in BIOS
+
+E2K:
+ - add new architecture (Russian Elbrus E2000 family)
+
+SPARC:
+ - fix IMIN/IMAX
+
+ARMV8:
+ - added SVE-enabled CGEMM and ZGEMM kernels for ARMV8SVE and A64FX
+ - added support for Neoverse N2 and V1 cpus
+
+MIPS,MIPS64:
+ - fixed autodetection of MSA capability
+
+LOONGARCH64:
+ - added an optimized DGEMM kernel
+
+====================================================================
+Version 0.3.19
+ 19-Dec-2021
+ general:
+ - reverted unsafe TRSV/ZRSV optimizations introduced in 0.3.16
+ - fixed a potential thread race in the thread buffer reallocation routines
+   that were introduced in 0.3.18
+ - fixed miscounting of thread pool size on Linux with OMP_PROC_BIND=TRUE
+ - fixed CBLAS interfaces for CSROT/ZSROT and CROTG/ZROTG
+ - made automatic library suffix for CMAKE builds with INTERFACE64 available
+   to CBLAS-only builds
+
+x86_64:
+ - DYNAMIC_ARCH builds now fall back to the cpu with most similar capabilities
+   when an unknown CPUID is encountered, instead of defaulting to Prescott
+ - added cpu detection for Intel Alder Lake
+ - added cpu detection for Intel Sapphire Rapids
+ - added an optimized SBGEMM kernel for Sapphire Rapids
+ - fixed DYNAMIC_ARCH builds on OSX with CMAKE
+ - worked around DYNAMIC_ARCH builds made on Sandybridge failing on SkylakeX
+ - fixed missing thread initialization for static builds on Windows/MSVC
+ - fixed an excessive read in ZSYMV
+
+POWER:
+ - added support for POWER10 in big-endian mode
+ - added support for building with CMAKE
+ - added optimized SGEMM and DGEMM kernels for small matrix sizes
+
+ARMV8:
+ - added basic support and cputype detection for Fujitsu A64FX
+ - added a generic ARMV8SVE target  
+ - added SVE-enabled SGEMM and DGEMM kernels for ARMV8SVE and A64FX
+ - added optimized CGEMM and ZGEMM kernels for Cortex A53 and A55 cpus
+ - fixed cpuid detection for Apple M1 and improved performance
+ - improved compiler flag setting in CMAKE builds
+
+RISCV64:
+ - fixed improper initialization in CSCAL/ZSCAL for strided access patterns
+
+MIPS:
+ - added a GENERIC target for MIPS32
+ - added support for cross-compiling to MIPS32 on x86_64 using CMAKE
+
+MIPS64:
+ - fixed misdetection of MSA capability
+
+====================================================================
+Version 0.3.18
+ 02-Oct-2021
+
+general:
+ - when the build-time number of preconfigured threads is exceeded
+   at runtime (typically by an external program calling BLAS functions
+   from a larger number of threads in parallel), OpenBLAS will now 
+   allocate an auxiliary control structure for up to 512 additional
+   threads instead of aborting
+ - added support for Loongson's LoongArch64 cpu architecture
+ - fixed building OpenBLAS with CMAKE and -DBUILD_BFLOAT16=ON
+ - added support for building OpenBLAS as a CMAKE subproject
+ - added support for building for Windows/ARM64 targets with clang
+ - improved support for building with the IBM xlf compiler
+ - imported Reference-LAPACK PR 625 (out-of-bounds reads in ?LARRV)
+ - imported Reference-LAPACK PR 597 for testsuite compatibility with
+   LLVM's libomp
+
+x86_64:
+ - added SkylakeX S/DGEMM kernels for small problem sizes (M*N*K<=1000000)
+ - added optimized SBGEMM for Intel Cooper Lake
+ - reinstated the performance patch for AVX512 SGEMV_T with a proper fix
+ - added a workaround for a gcc11 tree-vectorizer bug that caused spurious
+   failures in the test programs for complex BLAS3 when compiling at -O3
+   (the default for cmake "release" builds)
+ - added support for runtime cpu count detection under Haiku OS
+ - worked around a long-standing miscompilation issue of the Haswell DGEMV_T
+   kernel with gcc that could produce NaN output in some corner cases
+
+POWER:
+ - improved performance of DASUM on POWER10
+
+ARMV8:
+ - fixed crashes (use of reserved register x18) on Apple M1 under OSX
+ - fixed building with gcc releases earlier than 5.1
+
+MIPS:
+ - fixed building under BSD
+
+MIPS64:
+ - fixed building under BSD
+
+====================================================================
+Version 0.3.17
+ 15-Jul-2021
+
+common:
+ - reverted the optimization of SGEMV_N/DGEMV_N for small input sizes
+   and consecutive arguments as it led to stack overflows on x86_64
+   with some operating systems (notably OSX and Windows)
+ x86_64:
+  - reverted the performance patch for SGEMV_T on AVX512 as it caused
+    wrong results in some applications
+    
+ SPARC:
+  - fixed compilation with compilers other than gcc
+====================================================================
+Version 0.3.16
+ 11-Jul-2021
+
+common:
+ - drastically reduced the stack size requirements for running the LAPACK
+   testsuite (Reference-LAPACK PR 553)
+ - fixed spurious test failures in the LAPACK testsuite (Reference-LAPACK
+   PR 564)
+ - expressly setting DYNAMIC_ARCH=0 no longer enables dynamic_arch mode 
+ - improved performance of xGER, xSPR, xSPR2, xSYR, xSYR2, xTRSV, SGEMV_N 
+   and DGEMV_N, for small input sizes and consecutive arguments
+ - improved performance of xGETRF, xPORTF and xPOTRI for small input sizes
+   by disabling multithreading
+ - fixed installing with BSD versions of the "install" utility
+
+RISCV:
+ - fixed the implementation of xIMIN
+ - improved the performance of DSDOT
+ - fixed linking of the tests on C910V with current vendor gcc
+
+POWER:
+- fixed SBGEMM computation for some odd value inputs
+- fixed compilation for PPCG4, PPC970, POWER3, POWER4 and POWER5
+
+x86_64:
+ - improved performance of SGEMV_N and SGEMV_T for small N on AVX512-capable cpus
+ - worked around a miscompilation of ZGEMM/ZTRMM on Sandybridge with old gcc
+   versions
+ - fixed compilation with MS Visual Studio versions older than 2017
+ - fixed macro name collision with winnt.h from the latest Win10 SDK
+ - added cpu type autodetection for Intel Ice Lake SP
+ - fixed cpu type autodetection for Intel Tiger Lake
+ - added cpu type autodetection for recent Centaur/Zhaoxin models
+ - fixed compilation with musl libc
+
+ARM64:
+- fixed compilation with gcc/gfortran on the Apple M1
+- fixed linking of the tests on FreeBSD
+- fixed missing restore of a register in the recently rewritten DNRM2 kernel
+  for ThunderX2 and Neoverse N1 that could cause spurious failures in e.g.
+  DGEEV
+- added compiler optimization flags for the EMAG8180
+- added initial support for Cortex A55
+
+ARM:
+- fixed linking of the tests on FreeBSD
+
+====================================================================
+Version 0.3.15
+  2-May-2021
+
+common:
+ - imported improvements and bugfixes from Reference-LAPACK 3.9.1
+ - imported LAPACKE interface fixes from Reference-LAPACK PRs 534 + 537
+ - fixed a problem in the cpu detection of 0.3.14 that prevented cross-compilation
+ - fixed a sequence problem in the generation of softlinks to the library in GMAKE
+
+RISC V:
+ - fixed compilation on RISCV (missing entry in getarch)
+ - fixed a potential division by zero in CROTG and ZROTG
+
+POWER:
+ - fixed LAPACK testsuite failures seen with the NVIDIA HPC compiler
+ - improved CGEMM, DGEMM and ZGEMM performance on POWER10
+ - added an optimized ZGEMV kernel for POWER10
+ - fixed a potential division by zero in CROTG and ZROTG
+
+x86_64:
+ - added support for Intel Control-flow Enforcement Technology (CET)
+ - reverted the DOMATCOPY_RT code to the generic C version
+ - fixed a bug in the AVX512 SGEMM kernel introduced in 0.3.14
+ - fixed misapplication of -msse flag to non-SSE cpus in DYNAMIC_ARCH
+ - added support for compilation of the benchmarks on older OSX versions
+ - fix propagation of the NO_AVX512 option in CMAKE builds
+ - fix compilation of the AVX512 SGEMM kernel with clang-cl on Windows
+ - fixed compilation of the CTESTs with INTERFACE64=1 (random faults on OSX)
+ - corrected the Haswell DROT kernel to require AVX2/FMA3 rather than AVX512
+
+ARM:
+ - fixed a potential division by zero in CROTG and ZROTG
+ - fixed a potential overflow in IMATCOPY/ZIMATCOPY and the CTESTs
+
+ARM64:
+ - fixed spurious reads outside the array in the SGEMM tcopy macro
+ - fixed a potential division by zero in CROTG and ZROTG
+ - fixed a segmentation fault in DYNAMIC_ARCH builds (reappeared in 0.3.14)
+
+MIPS
+ - fixed a potential division by zero in CROTG and ZROTG
+ - fixed a potential overflow in IMATCOPY/ZIMATCOPY and the CTESTs
+
+MIPS64:
+ - fixed a potential division by zero in CROTG and ZROTG
+
+SPARC:
+ - fixed a potential division by zero in CROTG and ZROTG
+
+====================================================================
+Version 0.3.14
+ 17-Mar-2021
+ common:
+       * Fixed a race condition on thread shutdown in non-OpenMP builds
+       * Fixed custom BUFFERSIZE option getting ignored in gmake builds
+       * Fixed CMAKE compilation of the TRMM kernels for GENERIC platforms
+       * Added CBLAS interfaces for CROTG, ZROTG, CSROT and ZDROT
+       * Improved performance of OMATCOPY_RT across all platforms
+       * Changed perl scripts to use env instead of a hardcoded /usr/bin/perl
+       * Fixed potential misreading of the GCC compiler version in the build scripts
+       * Fixed convergence problems in LAPACK complex GGEV/GGES (Reference-LAPACK #477)
+       * Reduced the stacksize requirements for running the LAPACK testsuite (Reference-LAPACK #335)
+
+ RISCV:
+       * Fixed compilation on RISCV (missing entry in getarch)
+       
+ POWER:
+       * Fixed compilation for DYNAMIC_ARCH with clang and with old gcc versions
+       * Added support for compilation on FreeBSD/ppc64le
+       * Added optimized POWER10 kernels for SSCAL, DSCAL, CSCAL, ZSCAL
+       * Added optimized POWER10 kernels for SROT, DROT, CDOT, SASUM, DASUM
+       * Improved SSWAP, DSWAP, CSWAP, ZSWAP performance on POWER10
+       * Improved SCOPY and CCOPY performance on POWER10
+       * Improved SGEMM and DGEMM performance on POWER10
+       * Added support for compilation with the NVIDIA HPC compiler
+
+ x86_64:
+       * Added an optimized bfloat16 GEMM kernel for Cooperlake
+       * Added CPUID autodetection for Intel Rocket Lake and Tiger Lake cpus
+       * Improved the performance of SASUM,DASUM,SROT,DROT on AMD Ryzen cpus
+       * Added support for compilation with the NAG Fortran compiler
+       * Fixed recognition of the AMD AOCC compiler
+       * Fixed compilation for DYNAMIC_ARCH with clang on Windows
+       * Added support for running the BLAS/CBLAS tests on Windows
+       * Fixed signatures of the tls callback functions for Windows x64
+       * Fixed various issues with fma intrinsics support handling 
+
+ ARM:
+       * Added support for embedded Cortex M targets via a new option EMBEDDED
+
+ ARMV8:
+       * Fixed the THUNDERX2T99 and NEOVERSEN1 DNRM2/ZNRM2 kernels for inputs with Inf
+       * Added support for the DYNAMIC_LIST option
+       * Added support for compilation with the NVIDIA HPC compiler
+       * Added support for compiling with the NAG Fortran compiler
+
+====================================================================
 Version 0.3.13
  12-Dec-2020
  
  common:
        * Added a generic bfloat16 SBGEMV kernel
        * Fixed a potentially severe memory leak after fork in OpenMP builds
-         that was introduces in 0.3.12
+         that was introduced in 0.3.12
        * Added detection of the Fujitsu Fortran compiler
        * Added detection of the (e)gfortran compiler on OpenBSD
        * Added support for overriding the default name of the library independently