Skip to content

Commit

Permalink
resolve
Browse files Browse the repository at this point in the history
  • Loading branch information
hejunchao committed Jul 31, 2023
1 parent cd8fe7f commit 422dd72
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 37 deletions.
6 changes: 3 additions & 3 deletions tests/kernels/test_conv2d.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ TEST_P(Conv2DTest, conv2d) {
int64_t *strides = (int64_t *)malloc(strides_size * sizeof(int64_t));
std::copy(strides_value.begin(), strides_value.end(), strides);

auto output_ort =
ortki_Conv(input_ort, weight_ort, bais_ort, auto_pad, dilations, 2, 1,
kernel_shape, 2, pad, 4, strides, 2);
auto output_ort = ortki_Conv(
input_ort, weight_ort, bais_ort, auto_pad, dilations, dilations_size,
group_value, kernel_shape, 2, pad, pad_size, strides, strides_size);
size_t size = 0;
void *ptr_ort = tensor_buffer(output_ort, &size);
dims_t shape(tensor_rank(output_ort));
Expand Down
117 changes: 83 additions & 34 deletions tests/kernels/test_conv2d_transpose.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@ using namespace ortki;
class Conv2DTransposeTest
: public KernelTest,
public ::testing::TestWithParam<
std::tuple<nncase::typecode_t, dims_t, dims_t, dims_t>> {
std::tuple<nncase::typecode_t, dims_t, dims_t, dims_t, dims_t, dims_t,
dims_t, int64_t, dims_t, dims_t>> {
public:
void SetUp() override {
auto &&[typecode, input_shape, weight_shape, bias_shape] = GetParam();
auto &&[typecode, input_shape, weight_shape, bias_shape, value1, value2,
value3, value4, value5, value6] = GetParam();

input = hrt::create(typecode, input_shape,
host_runtime_tensor::pool_cpu_only)
Expand All @@ -48,6 +50,13 @@ class Conv2DTransposeTest
host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");
init_tensor(bais);

dilations_value = value1;
pad_value = value2;
strides_value = value3;
group_value = value4;
output_padding_value = value5;
output_shape_value = value6;
}

void TearDown() override {}
Expand All @@ -56,13 +65,24 @@ class Conv2DTransposeTest
runtime_tensor input;
runtime_tensor weight;
runtime_tensor bais;
dims_t dilations_value;
dims_t pad_value;
dims_t strides_value;
dims_t output_padding_value;
dims_t output_shape_value;
int64_t group_value;
};

INSTANTIATE_TEST_SUITE_P(conv2d_transpose, Conv2DTransposeTest,
testing::Combine(testing::Values(dt_float32),
testing::Values(dims_t{1, 1, 5, 5}),
testing::Values(dims_t{1, 2, 3, 3}),
testing::Values(dims_t{2})));
INSTANTIATE_TEST_SUITE_P(
conv2d_transpose, Conv2DTransposeTest,
testing::Combine(
testing::Values(dt_float32), testing::Values(dims_t{1, 1, 5, 5}),
testing::Values(dims_t{1, 2, 3, 3}), testing::Values(dims_t{2}),
testing::Values(/*dims_t{2, 2} ,*/ dims_t{1, 1}),
testing::Values(dims_t{1, 1, 1, 1} /*, dims_t{0, 0, 1, 0}*/),
testing::Values(dims_t{1, 1} /*, dims_t{2, 2}*/),
testing::Values(1 /*, 2*/), testing::Values(dims_t{0, 0}),
testing::Values(dims_t{1, 2, 5, 5})));

TEST_P(Conv2DTransposeTest, conv2d_transpose) {
auto input_ort = runtime_tensor_2_ort_tensor(input);
Expand All @@ -71,16 +91,37 @@ TEST_P(Conv2DTransposeTest, conv2d_transpose) {

// expected
const char *auto_pad = "NOTSET";
int64_t dilations[] = {1, 1};
int64_t kernel_shape[] = {3, 3};
int64_t pad[] = {1, 1, 1, 1};
int64_t strides[] = {1, 1};
int64_t output_padding[] = {0, 0};
int64_t output_shape[] = {1, 2, 5, 5};
auto output_ort =
ortki_ConvTranspose(input_ort, weight_ort, bais_ort, auto_pad,
dilations, 2, 1, kernel_shape, 2, output_padding, 2,
output_shape, 4, pad, 4, strides, 2);
size_t dilations_size = dilations_value.size();
int64_t *dilations = (int64_t *)malloc(dilations_size * sizeof(int64_t));
std::copy(dilations_value.begin(), dilations_value.end(), dilations);

int64_t kernel_shape[] = {(int64_t)weight.shape()[2],
(int64_t)weight.shape()[3]};

size_t pad_size = pad_value.size();
int64_t *pad = (int64_t *)malloc(pad_size * sizeof(int64_t));
std::copy(pad_value.begin(), pad_value.end(), pad);

size_t strides_size = strides_value.size();
int64_t *strides = (int64_t *)malloc(strides_size * sizeof(int64_t));
std::copy(strides_value.begin(), strides_value.end(), strides);

size_t output_padding_size = output_padding_value.size();
int64_t *output_padding =
(int64_t *)malloc(output_padding_size * sizeof(int64_t));
std::copy(output_padding_value.begin(), output_padding_value.end(),
output_padding);

size_t output_shape_size = output_shape_value.size();
int64_t *output_shape =
(int64_t *)malloc(output_shape_size * sizeof(int64_t));
std::copy(output_shape_value.begin(), output_shape_value.end(),
output_shape);

auto output_ort = ortki_ConvTranspose(
input_ort, weight_ort, bais_ort, auto_pad, dilations, dilations_size,
group_value, kernel_shape, 2, output_padding, output_padding_size,
output_shape, output_shape_size, pad, pad_size, strides, strides_size);
size_t size = 0;
void *ptr_ort = tensor_buffer(output_ort, &size);
dims_t shape(tensor_rank(output_ort));
Expand All @@ -91,52 +132,60 @@ TEST_P(Conv2DTransposeTest, conv2d_transpose) {
.expect("create tensor failed");

// actual
int64_t group[] = {1};
int64_t group[] = {group_value};
float_t fused_clamp[] = {-FLT_MAX, FLT_MAX};
auto dilations_ptr = hrt::create(nncase::dt_int64, {2},
{reinterpret_cast<gsl::byte *>(dilations),
sizeof(dilations)},
dilations_size * sizeof(int64_t)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto kernel_shape_ptr =
hrt::create(
nncase::dt_int64, {2},
{reinterpret_cast<gsl::byte *>(kernel_shape), sizeof(kernel_shape)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");
auto pad_ptr =
hrt::create(nncase::dt_int64, {4},
{reinterpret_cast<gsl::byte *>(pad), sizeof(pad)}, true,
host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");
auto strides_ptr =
hrt::create(nncase::dt_int64, {2},
{reinterpret_cast<gsl::byte *>(strides), sizeof(strides)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto pad_ptr = hrt::create(nncase::dt_int64, {4},
{reinterpret_cast<gsl::byte *>(pad),
pad_size * sizeof(int64_t)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto strides_ptr = hrt::create(nncase::dt_int64, {2},
{reinterpret_cast<gsl::byte *>(strides),
strides_size * sizeof(int64_t)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto group_ptr =
hrt::create(nncase::dt_int64, {1},
{reinterpret_cast<gsl::byte *>(group), sizeof(group)}, true,
host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto fused_clamp_ptr =
hrt::create(
nncase::dt_float32, {2},
{reinterpret_cast<gsl::byte *>(fused_clamp), sizeof(fused_clamp)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto output_padding_ptr =
hrt::create(nncase::dt_int64, {2},
{reinterpret_cast<gsl::byte *>(output_padding),
sizeof(output_padding)},
output_padding_size * sizeof(int64_t)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto output_shape_ptr =
hrt::create(
nncase::dt_int64, {4},
{reinterpret_cast<gsl::byte *>(output_shape), sizeof(output_shape)},
true, host_runtime_tensor::pool_cpu_only)
hrt::create(nncase::dt_int64, {4},
{reinterpret_cast<gsl::byte *>(output_shape),
output_shape_size * sizeof(int64_t)},
true, host_runtime_tensor::pool_cpu_only)
.expect("create tensor failed");

auto output =
kernels::stackvm::conv2d_transpose(
runtime::stackvm::pad_mode_t::constant, input.impl(), weight.impl(),
Expand Down

0 comments on commit 422dd72

Please sign in to comment.