Jeremy Kun
Jeremy Kun
I'm not sure I follow the logic here. A primitive root is not part of the semantic specification of a ring. It's extra data needed for certain ops. Moreover, it's...
As a potential alternative: we could have a pass that is responsible for populating the primitive roots, and allow ntt/intt to exist root-less until a certain lowering requires it.
> > we could have a pass that is responsible for populating the primitive roots > > Then that would be a table like `--polynomial-populate-primitive-roots=mod1,degree1,root1,mod2,degree2,root2,mod3,degree3,root3...`. > > That is quite...
I think it's safe to have a static roots file and use it as a lookup, and raise an error if the static file does not contain some needed values....
This is really a fantastic start! Thank you for being so thorough. I want to get this work checked in, so I'm trying to figure out how to tease apart...
> I think for all complex example/benchmark, there should be a cleartext version (lowered to LLVM) and a homormorphic verson (lowered to backend) so we could ensure correctness I fully...
Another subtask: we should support emitting hex values in the emitter. I would bet using `emitc` instead of manual emission would get this for free, but in the mean time...
Thinking about this some more, could we get the input model saved in an independent format, say ONNX or stablehlo, and use that as a starting point?
We have MNIST lowering now through HEIR natively. Pending a few minor cleanups, so closing this issue
The pass is meant to be run after a variety of pre-processing is applied first, corresponding to the `--mlir-to-cggi` pass pipeline. However, when I try that on these IRs I...