// debug.cpp : Ce fichier contient la fonction 'main'. L'excution du programme commence et se termine cet endroit.
//
#include "op_conv_matrices_.hpp"
#include "op_qlinear_conv_.hpp"
#include "op_qlinear_cpp_qgemm_tester_.hpp"
#include "op_qlinear_cpp_tester_.hpp"
#include "experimental_c.h"
void test_qlinear_conv1() {
QLinearConv conv_mistyped;
QLinearConv conv;
const std::string auto_pad = "NOTSET";
std::vector dilations;
std::vector kernel_shape;
std::vector pads;
std::vector strides;
conv.init(auto_pad, dilations, 1, kernel_shape, pads, strides);
shaped_array_t x({
255, 174, 162, 25, 203, 168, 58,
15, 59, 237, 95, 129, 0, 64,
56, 242, 153, 221, 168, 12, 166,
232, 178, 186, 195, 237, 162, 237,
188, 39, 124, 77, 80, 102, 43,
127, 230, 21, 83, 41, 40, 134,
255, 154, 92, 141, 42, 148, 247 },
{ 1, 1, 7, 7 });
float x_scale = (float)0.00369204697;
uint8_t x_zero_point = 132;
shaped_array_t w({ 0 }, { 1, 1, 1, 1 });
shaped_array_t w_scale({ (float)0.00172794575 }, {});
uint8_t w_zero_point = 255;
float y_scale = (float)0.00162681262;
uint8_t y_zero_point = 123;
shaped_array_t B;
shaped_array_t output({
0, 81, 93, 230, 52, 87, 197,
240, 196, 18, 160, 126, 255, 191,
199, 13, 102, 34, 87, 243, 89,
23, 77, 69, 60, 18, 93, 18,
67, 216, 131, 178, 175, 153, 212,
128, 25, 234, 172, 214, 215, 121,
0, 101, 163, 114, 213, 107, 8 },
{ 1, 1, 7, 7 });
shaped_array_t res = conv.compute(
x, x_scale, x_zero_point, w, w_scale, w_zero_point, y_scale, y_zero_point, B);
if (!res.equal(output))
throw std::runtime_error("failed");
}
void test_qlinear_qgemm() {
TestQGemm0();
TestQGemm1();
test_qlinear_qgemm_ii();
test_qlinear_qgemm_ui();
test_qlinear_qgemm_if();
test_qlinear_qgemm_uf();
}
void test_qlinear_conv2(bool random) {
test_qlinear_conv_Conv1D_U8S8_Groups(random);
test_qlinear_conv_Conv1D_U8S8(random);
test_qlinear_conv_Conv1D_U8S8_Groups(random);
test_qlinear_conv_Conv2D_U8S8(random);
test_qlinear_conv_Conv3D_U8S8(random);
test_qlinear_conv_Conv1D_U8S8_Pointwise(random);
test_qlinear_conv_Conv2D_U8S8_Pointwise(random);
test_qlinear_conv_Conv2D_U8U8_Pointwise(random);
test_qlinear_conv_Conv3D_U8S8_Pointwise(random);
test_qlinear_conv_Conv1D_U8S8_Dilations(random);
test_qlinear_conv_Conv2D_U8S8_Dilations(random);
test_qlinear_conv_Conv3D_U8S8_Dilations(random);
test_qlinear_conv_Conv1D_U8S8_Strides(random);
test_qlinear_conv_Conv2D_U8S8_Strides(random);
test_qlinear_conv_Conv3D_U8S8_Strides(random);
test_qlinear_conv_Conv1D_U8S8_Depthwise(random);
test_qlinear_conv_Conv2D_U8S8_Depthwise(random);
test_qlinear_conv_Conv2D_U8U8_Depthwise(random);
test_qlinear_conv_Conv2D_U8S8_DepthwisePointwise(random);
test_qlinear_conv_Conv3D_U8S8_Depthwise(random);
test_qlinear_conv_Conv2D_U8S8_Requantize_NoBias(random);
test_qlinear_conv_Conv2D_U8S8_Requantize_Bias(random);
test_qlinear_conv_Conv2D_U8S8_Requantize_Bias_PerChannel(random);
test_qlinear_conv_Conv2D_U8S8_Groups_Pointwise(random);
test_qlinear_conv_Conv3D_U8S8_Groups_Pointwise(random);
test_qlinear_conv_Conv2D_U8S8_Groups(random);
test_qlinear_conv_Conv3D_U8S8_Groups(random);
test_qlinear_conv_Conv1D_U8S8_Groups(random);
test_qlinear_conv_Conv2D_U8S8_Groups_PerChannel(random);
}
int main() {
experimental_ut_add();
experimental_ut_einsum();
experimental_ut_reduce();
TestQGemm0();
TestQGemm1();
test_qlinear_conv2(false);
test_qlinear_conv2(true);
test_qlinear_conv1();
test_qlinear_qgemm();
}