#ifndef GPU_AMD_MIOPEN_INNER_PRODUCT_HPP
#define GPU_AMD_MIOPEN_INNER_PRODUCT_HPP
#include <miopen/miopen.h>
#include "common/c_types_map.hpp"
#include "common/inner_product_pd.hpp"
#include "gpu/amd/engine.hpp"
#include "gpu/amd/miopen_inner_product_impl.hpp"
#include "gpu/amd/sycl_hip_utils.hpp"
#include "gpu/gpu_primitive.hpp"
namespace dnnl {
namespace impl {
namespace gpu {
namespace amd {
struct miopen_inner_product_fwd_t : public gpu::primitive_t {
public:
using gpu::primitive_t::primitive_t;
struct pd_t : public inner_product_fwd_pd_t {
using inner_product_fwd_pd_t::inner_product_fwd_pd_t;
std::shared_ptr<miopen_inner_product_impl_base_t> inner_product_impl_;
};
status_t execute(const exec_ctx_t &ctx) const override;
virtual const pd_t *pd() const {
return (const pd_t *)primitive_t::pd().get();
}
};
struct miopen_inner_product_bwd_data_t : public gpu::primitive_t {
public:
using gpu::primitive_t::primitive_t;
struct pd_t : public inner_product_bwd_data_pd_t {
using inner_product_bwd_data_pd_t::inner_product_bwd_data_pd_t;
std::shared_ptr<miopen_inner_product_impl_base_t> inner_product_impl_;
};
status_t execute(const exec_ctx_t &ctx) const override;
virtual const pd_t *pd() const {
return (const pd_t *)primitive_t::pd().get();
}
};
struct miopen_inner_product_bwd_weights_t : public gpu::primitive_t {
public:
using gpu::primitive_t::primitive_t;
struct pd_t : public inner_product_bwd_weights_pd_t {
using inner_product_bwd_weights_pd_t::inner_product_bwd_weights_pd_t;
std::shared_ptr<miopen_inner_product_impl_base_t> inner_product_impl_;
};
status_t execute(const exec_ctx_t &ctx) const override;
virtual const pd_t *pd() const {
return (const pd_t *)primitive_t::pd().get();
}
};
} } } }
#endif