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
After the PR on faster toposort, we can continue to make it faster. In the benchmark, the gpu_elemwise_inplace optimization was still the slowest optimization. This is due to the Supervisor that trigger the building of the complex datastructure needed for toposort and cycle detection. But we don't need that strucuture just for the Supervisor.
merge the Supervisor class inside the DestroyHandler. Mostly, add the Supervisor init parameter to DestroyHandler. Then merge the Supervisor.validate() inside the DH.validate. Then make sure all works.
In the case of faster topo and when the structure isn't build, we can speed up the computation by not building the structure. So in that case, replace the check by this new check that is a subset of building the structure. First, don't test the fgraph.outputs, as they will always be True with the new check.
Then, remove the need for building the complex data structure. The new check will start from the protected variables. Check there clients and all there views. If there is one clients of those variables that is a destroy, the check should fail.
The text was updated successfully, but these errors were encountered:
Modify destroyhandler to add a new fgraph.has_destroyers(list) (as fgraph.destroyers) that will return True is any of the variable in the list have a destroyers. (the old Superviser.validate check without the raise)
Make that new fct do the Superviser.validate check when self.algo = cycle.
Make sure all tests still pass
Modify the new method to be faster (don't build the big data structure) when the algo is fast.
After the PR on faster toposort, we can continue to make it faster. In the benchmark, the gpu_elemwise_inplace optimization was still the slowest optimization. This is due to the Supervisor that trigger the building of the complex datastructure needed for toposort and cycle detection. But we don't need that strucuture just for the Supervisor.
The text was updated successfully, but these errors were encountered: