aemcmc
, aehmc
. Time for a good clean.
RandomStream
seeding ones then
MergeFeature
/MergeOptimizer
updates, I'm brought back to a complete reassessment of the merging process in Aesara
FunctionGraph
?
Apply.__[init|new]__
Op
and inputs-based weakref.WeakKeyDictionary
caching in [Variable|Apply].__[init|new]__
Variable
/Apply
-based caching might be the easiest and most "amortized" approach
dict
lookup + storage cost, those are generally very cheap for the relevant object types (i.e. Variable
s and Op
s)
Op.make_node
call
Op.make_node
construction plus the caching cost
Op.make_node
can easily be much larger than the cache lookup cost, there's the solid potential for a cost reduction with this approach
Op.make_node
calls that would be removed
Op
are combined again later on within the same session, a new unique representative term is constructed and cached
Variable
/Apply
node is no longer being used in a given session (i.e. isn't in a user-owned graph object or something), then the object will be garbage collected and the weak reference invalidated
FunctionGraph
would need to be change so that Apply
nodes are no longer updated in-place, which we've already discussed and prototyped
Apply
nodes to have a usable record of all equivalent graphs under rewrites
Op.make_node
calls would be cached and the same output returned?