New API for collecting performance model data.
This adds a method *get_modeled_performance* to the `BoundExpression` class, which does a performance model evaluation over the expression. This lets us write code such as: op = bind(lpot_source, sym.S(knl, sigma_sym)) perf_model = op.get_modeled_performance(queue, sigma=sigma) A dictionary that is returned maps layer potential instructions to their corresponding modeled costs. The QBXLayerPotentialSource is extended to include a *performance_model* attribute, which is an instance of PerformanceModel. This lets us customize the performance model. Currently, all the non layer potential instructions in the bound expression are still evaluated to make sure that the shapes/data types all are as expected. In principle, we could do symbolic execution of those instructions instead, though that would require a bit of analysis of the expression.
Loading
Please register or sign in to comment