Skip to content

Commit edbd6ba

Browse files
Ivan Kobzarevfacebook-github-bot
authored andcommitted
permute_2D_sparse_data Autograd formula (#2629)
Summary: Reland of D57625720 without dependency on torchrec Adding permute_2D_sparse_data python formula for Inductor compilation. Reviewed By: ezyang Differential Revision: D57773001
1 parent 63ca6dc commit edbd6ba

File tree

3 files changed

+39
-26
lines changed

3 files changed

+39
-26
lines changed

fbgemm_gpu/fbgemm_gpu/sparse_ops.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,43 @@ def permute_2D_sparse_data_meta(
102102
return permuted_lengths, permuted_indices, permuted_weights
103103

104104

105+
@impl_abstract("fbgemm::invert_permute")
106+
def invert_permute_abstract(permute: Tensor) -> Tensor:
107+
return torch.empty_like(permute)
108+
109+
110+
# pyre-ignore
111+
def permute_2D_sparse_data_setup_context(ctx, inputs, output):
112+
permute, lengths, values, weights, permuted_lengths_sum = inputs
113+
permuted_lengths, permuted_values, permuted_weights = output
114+
ctx.permute = permute
115+
ctx.permuted_lengths = permuted_lengths
116+
117+
118+
# pyre-ignore
119+
def permute_2D_sparse_data_backward(ctx, grad_lengths, grad_values, grad_weights):
120+
inv_permute = torch.ops.fbgemm.invert_permute(ctx.permute)
121+
permuted_grad_lengths, permuted_grad_values, permuted_grad_weights = (
122+
torch.ops.fbgemm.permute_2D_sparse_data(
123+
inv_permute, ctx.permuted_lengths, grad_values, grad_weights
124+
)
125+
)
126+
return (
127+
None,
128+
permuted_grad_lengths,
129+
permuted_grad_values,
130+
permuted_grad_weights,
131+
None,
132+
)
133+
134+
135+
torch.library.register_autograd(
136+
"fbgemm::permute_2D_sparse_data",
137+
permute_2D_sparse_data_backward,
138+
setup_context=permute_2D_sparse_data_setup_context,
139+
)
140+
141+
105142
@impl_abstract("fbgemm::permute_1D_sparse_data")
106143
def permute_1D_sparse_data_meta(
107144
permute: Tensor,

fbgemm_gpu/test/sparse/common.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,6 @@ def extend_test_class(
129129

130130
additional_decorators = {
131131
**(additional_decorators or {}),
132-
**{
133-
"test_pt2_compliant_tag_fbgemm_permute_2D_sparse_data": [
134-
# This operator has been grandfathered in. We need to fix this test failure.
135-
unittest.expectedFailure,
136-
]
137-
},
138132
}
139133

140134
# Only generate tests for PyTorch 2.2+

fbgemm_gpu/test/sparse/failures_dict.json

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,7 @@
144144
"status": "xfail"
145145
}
146146
},
147-
"fbgemm::invert_permute": {
148-
"MiscOpsTest.test_aot_dispatch_dynamic__test_invert_permute": {
149-
"comment": "",
150-
"status": "xfail"
151-
},
152-
"MiscOpsTest.test_faketensor__test_invert_permute": {
153-
"comment": "",
154-
"status": "xfail"
155-
}
156-
},
147+
"fbgemm::invert_permute": {},
157148
"fbgemm::pack_segments": {},
158149
"fbgemm::permute102_baddbmm_permute102": {
159150
"MiscOpsTest.test_aot_dispatch_dynamic__test_permute102_baddbmm_permute102": {
@@ -166,16 +157,7 @@
166157
}
167158
},
168159
"fbgemm::permute_1D_sparse_data": {},
169-
"fbgemm::permute_2D_sparse_data": {
170-
"PermuteEmbeddingsTest.test_aot_dispatch_dynamic__test_permute_embeddings": {
171-
"comment": "",
172-
"status": "xfail"
173-
},
174-
"PermuteIndicesTest.test_aot_dispatch_dynamic__test_permute_indices": {
175-
"comment": "",
176-
"status": "xfail"
177-
}
178-
},
160+
"fbgemm::permute_2D_sparse_data": {},
179161
"fbgemm::permute_sequence_embeddings": {
180162
"PermuteEmbeddingsTest.test_aot_dispatch_dynamic__test_permute_embeddings": {
181163
"comment": "",

0 commit comments

Comments
 (0)