Remove setop update cometpy#107
Open
pthomadakis wants to merge 11 commits into
Open
Conversation
…does not affect performance
…accept an optional operand `lhs` which can be used to specify the output storage of the operation that will occur during bufferization, similar to linalg's paradigm. For example, an expression C = Ax + Bx would previously work as: A' = Ax, B' = Bx, C = A' + B'. Thus, each sub-expression would cause new allocations (A', B' tensors). In contrast, by being able to optionally specify the output of each operation, we can store the result of the LHS of an expression into the output storage and accumulate the rest, i.e. C = Ax, B' = Bx, C = C + B'. Thus, we can remove some of the intermediate allocations. Note that, we could eventually also avoid the allocation of B' if we change operations to accumulate into C (C[i,j] += op) instead of storing (C[i,j] = op) as we do in matmul 2. Fixed fusion + parallel, but only without applying dimension reduction 3. Made dimension reduction optional
…e of the operands in a ComputeOp are also found in the LHS
…the output (lhs) instead of creating new allocations. 2. Fixed issue with opt-dense-transpose not lowering properly when its result is returend from a function. 3. Added significant more functionality for cometpy and make sure we avoid unnecessary copies.
1. Fixed small incosistenices in output formats 2. Made `flags` argument of `comet.compile`optional 3. Added tests/exampes for new python constructs supported 4. Added "in_place" and "return" versions of several tests that will store results in an input argument or return them normally.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR touches/fixes the following issues:
ta.setoperation has been removed. In its place, each of the tensor arithmetic operations (add,sub,mul,eltwise_mul,transpose) accept an optional argument that defines thelhswhere the result of this operation should be stored. Thislhswill be the same value that will be returned from the result of these operations. If not provided, the lowering passes will automatically generate an empty tensor where the results will be stored.This can simplify analysis and rewrites significantly as all the related information can be retrieved from the op itself.
This PR also introduces a new optimization:
In a compound expression, e.g., D = A + B + C, the old version would create a new allocation for the intermediate result, i.e.,
AB = A+B,D = AB + C. In contrast, we now store the resultA+BinD,D=A+Band then addC,D = D + Cfor operations that are safe to do this.