-
Notifications
You must be signed in to change notification settings - Fork 685
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add FFT operators #10027
Merged
levi131
merged 190 commits into
Oneflow-Inc:master
from
MarioLulab:luqi/dev_fft_based_complex
May 17, 2023
Merged
Add FFT operators #10027
levi131
merged 190 commits into
Oneflow-Inc:master
from
MarioLulab:luqi/dev_fft_based_complex
May 17, 2023
Conversation
This file contains 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
…r_and_complex_attr
daquexian
reviewed
May 11, 2023
python/oneflow/test_utils/automated_test_util/torch_flow_dual_object.py
Outdated
Show resolved
Hide resolved
python/oneflow/test_utils/automated_test_util/torch_flow_dual_object.py
Outdated
Show resolved
Hide resolved
MarioLulab
requested review from
oneflow-ci-bot
and removed request for
oneflow-ci-bot
May 15, 2023 03:53
levi131
approved these changes
May 16, 2023
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
目前多卡测试发现随机挂问题,测试中采用skip_unless_1n1d策略。多卡随机挂问题等定位到之后另外提pr修复。
daquexian
approved these changes
May 17, 2023
use pass by value to optimize ShapeView passing Co-authored-by: daquexian <daquexian566@gmail.com>
This was referenced May 19, 2023
L-Xiafeng
pushed a commit
that referenced
this pull request
Jun 26, 2023
### Original requirements **Autotest**: We found that the previous testing of operators supporting complex tensor was not complete. We decided to reuse the real tensor operator tests to ensure completeness. Since complex tensor tests are supported in the `autotest` module from pr (#10027) , in this pr we applied the autotest module to the tests of complex tensor operators already available in Oneflow **Fix**: In addition, the autograd rules for some previous operators of complex numbers might not conform to the convention of ["Conjugate Wirtinger Derivative"](https://en.wikipedia.org/wiki/Wirtinger_derivatives). We have fixed these bugs in this pr at the same time. #### Main Works **Applying `autotest` module on existing operators that have already support complex tensor:** `Complex and Real Behave the Same Way`: means we don't need to add conjugate operation in op grad. Because regardless of whether the input data type involved in the operation is real or complex, the gradient result using the winterger derivative is the same as the real derivative rule, `Grad Not Supported in OF`: means the grad of this op is not supported in oneflow - broadcast_elementwise_binary | Op | complex type | Backend | Using autotest | conjugate Wirtinger derivative | |:-----:|:-------------:|:------:|:------:|:------:| | Add | cp64, cp128 | CPU, CUDA | DONE | Complex and Real Behave the Same Way | | Mul | cp64, cp128 | CPU, CUDA | DONE | DONE | | Sub | cp64, cp128 | CPU, CUDA | DONE | Complex and Real Behave the Same Way | | Equal | cp64, cp128 | CPU, CUDA | DONE | Complex and Real Behave the Same Way | | NotEqual | cp64, cp128 | CPU, CUDA | DONE | Grad Not Supported in OF | - broadcast_elementwise_unary | Op | complex type | Backend | Using autotest | conjugate Wirtinger derivative | |:----------:|:-------------:|:------:|:------:|:------:| | Cast | cp64, cp128 | CPU, CUDA | DONE | Complex and Real Behave the Same Way | - other exisiting operations | Op | complex type | Backend | Using autotest | conjugate Wirtinger derivative | |:----------:|:-------------:|:------:|:------:|:------:| | constant_pad | cp64, cp128 | CPU, CUDA | Done | Complex and Real Behave the Same Way | | reduce_sum | cp64, cp128 | CPU, CUDA | TO-DO | Complex and Real Behave the Same Way | ## 注意: 复数基础设施建设系列 pr: 1. 使用 primitive 来实现 conj, real 等常见复数算子: #10281 2. 将现有支持复数数据类型的算子测例迁移到 autotest 模块中,以使复数算子复用实数算子的测试用例:#10284 3. 继续拓展支持复数数据类型的算子,比如 matmul, sqrt, div 等:#10269 依赖关系: 本 pr 基于:[pr1](https://github.com/Oneflow-Inc/oneflow/pull/10281),需要在 merge [pr1](#10281) 后,再 Merge 本 pr
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.
Original requirements
Some AI for Science related models(FNO, AFNO, PINO) use FFT operations. So we need to support these.
Main Works
related research: https://github.com/Oneflow-Inc/OneTeam/issues/1927
autotest
module for complex tensor by addinginclude_complex
option. If setinclude_complex = True
,random_tensor
will generate complex tensor with prob of 0.5. In the future, we can use this option to reuse the real tensor test cases to test the complex tensorFuture Works