Open brandonwillard opened 2 years ago
Running the test with aesara.config.optimizer_verbose==True
for a couple of minutes, I find in a log that contains about 21k lines:
rewrite MergeOptimizer
rewrite constant_folding
Are you sure most of the time is spent in the scan rewrites?
I ran the optimizer profiler for the aesara.function
step in tests.test_hmc.test_warmup
on https://github.com/brandonwillard/aehmc/commit/4248379 (i.e. config.change_flags(profile=True, profile_optimizer=True)
).
An important thing to notice about this output is that the total optimizer time is rather small compared to the actual time it takes to compile the function (not shown, but it's in the minutes).
This appears to be due to Scan.make_thunk
being called multiple times during compilation, which is—in part—due to the presence of nested Scan
s, but also apparently due to multiple compilations of the same Scan
s (e.g. I'm seeing duplicated verbose optimizer output).
It looks like we might want to address the reason why we're doing multiple Op.make_thunk
passes on the same graphs; otherwise, this repeat-compilation problem would be directly solved by https://github.com/aesara-devs/aesara/issues/777. https://github.com/aesara-devs/aesara/issues/777 would also address our inability to gather complete optimization profile statistics for nested Scan
s.
The
Scan
rewrites make liberal use ofequal_computations
, which is fairly expensive. Let's see if we can limit or—better yet—remove the need forequal_computations
.