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
The current lowering implementation does not support iteration graphs where both a summation variable dominates a free variable and the output is sparse (meaning we must merge with it). Sparse matrix multiplication where both inputs follow the same direction (e.g. CSR or CSC) suffers from this.
The issue with this is that the dominating summation loop causes locations in the output to be visited multiple times. If the output is sparse this means we have to do a (disjunctive) merge with the output. For assembly this means merging the operand index vectors into the result.
Another solution is to use a random access data structure that we can accumulate values into. This is sometimes called a workspace and other times a sparse accumulator. This is phrased as vertex splitting in the iteration graph.
The text was updated successfully, but these errors were encountered:
The current lowering implementation does not support iteration graphs where both a summation variable dominates a free variable and the output is sparse (meaning we must merge with it). Sparse matrix multiplication where both inputs follow the same direction (e.g. CSR or CSC) suffers from this.
The issue with this is that the dominating summation loop causes locations in the output to be visited multiple times. If the output is sparse this means we have to do a (disjunctive) merge with the output. For assembly this means merging the operand index vectors into the result.
Another solution is to use a random access data structure that we can accumulate values into. This is sometimes called a workspace and other times a sparse accumulator. This is phrased as vertex splitting in the iteration graph.
The text was updated successfully, but these errors were encountered: