You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
graphengine/third_party/fwkacllib/inc/ops/spectral_ops.h

148 lines
4.3 KiB

/**
4 years ago
* Copyright 2019 Huawei Technologies Co., Ltd
*
* 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.
*/
/*!
* \file spectral_ops.h
* \brief
*/
#ifndef OPS_BUILT_IN_OP_PROTO_INC_SPECTRAL_OPS_H_
#define OPS_BUILT_IN_OP_PROTO_INC_SPECTRAL_OPS_H_
#include "graph/operator.h"
#include "graph/operator_reg.h"
namespace ge {
/**
*@brief Computes the inverse 1-dimensional discrete Fourier transform over the
inner-most dimension of `x`. \n
*@par Inputs:
*@li x: A Tensor. Must be the following types: complex64, complex128. \n
*@par Outputs:
*@li y: A complex tensor of the same rank as `x`. \n
*@par Third-party framework compatibility
* Compatible with TensorFlow IFFT operator.
*/
REG_OP(IFFT)
.INPUT(x, TensorType({DT_COMPLEX64,DT_COMPLEX128}))
.OUTPUT(y, TensorType({DT_COMPLEX64,DT_COMPLEX128}))
.OP_END_FACTORY_REG(IFFT)
/**
*@brief Real-valued fast Fourier transform . \n
*@par Inputs:
*@li input: A float32 tensor.
*@li fft_length: An int32 tensor of shape [1]. The FFT length . \n
*@par Outputs:
*@li y: A complex64 tensor of the same rank as `input`. The inner-most
dimension of `input` is replaced with the `fft_length / 2 + 1` unique
frequency components of its 1D Fourier transform . \n
*@par Third-party framework compatibility
* Compatible with TensorFlow RFFT operator.
*/
REG_OP(RFFT)
.INPUT(input, TensorType({DT_FLOAT}))
.INPUT(fft_length, TensorType({DT_INT32}))
.OUTPUT(y, TensorType({DT_COMPLEX64}))
.OP_END_FACTORY_REG(RFFT)
/**
*@brief Inverse real-valued fast Fourier transform. \n
*@par Inputs:
*@li x: A complex64 tensor.
*@li fft_length: An int32 tensor of shape [1]. The FFT length. \n
*@par Outputs:
*@li y: A float32 tensor of the same rank as `input`. The inner-most
dimension of `input` is replaced with the `fft_length` samples of its inverse
1D Fourier transform. \n
*@par Third-party framework compatibility
* Compatible with TensorFlow IRFFT operator.
*/
REG_OP(IRFFT)
.INPUT(x, TensorType({DT_COMPLEX64}))
.INPUT(fft_length, TensorType({DT_INT32}))
.OUTPUT(y, TensorType({DT_FLOAT}))
.OP_END_FACTORY_REG(IRFFT)
/**
*@brief 2D fast Fourier transform. \n
*@par Inputs:
*@li x: A complex64 tensor.
*@par Outputs:
*@li y: A complex64 tensor of the same shape as `input`. The inner-most 2
dimensions of `input` are replaced with their 2D Fourier transform. \n
*@par Third-party framework compatibility
* Compatible with TensorFlow FFT2D operator.
*/
REG_OP(FFT2D)
.INPUT(x, TensorType({DT_COMPLEX64, DT_COMPLEX128}))
.OUTPUT(y, TensorType({DT_COMPLEX64, DT_COMPLEX128}))
.OP_END_FACTORY_REG(FFT2D)
/**
*@brief Calculate the one-dimensional discrete Fourier transform on the
innermost dimension of the input. \n
*@par Inputs:
*@li x: A Tensor. Must be the following types: complex64, complex128. \n
*@par Outputs:
*@li y: A complex tensor with the same shape as input. The innermost dimension
of the input is replaced by its 1-dimensional Fourier transform. \n
*@par Third-party framework compatibility
* Compatible with TensorFlow FFT operator.
*/
REG_OP(FFT)
.INPUT(x, TensorType({DT_COMPLEX64,DT_COMPLEX128}))
.OUTPUT(y, TensorType({DT_COMPLEX64,DT_COMPLEX128}))
.OP_END_FACTORY_REG(FFT)
/**
*@brief Calculate the inverse 1-dimensional discrete Fourier transform on the
innermost dimension of the input. \n
*@par Inputs:
*@li x: A Tensor. Must be the following types: complex64, complex128. \n
*@par Outputs:
*@li y: A complex tensor with the same shape as input. The innermost dimension
of the input is replaced by its inverse two-dimensional Fourier transform. \n
*@par Third-party framework compatibility
* Compatible with TensorFlow IFFT2D operator.
*/
REG_OP(IFFT2D)
.INPUT(x, TensorType({DT_COMPLEX64,DT_COMPLEX128}))
.OUTPUT(y, TensorType({DT_COMPLEX64,DT_COMPLEX128}))
.OP_END_FACTORY_REG(IFFT2D)
} // namespace ge
#endif // OPS_BUILT_IN_OP_PROTO_INC_SPECTRAL_OPS_H_