Skip to content

Latest commit

 

History

History
63 lines (61 loc) · 3.79 KB

CHANGELOG.md

File metadata and controls

63 lines (61 loc) · 3.79 KB

Changes

The release notes, newest first. Each release's full entry, with what was checked, is in debian/changelog (the same text as crmvec.spec's), and on the releases page.

  • 0.12.2: the bfloat16 functions are correctly rounded when built by GCC 13 on AArch64 with the fp16 extension (-march=native on most current Arm cores), where GCC 13 loads __bf16 constants as binary16 (GCC bug 111867): those files are now compiled with fp16 off there; packages built for the baseline architecture were not affected. On AArch64, make check now checks every half and bfloat16 input. The CORE-MATH files are those of its master at ea7a421, with the same numeric results and exception flags as before on every input checked. sin of an infinity or a NaN now returns +NaN (it was -NaN), as CORE-MATH's does since 040ee48, so the fast mode's kernel version is 2 (only sin differs from version 1). The libraries' results are otherwise the same as 0.12.1's.
  • 0.12.1: builds on older distribution releases: crmvec.spec builds with gcc-toolset-14 on RHEL 8 and 9 and with gcc13 on openSUSE Leap 15, and its packages pass make check on AlmaLinux 8, 9 and 10, Leap 15.6 and 16.0 and Debian 13; building needs gcc 13 or newer, which make checks first; the checks work on openSUSE and with MPFR older than 4.2. The libraries are the same as 0.12.0's.
  • 0.12.0: the fast mode's AVX2 entry points bind straight to its kernels (a median 1.02 times glibc's time, from 1.09) with the same results, which are now versioned and checked (kernel version 1, unchanged since 0.10.0); crmvec-stamp records a fast-mode run as such; and docs/distros.md, what crmvec changes on 14 LTS distributions.
  • 0.11.1: CORE-MATH's current f16/cbrtf16.c, which no longer calls the C library's cbrtf, so crmvec's workaround for it is gone; the same results on every half and bfloat16 input.
  • 0.11.0: libcrpreload.so on aarch64 too; in it, a faster path for underflowing exp, exp2, exp10, erfc and tgamma (a whole FreeSurfer run costs 13% more than with glibc, not 27%); ways to turn the correctly rounded math on without changing the operating system (docs/lab.md); and CORE-MATH's current sin.c and pow.c, with the same results.
  • 0.10.0: on x86-64, a fast mode, fast/libmvec.so.1 (crmvec-run --fast), which is not correctly rounded but stays within OpenCL's accuracy bound for each function at about glibc's speed, with the same bits on every CPU with AVX2 and FMA (docs/fast-mode.md).
  • 0.9.0: libcrpreload.so, which puts CORE-MATH's correctly rounded functions behind a program's ordinary scalar libm calls (crmvec-run --libm; crpreload/README.md).
  • 0.8.0: 18 float functions on new AVX2 vector paths that compute just enough precision to decide the rounding, with the same results as before on every input and 0.22 to 0.90 of 0.7.2's time.
  • 0.7.2: a vector path for double rsqrt on x86, 2.6 times faster than CORE-MATH's scalar rsqrt on a Zen 3, and CORE-MATH's current powf.c and sin.c, with no changed result found.
  • 0.7.1: a powf.c without an undefined shift that 0.7.0's copy reaches.
  • 0.7.0: on riscv64, a build for VLEN 256, chosen at load, which is 2.3 times faster on a SpacemiT X60 (1.64 times SLEEF's time, with correctly rounded results).
  • 0.6.1: the library links and runs with glibc before 2.25, as conda-forge needs.
  • 0.6.0: fixes from a full review (among them a crash on CPUs with AVX but not AVX2), AVX-512 entry points from the portable core, and faster aarch64 floats.
  • 0.1.0 to 0.5.0: in debian/changelog.