compute_backward#
This function computes the backward transform defined by an instantiation of the descriptor class.
Description
The compute_backward function accepts the descriptor and one or more data parameters and in the case of USM data, any syc::event dependencies. Given a successfully configured and committed descriptor, this function computes the backward transform, that is, the transform with the plus sign,
The configuration parameters config_param::COMPLEX_STORAGE, config_param::REAL_STORAGE and config_param::CONJUGATE_EVEN_STORAGE define the layout of the input and output data and must be properly set in a call to set_value.
Note
The compute_backward function may need to access the internals and private/protected members of the descriptor class. This could be done, for instance, by labeling it as a friend function to the descriptor class.
compute_backward (Buffer version)#
Syntax (In-place transform)
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename data_type>
void compute_backward( descriptor_type &desc,
sycl::buffer<data_type, 1> &inout );
}
Syntax (In-place transform, using config_param::COMPLEX_STORAGE=config_value::REAL_REAL data format )
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename data_type>
void compute_backward( descriptor_type &desc,
sycl::buffer<data_type, 1> &inout_re,
sycl::buffer<data_type, 1> &inout_im);
}
Syntax (Out-of-place transform)
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename input_type, typename output_type>
void compute_backward( descriptor_type &desc,
sycl::buffer<input_type, 1> &in,
sycl::buffer<output_type, 1> &out);
}
Syntax (Out-of-place transform, using config_param::COMPLEX_STORAGE=config_value::REAL_REAL data format )
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename input_type, typename output_type>
void compute_backward( descriptor_type &desc,
sycl::buffer<input_type, 1> &in_re,
sycl::buffer<input_type, 1> &in_im,
sycl::buffer<output_type, 1> &out_re,
sycl::buffer<output_type, 1> &out_im);
}
Input Parameters
- desc
A fully configured and committed discrete Fourier transform descriptor class object, defining the type of backward transformation and data layout to be applied. At commit time, the
sycl::queuehas already been provided.- inout
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house both the input and output data sequences for the in-place transformation. Corresponds to the choice of
config_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_re
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the real part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_im
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- in
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the input data sequence for the out-of-place transformation. Corresponds to the choice of
config_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- in_re
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the real part of input data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- in_im
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of input data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.
Output Parameters
- inout
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house both the input and output data sequences for the in-place transformation. Corresponds to the choice of
config_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_re
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the real part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_im
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- out
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the output data sequence for the out-of-place transformation. Corresponds to the choice of
config_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- out_re
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the real part of output data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- out_im
Sycl buffer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of output data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.
Throws
The oneapi::mkl::dft::compute_backward() routine shall throw the following exceptions if the associated condition is detected. An implementation may throw additional implementation-specific exception(s) in case of error conditions not covered here:
- oneapi::mkl::invalid_argument()
If the provided descriptor class is invalid, for instance, if it is a nullptr or if the value of
config_param::COMMIT_STATUSin descriptor is notconfig_param::COMMITTED.
compute_backward (USM version)#
Syntax (In-place transform)
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename data_type>
sycl::event compute_backward( descriptor_type &desc,
data_type *inout,
const std::vector<cl::sycl::event> &dependencies = {});
}
Syntax (In-place transform, using config_param::COMPLEX_STORAGE=config_value::REAL_REAL data format )
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename data_type>
sycl::event compute_backward(descriptor_type &desc,
data_type *inout_re,
data_type *inout_im,
const std::vector<cl::sycl::event> &dependencies = {});
}
Syntax (Out-of-place transform)
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename input_type, typename output_type>
sycl::event compute_backward( descriptor_type &desc,
input_type *in,
output_type *out,
const std::vector<cl::sycl::event> &dependencies = {});
}
Syntax (Out-of-place transform, using config_param::COMPLEX_STORAGE=config_value::REAL_REAL data format )
namespace oneapi::mkl::dft {
template <typename descriptor_type, typename input_type, typename output_type>
sycl::event compute_backward( descriptor_type &desc,
input_type *in_re,
input_type *in_im,
output_type *out_re,
output_type *out_im,
const std::vector<cl::sycl::event> &dependencies = {});
}
Input Parameters
- desc
A fully configured and committed discrete Fourier transform descriptor class object, defining the type of backward transformation and data layout to be applied. At commit time, the
sycl::queuehas already been provided.- inout
USM pointer containing an array of length no less than is specified at the descriptor construction time to house both the input and output data sequences for the in-place transformation. Corresponds to the choice of
config_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_re
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the real part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_im
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- in
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the input data sequence for the out-of-place transformation. Corresponds to the choice of
config_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- in_re
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the real part of the input data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- in_im
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of the input data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- dependencies
A vector of
sycl::event’s that represent the previously enqueued tasks that must be finished before this transformation can be started.
Output Parameters
- inout
USM pointer containing an array of length no less than is specified at the descriptor construction time to house both the input and output data sequences for the in-place transformation. Corresponds to the choice of
config_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_re
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the real part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- inout_im
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of both the input and output data sequences for the in-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::INPLACEfor the configuration parameterconfig_param::PLACEMENT.- out
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the output data sequence for the out-of-place transformation. Corresponds to the choice of
config_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- out_re
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the real part of the output data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.- out_im
USM pointer containing an array of length no less than is specified at the descriptor construction time to house the imaginary part of the output data sequence for the out-of-place transformation when using the
config_value::REAL_REALformat for theconfig_param::COMPLEX_STORAGEconfiguration parameter. Corresponds to the choice ofconfig_value::NOT_INPLACEfor the configuration parameterconfig_param::PLACEMENT.
Throws
The oneapi::mkl::dft::compute_backward() routine shall throw the following exceptions if the associated condition is detected. An implementation may throw additional implementation-specific exception(s) in case of error conditions not covered here:
- oneapi::mkl::invalid_argument()
If the provided descriptor class is invalid, for instance, if it is a nullptr or if the value of
config_param::COMMIT_STATUSin descriptor is notconfig_param::COMMITTED. It will also be thrown if the input/output pointers are NULL.
Return Values
This function returns a sycl::event that allows to track progress of this transformation, and can be passed as a dependency to other routines that may depend on the results of this transformation to be finished before proceeding with the other operations.
Parent topic: Discrete Fourier Transform Functions