tahamajs/SP / materials /external /Swin-Transformer /kernels /window_process /swin_window_process.cpp
| /* | |
| * Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| at::Tensor roll_and_window_partition_forward_cuda( | |
| at::Tensor & input, | |
| //at::Tensor & output, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size); | |
| at::Tensor roll_and_window_partition_backward_cuda( | |
| at::Tensor & grad_in, | |
| //at::Tensor & grad_out, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size); | |
| at::Tensor window_merge_and_roll_forward_cuda( | |
| at::Tensor & input, | |
| //at::Tensor & output, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size); | |
| at::Tensor window_merge_and_roll_backward_cuda( | |
| at::Tensor & grad_in, | |
| //at::Tensor & grad_out, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size); | |
| at::Tensor roll_and_window_partition_forward( | |
| at::Tensor & input, | |
| //at::Tensor & output, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size){ | |
| CHECK_INPUT(input); | |
| return roll_and_window_partition_forward_cuda(input, B, H, W, C, shift_size, window_size); | |
| } | |
| at::Tensor roll_and_window_partition_backward( | |
| at::Tensor & grad_in, | |
| //at::Tensor & grad_out, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size){ | |
| CHECK_INPUT(grad_in); | |
| return roll_and_window_partition_backward_cuda(grad_in, B, H, W, C, shift_size, window_size); | |
| } | |
| at::Tensor window_merge_and_roll_forward( | |
| at::Tensor & input, | |
| //at::Tensor & output, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size){ | |
| CHECK_INPUT(input); | |
| return window_merge_and_roll_forward_cuda(input, B, H, W, C, shift_size, window_size); | |
| } | |
| at::Tensor window_merge_and_roll_backward( | |
| at::Tensor & grad_in, | |
| //at::Tensor & grad_out, | |
| const int B, | |
| const int H, | |
| const int W, | |
| const int C, | |
| const int shift_size, | |
| const int window_size){ | |
| CHECK_INPUT(grad_in); | |
| return window_merge_and_roll_backward_cuda(grad_in, B, H, W, C, shift_size, window_size); | |
| } | |
| PYBIND11_MODULE(TORCH_EXTENSION_NAME, m) { | |
| m.def("roll_and_window_partition_forward", &roll_and_window_partition_forward, "torch.roll and window_partition."); | |
| m.def("roll_and_window_partition_backward", &roll_and_window_partition_backward, "torch.roll and window_partition."); | |
| m.def("window_merge_and_roll_forward", &window_merge_and_roll_forward, "window merge and torch.roll."); | |
| m.def("window_merge_and_roll_backward", &window_merge_and_roll_backward, "window merge and torch.roll."); | |
| } |
Xet Storage Details
- Size:
- 3.7 kB
- Xet hash:
- f3c1809f9e93a18d9dacae5fbaf128ae86ae8fe1a1e9e15e2ec32e900262439b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.