FFT operators are not supported on MPS device
Labels: high priority, triaged, module: complex, module: fft, topic: new features, module: mps

### 🐛 Describe the bug

# Extra comments

The error happens regardless of whether `PYTORCH_ENABLE_MPS_FALLBACK=1` env var is set or not.

# Code to reproduce:

```python
import torch
x = torch.randn(1, 16000, device="mps")
y = torch.fft.rfft(x)
y_abs = y.abs()
```

# Script output message:

```
$ python test2.py
test2.py:4: UserWarning: The operator 'aten::_fft_r2c' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications. (Triggered internally at  /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/mps/MPSFallback.mm:11.)
  y = torch.fft.rfft(x)
libc++abi: terminating with uncaught exception of type c10::TypeError: Trying to convert ComplexFloat to the MPS backend but it does not have support for that dtype.
Exception raised from getMPSDataType at /Users/runner/work/pytorch/pytorch/pytorch/aten/src/ATen/native/mps/OperationUtils.mm:124 (most recent call first):
frame #0: at::native::mps::getMPSDataType(c10::ScalarType) + 452 (0x113dc690c in libtorch_cpu.dylib)
frame #1: at::native::mps::mpsGraphRankedPlaceHolder(MPSGraph*, at::Tensor const&) + 60 (0x113dc838c in libtorch_cpu.dylib)
frame #2: invocation function for block in at::native::mps::unary_op(at::Tensor const&, at::Tensor const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, MPSGraphTensor* (MPSGraph*, MPSGraphTensor*) block_pointer) + 96 (0x113e33d84 in libtorch_cpu.dylib)
frame #3: invocation function for block in at::native::mps::MPSGraphCache::CreateCachedGraph(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, at::native::mps::MPSCachedGraph* () block_pointer) + 216 (0x113dd0dec in libtorch_cpu.dylib)
frame #4: _dispatch_client_callout + 20 (0x1984d01b4 in libdispatch.dylib)
frame #5: _dispatch_lane_barrier_sync_invoke_and_complete + 56 (0x1984df414 in libdispatch.dylib)
frame #6: at::native::mps::MPSGraphCache::CreateCachedGraph(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, at::native::mps::MPSCachedGraph* () block_pointer) + 160 (0x113dc8e90 in libtorch_cpu.dylib)
frame #7: at::native::mps::unary_op(at::Tensor const&, at::Tensor const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, MPSGraphTensor* (MPSGraph*, MPSGraphTensor*) block_pointer) + 984 (0x113e33b70 in libtorch_cpu.dylib)
frame #8: at::native::abs_out_mps(at::Tensor const&, at::Tensor&) + 76 (0x113e351a4 in libtorch_cpu.dylib)
frame #9: at::_ops::abs_out::call(at::Tensor const&, at::Tensor&) + 280 (0x110f268e0 in libtorch_cpu.dylib)
frame #10: at::native::abs(at::Tensor const&) + 232 (0x110aadcd4 in libtorch_cpu.dylib)
frame #11: c10::impl::wrap_kernel_functor_unboxed_<c10::impl::detail::WrapFunctionIntoFunctor_<c10::CompileTimeFunctionPointer<at::Tensor (c10::DispatchKeySet, at::Tensor const&), &(torch::autograd::VariableType::(anonymous namespace)::abs(c10::DispatchKeySet, at::Tensor const&))>, at::Tensor, c10::guts::typelist::typelist<c10::DispatchKeySet, at::Tensor const&> >, at::Tensor (c10::DispatchKeySet, at::Tensor const&)>::call(c10::OperatorKernel*, c10::DispatchKeySet, at::Tensor const&) + 968 (0x1125fa24c in libtorch_cpu.dylib)
frame #12: at::_ops::abs::call(at::Tensor const&) + 264 (0x110f25c84 in libtorch_cpu.dylib)
frame #13: torch::autograd::THPVariable_abs(_object*, _object*) + 188 (0x106de8904 in libtorch_python.dylib)
frame #14: method_vectorcall_NOARGS + 136 (0x104e5ee4c in python3.8)
frame #15: call_function + 128 (0x104f859a0 in python3.8)
frame #16: _PyEval_EvalFrameDefault + 19988 (0x104f7c91c in python3.8)
frame #17: _PyEval_EvalCodeWithName + 616 (0x104f75cc8 in python3.8)
frame #18: pyrun_file + 280 (0x104fea0d0 in python3.8)
frame #19: pyrun_simple_file + 448 (0x104fe980c in python3.8)
frame #20: PyRun_SimpleFileExFlags + 120 (0x104fe95ec in python3.8)
frame #21: pymain_run_file + 444 (0x105011040 in python3.8)
frame #22: pymain_run_python + 328 (0x10501040c in python3.8)
frame #23: Py_RunMain + 40 (0x105010268 in python3.8)
frame #24: pymain_main + 52 (0x105011c50 in python3.8)
frame #25: main + 56 (0x104e25a08 in python3.8)
frame #26: start + 520 (0x10534508c in dyld)

[1]    17751 abort      python test2.py
```

### Versions

# Env information

```
$ python collect_env.py
Collecting environment information...
PyTorch version: 1.13.0.dev20220521
Is debug build: False
CUDA used to build PyTorch: None
ROCM used to build PyTorch: N/A

OS: macOS 12.4 (arm64)
GCC version: Could not collect
Clang version: 13.1.6 (clang-1316.0.21.2.5)
CMake version: version 3.22.4
Libc version: N/A

Python version: 3.8.13 (default, Mar 28 2022, 06:13:39)  [Clang 12.0.0 ] (64-bit runtime)
Python platform: macOS-12.4-arm64-arm-64bit
Is CUDA available: False
CUDA runtime version: No CUDA
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

Versions of relevant libraries:
[pip3] k2==1.15.1.dev20220520+cpu.torch1.12.0.dev20220519
[pip3] numpy==1.22.3
[pip3] torch==1.13.0.dev20220521
[pip3] torchaudio==0.11.0
[pip3] torchvision==0.12.0
[conda] k2                        1.15.1.dev20220520+cpu.torch1.12.0.dev20220519          pypi_0    pypi
[conda] numpy                     1.22.3           py38h25ab29e_0
[conda] numpy-base                1.22.3           py38h974a1f5_0
[conda] torch                     1.13.0.dev20220521          pypi_0    pypi
[conda] torchaudio                0.11.0                   pypi_0    pypi
[conda] torchvision               0.12.0                   pypi_0    pypi
```

cc @ezyang @gchanan @zou3519 @anjali411 @dylanbespalko @mruberry @Lezcano @nikitaved @peterbell10 @kulinseth @albanD @malfet @DenisVieriu97 @razarmehr @abhudev