owl
owl copied to clipboard
Refine Owl type signatures
Current type signatures deviate from owl's original design rationale, and blur the functional boundary of various modules. We need to refile the type signature to better reflect owl's architecture.
Calvin has done an excellent job of separating the Mat and Linalg aliases from the Ndarray modules. I think perhaps one thing that could be improved is the positioning/naming of the owl_algodiff_primal_ops
module.
The original design is that CGraph functor stack takes Ndarray as input and produces the CGraph_engine
type, and the Algdiff
functor can take either Ndarray or CGraph Engine as input. Now after the change, a CGraph functor takes owl_algodiff_primal_ops
module as input , and the Algdiff
functor can take either owl_algodiff_primal_ops
or CGraph engine as input, whereas owl_algodiff_primal_ops
is a wrapper that aggregates Ndarray/Mat/Linalg functions.
According to this structure, I'm thinking that owl_algodiff_primal_ops
as a standalone module could be separated out from Algodiff
and renamed, in both owl-core
and owl-base
.