Commit 586d61ed authored by rocking's avatar rocking
Browse files

Modify the argument into vector.

parent 382c2ca0
......@@ -62,10 +62,10 @@ bool pool_test(bool do_verification,
const ck::index_t Ho = (Hi + in_left_pad_h + in_right_pad_h - Y) / window_stride_h + 1;
const ck::index_t Wo = (Wi + in_left_pad_w + in_right_pad_w - X) / window_stride_w + 1;
const std::array<ck::index_t, 2> window_spatial_lengths{{Y, X}};
const std::array<ck::index_t, 2> window_strides{{window_stride_h, window_stride_w}};
const std::array<ck::index_t, 2> input_left_pads{{in_left_pad_h, in_left_pad_w}};
const std::array<ck::index_t, 2> input_right_pads{{in_right_pad_h, in_right_pad_w}};
const std::vector<ck::index_t> window_spatial_lengths{Y, X};
const std::vector<ck::index_t> window_strides{window_stride_h, window_stride_w};
const std::vector<ck::index_t> input_left_pads{in_left_pad_h, in_left_pad_w};
const std::vector<ck::index_t> input_right_pads{in_right_pad_h, in_right_pad_w};
// tensor layout
auto f_host_tensor_descriptor =
......
......@@ -66,12 +66,11 @@ bool pool3d_test(bool do_verification,
const ck::index_t Ho = (Hi + in_left_pad_h + in_right_pad_h - Y) / window_stride_h + 1;
const ck::index_t Wo = (Wi + in_left_pad_w + in_right_pad_w - X) / window_stride_w + 1;
const std::array<ck::index_t, 3> window_spatial_lengths{{Z, Y, X}};
const std::array<ck::index_t, 3> window_strides{
{window_stride_d, window_stride_h, window_stride_w}};
const std::array<ck::index_t, 3> input_left_pads{{in_left_pad_d, in_left_pad_h, in_left_pad_w}};
const std::array<ck::index_t, 3> input_right_pads{
{in_right_pad_d, in_right_pad_h, in_right_pad_w}};
const std::vector<ck::index_t> window_spatial_lengths{Z, Y, X};
const std::vector<ck::index_t> window_strides{
window_stride_d, window_stride_h, window_stride_w};
const std::vector<ck::index_t> input_left_pads{in_left_pad_d, in_left_pad_h, in_left_pad_w};
const std::vector<ck::index_t> input_right_pads{in_right_pad_d, in_right_pad_h, in_right_pad_w};
// tensor layout
auto f_host_tensor_descriptor = [](std::size_t N_,
......
......@@ -26,16 +26,16 @@ struct DevicePoolFwd : public BaseOperator
MakeArgumentPointer(const void* p_in_dev,
void* p_out_dev,
void* p_out_indices_dev,
std::array<ck::index_t, InOutRank> input_stride,
std::array<ck::index_t, InOutRank> output_stride,
std::array<ck::index_t, InOutRank> indices_stride,
std::array<ck::index_t, InOutRank> input_lengths,
std::array<ck::index_t, WindowRank> window_lengths,
std::array<ck::index_t, InOutRank> output_lengths,
std::array<ck::index_t, WindowRank> window_strides,
std::array<ck::index_t, WindowRank> input_left_pads,
std::array<ck::index_t, WindowRank> input_right_pads,
std::array<ck::index_t, WindowRank> pooling_dims) = 0;
std::vector<ck::index_t> input_stride,
std::vector<ck::index_t> output_stride,
std::vector<ck::index_t> indices_stride,
std::vector<ck::index_t> input_lengths,
std::vector<ck::index_t> window_lengths,
std::vector<ck::index_t> output_lengths,
std::vector<ck::index_t> window_strides,
std::vector<ck::index_t> input_left_pads,
std::vector<ck::index_t> input_right_pads,
std::vector<ck::index_t> pooling_dims) = 0;
virtual std::unique_ptr<BaseInvoker> MakeInvokerPointer() = 0;
};
......
......@@ -60,15 +60,14 @@ struct DevicePool2dFwd_Input_N_Hi_Wi_C_Output_N_Ho_Wo_C
static constexpr ck::index_t ReduceK_BlockTileSize =
ReduceKThreadClusterSize * ReduceKThreadSliceSize;
static auto
MakeABGridDescriptor_A_M_K_B_M(ck::index_t N,
static auto MakeABGridDescriptor_A_M_K_B_M(ck::index_t N,
ck::index_t C,
std::array<ck::index_t, WindowRank> input_spatial_lengths,
std::array<ck::index_t, WindowRank> window_spatial_lengths,
std::array<ck::index_t, WindowRank> output_spatial_lengths,
std::array<ck::index_t, WindowRank> window_strides,
std::array<ck::index_t, WindowRank> input_left_pads,
std::array<ck::index_t, WindowRank> input_right_pads)
std::vector<ck::index_t> input_spatial_lengths,
std::vector<ck::index_t> window_spatial_lengths,
std::vector<ck::index_t> output_spatial_lengths,
std::vector<ck::index_t> window_strides,
std::vector<ck::index_t> input_left_pads,
std::vector<ck::index_t> input_right_pads)
{
const index_t Hi = input_spatial_lengths[0];
const index_t Wi = input_spatial_lengths[1];
......@@ -159,12 +158,12 @@ struct DevicePool2dFwd_Input_N_Hi_Wi_C_Output_N_Ho_Wo_C
IndexDataType* p_out_indices_dev,
ck::index_t N,
ck::index_t C,
std::array<ck::index_t, WindowRank>& input_spatial_lengths,
std::array<ck::index_t, WindowRank>& window_spatial_lengths,
std::array<ck::index_t, WindowRank>& output_spatial_lengths,
std::array<ck::index_t, WindowRank>& window_strides,
std::array<ck::index_t, WindowRank>& input_left_pads,
std::array<ck::index_t, WindowRank>& input_right_pads)
std::vector<ck::index_t>& input_spatial_lengths,
std::vector<ck::index_t>& window_spatial_lengths,
std::vector<ck::index_t>& output_spatial_lengths,
std::vector<ck::index_t>& window_strides,
std::vector<ck::index_t>& input_left_pads,
std::vector<ck::index_t>& input_right_pads)
: p_in_dev_{p_in_dev},
p_out_dev_{p_out_dev},
p_out_indices_dev_{p_out_indices_dev},
......@@ -286,17 +285,22 @@ struct DevicePool2dFwd_Input_N_Hi_Wi_C_Output_N_Ho_Wo_C
MakeArgumentPointer(const void* p_in_dev,
void* p_out_dev,
void* p_out_indices_dev,
std::array<ck::index_t, InOutRank>, // Suppose tensor layout = NHWC
std::array<ck::index_t, InOutRank>, // Suppose tensor layout = NHWC
std::array<ck::index_t, InOutRank>, // Suppose tensor layout = NHWC
std::array<ck::index_t, InOutRank> input_lengths,
std::array<ck::index_t, WindowRank> window_lengths,
std::array<ck::index_t, InOutRank> output_lengths,
std::array<ck::index_t, WindowRank> window_strides,
std::array<ck::index_t, WindowRank> input_left_pads,
std::array<ck::index_t, WindowRank> input_right_pads,
std::array<ck::index_t, WindowRank>) override
std::vector<ck::index_t>, // Suppose tensor layout = NHWC
std::vector<ck::index_t>, // Suppose tensor layout = NHWC
std::vector<ck::index_t>, // Suppose tensor layout = NHWC
std::vector<ck::index_t> input_lengths,
std::vector<ck::index_t> window_lengths,
std::vector<ck::index_t> output_lengths,
std::vector<ck::index_t> window_strides,
std::vector<ck::index_t> input_left_pads,
std::vector<ck::index_t> input_right_pads,
std::vector<ck::index_t>) override
{
if(input_lengths.size() != InOutRank || window_lengths.size() != WindowRank ||
input_lengths.size() != InOutRank || window_strides.size() != WindowRank ||
input_left_pads.size() != WindowRank || input_right_pads.size() != WindowRank)
throw std::runtime_error("dimension is incorrect");
index_t N = input_lengths[0];
index_t C = input_lengths[1];
index_t Hi = input_lengths[2];
......@@ -304,8 +308,8 @@ struct DevicePool2dFwd_Input_N_Hi_Wi_C_Output_N_Ho_Wo_C
index_t Ho = output_lengths[2];
index_t Wo = output_lengths[3];
std::array<ck::index_t, WindowRank> input_spatial_lengths = {Hi, Wi};
std::array<ck::index_t, WindowRank> output_spatial_lengths = {Ho, Wo};
std::vector<ck::index_t> input_spatial_lengths = {Hi, Wi};
std::vector<ck::index_t> output_spatial_lengths = {Ho, Wo};
return std::make_unique<Argument>(static_cast<const InDataType*>(p_in_dev),
static_cast<OutDataType*>(p_out_dev),
......
......@@ -58,15 +58,14 @@ struct DevicePool3dFwd_Input_N_Di_Hi_Wi_C_Output_N_Do_Ho_Wo_C
static constexpr ck::index_t M_BlockTileSize = MThreadClusterSize * MThreadSliceSize;
static constexpr ck::index_t K_BlockTileSize = KThreadClusterSize * KThreadSliceSize;
static auto
MakeABGridDescriptor_A_M_K_B_M(ck::index_t N,
static auto MakeABGridDescriptor_A_M_K_B_M(ck::index_t N,
ck::index_t C,
std::array<ck::index_t, WindowRank> input_spatial_lengths,
std::array<ck::index_t, WindowRank> window_spatial_lengths,
std::array<ck::index_t, WindowRank> output_spatial_lengths,
std::array<ck::index_t, WindowRank> window_strides,
std::array<ck::index_t, WindowRank> input_left_pads,
std::array<ck::index_t, WindowRank> input_right_pads)
std::vector<ck::index_t> input_spatial_lengths,
std::vector<ck::index_t> window_spatial_lengths,
std::vector<ck::index_t> output_spatial_lengths,
std::vector<ck::index_t> window_strides,
std::vector<ck::index_t> input_left_pads,
std::vector<ck::index_t> input_right_pads)
{
const index_t Di = input_spatial_lengths[0];
const index_t Hi = input_spatial_lengths[1];
......@@ -165,12 +164,12 @@ struct DevicePool3dFwd_Input_N_Di_Hi_Wi_C_Output_N_Do_Ho_Wo_C
IndexDataType* p_out_indices_dev,
ck::index_t N,
ck::index_t C,
std::array<ck::index_t, WindowRank>& input_spatial_lengths,
std::array<ck::index_t, WindowRank>& window_spatial_lengths,
std::array<ck::index_t, WindowRank>& output_spatial_lengths,
std::array<ck::index_t, WindowRank>& window_strides,
std::array<ck::index_t, WindowRank>& input_left_pads,
std::array<ck::index_t, WindowRank>& input_right_pads)
std::vector<ck::index_t>& input_spatial_lengths,
std::vector<ck::index_t>& window_spatial_lengths,
std::vector<ck::index_t>& output_spatial_lengths,
std::vector<ck::index_t>& window_strides,
std::vector<ck::index_t>& input_left_pads,
std::vector<ck::index_t>& input_right_pads)
: p_in_dev_{p_in_dev},
p_out_dev_{p_out_dev},
p_out_indices_dev_{p_out_indices_dev},
......@@ -291,17 +290,22 @@ struct DevicePool3dFwd_Input_N_Di_Hi_Wi_C_Output_N_Do_Ho_Wo_C
MakeArgumentPointer(const void* p_in_dev,
void* p_out_dev,
void* p_out_indices_dev,
std::array<ck::index_t, InOutRank>, // Suppose tensor layout = NDHWC
std::array<ck::index_t, InOutRank>, // Suppose tensor layout = NDHWC
std::array<ck::index_t, InOutRank>, // Suppose tensor layout = NDHWC
std::array<ck::index_t, InOutRank> input_lengths,
std::array<ck::index_t, WindowRank> window_lengths,
std::array<ck::index_t, InOutRank> output_lengths,
std::array<ck::index_t, WindowRank> window_strides,
std::array<ck::index_t, WindowRank> input_left_pads,
std::array<ck::index_t, WindowRank> input_right_pads,
std::array<ck::index_t, WindowRank>) override
std::vector<ck::index_t>, // Suppose tensor layout = NDHWC
std::vector<ck::index_t>, // Suppose tensor layout = NDHWC
std::vector<ck::index_t>, // Suppose tensor layout = NDHWC
std::vector<ck::index_t> input_lengths,
std::vector<ck::index_t> window_lengths,
std::vector<ck::index_t> output_lengths,
std::vector<ck::index_t> window_strides,
std::vector<ck::index_t> input_left_pads,
std::vector<ck::index_t> input_right_pads,
std::vector<ck::index_t>) override
{
if(input_lengths.size() != InOutRank || window_lengths.size() != WindowRank ||
input_lengths.size() != InOutRank || window_strides.size() != WindowRank ||
input_left_pads.size() != WindowRank || input_right_pads.size() != WindowRank)
throw std::runtime_error("dimension is incorrect");
index_t N = input_lengths[0];
index_t C = input_lengths[1];
index_t Di = input_lengths[2];
......@@ -311,8 +315,8 @@ struct DevicePool3dFwd_Input_N_Di_Hi_Wi_C_Output_N_Do_Ho_Wo_C
index_t Ho = output_lengths[3];
index_t Wo = output_lengths[4];
std::array<ck::index_t, WindowRank> input_spatial_lengths = {Di, Hi, Wi};
std::array<ck::index_t, WindowRank> output_spatial_lengths = {Do, Ho, Wo};
std::vector<ck::index_t> input_spatial_lengths = {Di, Hi, Wi};
std::vector<ck::index_t> output_spatial_lengths = {Do, Ho, Wo};
return std::make_unique<Argument>(static_cast<const InDataType*>(p_in_dev),
static_cast<OutDataType*>(p_out_dev),
......
......@@ -37,10 +37,10 @@ struct ReferencePoolingFwd : public device::BaseOperator
Argument(const Tensor<InDataType>& in,
Tensor<OutDataType>& out,
Tensor<IndexDataType>& out_indices,
const std::array<ck::index_t, WindowRank>& window_spatial_lengths,
const std::array<ck::index_t, WindowRank>& window_strides,
const std::array<ck::index_t, WindowRank>& in_left_pads,
const std::array<ck::index_t, WindowRank>& /*in_right_pads*/)
const std::vector<ck::index_t>& window_spatial_lengths,
const std::vector<ck::index_t>& window_strides,
const std::vector<ck::index_t>& in_left_pads,
const std::vector<ck::index_t>& /*in_right_pads*/)
: in_(in),
out_(out),
out_indices_(out_indices),
......@@ -56,9 +56,9 @@ struct ReferencePoolingFwd : public device::BaseOperator
const Tensor<InDataType>& in_;
Tensor<OutDataType>& out_;
Tensor<IndexDataType>& out_indices_;
const std::array<ck::index_t, WindowRank>& window_spatial_lengths_;
const std::array<ck::index_t, WindowRank>& window_strides_;
const std::array<ck::index_t, WindowRank>& in_left_pads_;
const std::vector<ck::index_t>& window_spatial_lengths_;
const std::vector<ck::index_t>& window_strides_;
const std::vector<ck::index_t>& in_left_pads_;
int reduceLength_;
};
......@@ -306,10 +306,10 @@ struct ReferencePoolingFwd : public device::BaseOperator
static auto MakeArgument(const Tensor<InDataType>& in,
Tensor<OutDataType>& out,
Tensor<IndexDataType>& out_indices,
const std::array<ck::index_t, WindowRank>& window_spatial_lengths,
const std::array<ck::index_t, WindowRank>& window_strides,
const std::array<ck::index_t, WindowRank>& in_left_pads,
const std::array<ck::index_t, WindowRank>& in_right_pads)
const std::vector<ck::index_t>& window_spatial_lengths,
const std::vector<ck::index_t>& window_strides,
const std::vector<ck::index_t>& in_left_pads,
const std::vector<ck::index_t>& in_right_pads)
{
return Argument{in,
out,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment