#ifndef GPU_NVIDIA_CUDNN_CONVOLUTION_PD_HPP
#define GPU_NVIDIA_CUDNN_CONVOLUTION_PD_HPP
#include "common/convolution_pd.hpp"
#include "gpu/nvidia/sycl_cuda_utils.hpp"
namespace dnnl {
namespace impl {
namespace gpu {
namespace nvidia {
struct cudnn_convolution_fwd_pd_t : public convolution_fwd_pd_t {
using convolution_fwd_pd_t::convolution_fwd_pd_t;
bool set_alg_kind(alg_kind_t kind) { return set_default_alg_kind(kind); }
bool check_for_zero_dims() const {
return has_zero_dims(
invariant_src_md()->dims, invariant_src_md()->ndims)
|| has_zero_dims(
invariant_wei_md(0)->dims, invariant_wei_md(0)->ndims)
|| has_zero_dims(
invariant_dst_md()->dims, invariant_dst_md()->ndims);
}
};
struct cudnn_convolution_bwd_data_pd_t : public convolution_bwd_data_pd_t {
using convolution_bwd_data_pd_t::convolution_bwd_data_pd_t;
bool set_alg_kind(alg_kind_t kind) { return set_default_alg_kind(kind); }
bool check_for_zero_dims() const {
return has_zero_dims(
invariant_src_md()->dims, invariant_src_md()->ndims)
|| has_zero_dims(
invariant_wei_md(0)->dims, invariant_wei_md(0)->ndims)
|| has_zero_dims(
invariant_dst_md()->dims, invariant_dst_md()->ndims);
}
};
struct cudnn_convolution_bwd_weights_pd_t
: public convolution_bwd_weights_pd_t {
using convolution_bwd_weights_pd_t::convolution_bwd_weights_pd_t;
bool set_alg_kind(alg_kind_t kind) { return set_default_alg_kind(kind); }
bool check_for_zero_dims() const {
return has_zero_dims(
invariant_src_md()->dims, invariant_src_md()->ndims)
|| has_zero_dims(
invariant_wei_md(0)->dims, invariant_wei_md(0)->ndims)
|| has_zero_dims(
invariant_dst_md()->dims, invariant_dst_md()->ndims);
}
};
} } } } #endif