[libre-riscv-dev] FP transcendentals (trigonometry, root/exp/log) proposal
MitchAlsup
MitchAlsup at aol.com
Thu Aug 8 01:32:57 BST 2019
On Wednesday, August 7, 2019 at 7:27:08 PM UTC-5, lkcl wrote:
>
> [some overlap with what jacob wrote, reviewing/removing redundant replies]
>
> On Wednesday, August 7, 2019 at 11:36:17 PM UTC+1, MitchAlsup wrote:
>>
>> Is this proposal going to <eventually> include::
>>
> a) statement on required/delivered numeric accuracy per transcendental ?
>>
>
> originally thought it was just this:
> https://www.khronos.org/registry/spir-v/specs/unified1/OpenCL.ExtendedInstructionSet.100.html
>
> jacob makes and emphasises the point that these are intended to be
> *scalar* operations, for direct use in libm.
>
> b) a reserve on the OpCode space for the double precision equivalents ?
>>
>
>
> reservations, even where the case has been made clear that the impact of
> not having a reservation will cause severe detrimental ongoing impact for
> the wider RISC-V community, do not have an IANA-style contact/proposal
> procedure. i've repeatedly requested an official reservation, for this and
> many other proposals.
>
> i have not received a response.
>
> Jacob wrote:
>
> > it would probably be a good idea to split the trancendental extensions
> > into separate f32, f64, f16, and f128 extensions, since some
> implementations
> > may want to only implement them for f32 while still implementing the D
> > (f64 arithmetic) extension.
>
> oh, of course. Ztrans.F/Q/S/H is a really good point.
>
> c) a statement on <approximate> execution time ?
>>
>
> what jacob said.
>
> as a Standard, we can't limit the proposal in ways that would restrict or
> exclude implementors. accuracy on the other hand *is* important, because
> it could potentially cause catastrophic failures if an algorithm is written
> to critically rely on a given accuracy.
>
> You may have more transcendentals than necessary::
>> 1) for example all of the inverse hyperbolic can be calculated to
>> GRAPHICs numeric quality with short sequences of already existing
>> transcendentals
>> ..... ASINH( x ) = ln( x + SQRT(x**2+1) )
>>
>>
> ah, excellent - i'll add that recipe to the document. Zfhyp, separate
> extension.
>
> 2) LOG(x) = LOGP1(x) + 1.0
>> ... EXP(x) = EXPM1(x-1.0)
>>
>> That is:: LOGP1 and EXPM1 provide greater precision (especially when the
>> result is near zero) than their sister functions, and the compiler can
>> easily add the additional instruction to the instruction stream where
>> appropriate.
>>
>
> oo that's very interesting. of course. i like it.
>
> the only thing: as a Standard, some implementors may find it more
> efficient to implement LOG than LOGP1 (likewise with exp). in particular,
> if CORDIC is used (which i have just recently found, and am absolutely
> amazed by - https://en.wikipedia.org/wiki/CORDIC) i cannot find a
> LOGP1/EXPM1 version of that.
>
Both Motorola CORDIC and Intel CORDIC specified the LOGP1 and EXP1M instead
of LOG and EXP.
>
> CORDIC would be the most sensible "efficient" choice of hardware
> algorithm, simply because of the sheer overwhelming number of
> transcendentals that it covers. if there isn't a way to implement LOGP1
> using CORDIC, and one but not the other is chosen, some implementation
> options will be limited / penalised.
>
> this is one of the really tricky things about Standards. if we were doing
> a single implementation, not intended in any way to be Standards-compliant,
> we could make the decision, best optimised option, according to our
> requirements, and to hell with everyone else. take that approach with a
> Standard, and it results in... other teams creating their own Standard.
>
> having two near-identical opcodes where one may be implemented in terms of
> the other is however rather unfortunately against the principle of RISC.
> in this particular case, though, the hardware implementation actually
> matters.
>
> does anyone know if CORDIC can be adapted to do LOGP1 as well as LOG? ha,
> funny, i found this:
> http://dns.uls.cl/~ej/daa_08/Algoritmos/books/book10/9010f/jarvis.asc
>
> unfortunately, the original dr dobbs article, which has "example 4(d)" as
> a hyperlink, redirects to a 404 not found.
>
> l.
>
>
More information about the libre-riscv-dev
mailing list