Folks:
I have implemented a generalized quire for all the static number systems supported in Universal. Each number system gets an fdp() operator that will configure a quire specialized for that number system.
The basic pattern is shown here:
There is a new quire_traits<> class that will generate the quire configuration and can be queried.
The pattern of use is generalized, so we can now write reproducible linear algebra while still being parameterized by arithmetic type. This was the key drawback of the first quire implementation, which was custom to IEEE-754 and posits.
Here is an example of the generic regression tests to walk different bit patterns through the quire:
I would love for interested parties to hammer the API and see if it is missing anything. To make it a bit easier than modifying Eigen to dispatch reproducible operators, there is a lighter-weight engine, MTL5 (
https://github.com/stillwater-sc/mtl5), specifically designed to deliver mixed-precision optimizations for linear algebra operators. MTL5 also supports custom hardware acceleration by RISC-V processors that implement custom number systems.
Looking forward to operational feedback, especially generalized reproducible linear algebra operators.
Theo