63 {
65 for (int num_out = 1; num_out < 130; ++num_out) {
66 for (int num_in = 1; num_in < 130; ++num_in) {
67 GENERIC_2D_ARRAY<int8_t> w =
InitRandom(num_out, num_in + 1);
70 int ro = num_out;
73 }
74 std::vector<TFloat> base_result(num_out);
76 std::vector<TFloat> test_result(ro);
77 std::vector<int8_t> shaped_wi;
78 int32_t rounded_num_out;
79 matrix.Init(w, shaped_wi, rounded_num_out);
80 scales.resize(rounded_num_out);
81 if (matrix.matrixDotVectorFunction) {
82 matrix.matrixDotVectorFunction(w.dim1(), w.dim2(), &shaped_wi[0], &scales[0], &u[0],
83 &test_result[0]);
84 } else {
86 }
87 for (
int i = 0;
i < num_out; ++
i) {
89 total += base_result[
i];
90 }
91 }
92 }
93
94#ifdef FAST_FLOAT
96#else
98#endif
99 }
#define EXPECT_FLOAT_EQ(val1, val2)
int RoundOutputs(int size) const
static void MatrixDotVector(const GENERIC_2D_ARRAY< int8_t > &w, const std::vector< TFloat > &scales, const int8_t *u, TFloat *v)
static const IntSimdMatrix * intSimdMatrix
std::vector< int8_t > RandomVector(int size, const IntSimdMatrix &matrix)
std::vector< TFloat > RandomScales(int size)
GENERIC_2D_ARRAY< int8_t > InitRandom(int no, int ni)