You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
1.5M calls to merge_node taking 18% of the total time, about 40% of this time is spent in indexof and another 14% is spent in N.of_nat. We could presumably make this a lot more efficient by storing (a) an efficient map of N to nodes (based on FMapPositive), (b) the total number of nodes present (as an N), and (c) an trie mapping ops (more generally nodes) to indices in the dag. In light of #1193, we will probably also want to store a thunked assoc list mapping description strings to lists of dag indices. We may also need to associate with this data a proof that it all lines up; if we need to carry this around it should either live in dag_ok or it should be encoded as a boolean equality (or perhaps True -> check_good ... = true to avoid vm_compute and native_compute eagerly evaluating the proofs).
The text was updated successfully, but these errors were encountered:
I would upload perf record data for p434, but perf.data is almost 9GB, and the output of perf script is 158 GB, and trying to make a flame graph OOMs (see brendangregg/FlameGraph#282).
We should consider how to get better asymptotics on the equivalence checker, given that we now have invocations that take nearly an hour to run.
For example, in p448-mul-callgrind-with-source.7z.zip, we have
1.5M calls to merge_node taking 18% of the total time, about 40% of this time is spent in
indexof
and another 14% is spent inN.of_nat
. We could presumably make this a lot more efficient by storing (a) an efficient map ofN
to nodes (based onFMapPositive
), (b) the total number of nodes present (as anN
), and (c) an trie mappingop
s (more generally nodes) to indices in the dag. In light of #1193, we will probably also want to store a thunked assoc list mapping description strings to lists of dag indices. We may also need to associate with this data a proof that it all lines up; if we need to carry this around it should either live indag_ok
or it should be encoded as a boolean equality (or perhapsTrue -> check_good ... = true
to avoidvm_compute
andnative_compute
eagerly evaluating the proofs).The text was updated successfully, but these errors were encountered: