(no commit message)
authorlkcl <lkcl@web>
Fri, 9 Aug 2019 08:15:42 +0000 (09:15 +0100)
committerIkiWiki <ikiwiki.info>
Fri, 9 Aug 2019 08:15:42 +0000 (09:15 +0100)
zfpacc_proposal.mdwn

index 9deb462c151eedb57c0f2f852cc5493de47e498c..114963d0db4622b02d97af2354ddcad07bca3169 100644 (file)
@@ -1,6 +1,7 @@
 # FP Accuracy proposal
 
 TODO: complete writeup
+
 * <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2019-August/002400.html>
 * <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/2019-August/002412.html>
 
@@ -68,3 +69,39 @@ TODO: reduced accuracy
     sequences), while allowing portable code to execute discovery
     sequences to detect support for alternative accuracy modes.
 
+# Dynamic accuracy CSR
+
+maybe a solution would be to add an extra field to the fp control csr
+to allow selecting one of several accurate or fast modes:
+
+- machine-learning-mode: fast as possible
+  (maybe need additional requirements such as monotonicity for atanh?)
+- GPU-mode: accurate to within a few ULP
+  (see Vulkan, OpenGL, and OpenCL specs for accuracy guidelines)
+- almost-accurate-mode: accurate to <1 ULP
+     (would 0.51 or some other value be better?)
+- fully-accurate-mode: correctly rounded in all cases
+- maybe more modes?
+
+Question: should better accuracy than is requested be permitted? Example:
+Ahmdahl-370 issues.
+
+Comments:
+
+    Yes, embedded systems typically can do with 12, 16 or 32 bit
+    accuracy. Rarely does it require 64 bits. But the idea of making
+    a low power 32 bit FPU/DSP that can accommodate 64 bits is already
+    being done in other designs such as PIC etc I believe. For embedded
+    graphics 16 bit is more than adequate. In fact, Cornell had a very
+    innovative 18-bit floating point format described here (useful for
+    FPGA designs with 18-bit DSPs):
+
+    <https://people.ece.cornell.edu/land/courses/ece5760/FloatingPoint/index.html>
+
+    A very interesting GPU using the 18-bit FPU is also described here:
+
+    <https://people.ece.cornell.edu/land/courses/ece5760/FinalProjects/f2008/ap328_sjp45/website/hardwaredesign.html>
+
+    There are also 8 and 9-bit floating point formats that could be useful
+
+    <https://en.wikipedia.org/wiki/Minifloat>