Skip to content

Commit c90ea1c

Browse files
committed
Make CI tests faster
1 parent 6606eb1 commit c90ea1c

File tree

4 files changed

+61
-14
lines changed

4 files changed

+61
-14
lines changed

bareMetalC/tiled_matmul_ws_At.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ typedef acc_t ACC_T;
2121
typedef elem_t ACC_T;
2222
#endif
2323

24+
#ifdef FAST
25+
26+
#define MAT_DIM_I 19
27+
#define MAT_DIM_K 18
28+
#define MAT_DIM_J 17
29+
30+
#else
31+
2432
#ifndef BAREMETAL
2533
#define MAT_DIM_I 500
2634
#define MAT_DIM_K 412
@@ -31,6 +39,8 @@ typedef elem_t ACC_T;
3139
#define MAT_DIM_J 30
3240
#endif
3341

42+
#endif // ifdef FAST
43+
3444
void print_tile(elem_t* in, int tile_dim) {
3545
for (size_t r = 0; r < tile_dim; r++) {
3646
printf("row starts at: %p\n", in +r*MAT_DIM_J);
@@ -104,30 +114,51 @@ int main() {
104114
// printf("Init A\n");
105115
for (size_t i = 0; i < MAT_DIM_K; ++i) {
106116
for (size_t j = 0; j < MAT_DIM_I; ++j) {
117+
#ifdef FAST
118+
full_A[i][j] = 1;
119+
#else
107120
full_A[i][j] = rand() % 2;
121+
#endif
108122
}
109123
}
110124

111125
// printf("Init B\n");
112126
for (size_t i = 0; i < MAT_DIM_K; ++i) {
113127
for (size_t j = 0; j < MAT_DIM_J; ++j) {
128+
#ifdef FAST
129+
full_B[i][j] = 1;
130+
#else
114131
full_B[i][j] = rand() % 2;
132+
#endif
115133
}
116134
}
117135

118136
// printf("Init D\n");
119137
for (size_t i = 0; i < MAT_DIM_I; ++i) {
120138
for (size_t j = 0; j < MAT_DIM_J; ++j) {
139+
#ifdef FAST
140+
full_D[i][j] = NO_BIAS ? 0 : 1;
141+
#else
121142
full_D[i][j] = NO_BIAS ? 0 : rand() % 2;
143+
#endif
122144
}
123145
}
124146

147+
#ifdef FAST
148+
for (size_t i = 0; i < MAT_DIM_I; ++i) {
149+
for (size_t j = 0; j < MAT_DIM_J; ++j) {
150+
gold[i][j] = MAT_DIM_K + !NO_BIAS;
151+
}
152+
}
153+
#else
125154
printf("Starting slow CPU matmul\n");
126155
unsigned long cpu_start = read_cycles();
127156
full_matmul(full_A, full_B, full_D, gold_full);
128157
unsigned long cpu_end = read_cycles();
129158
printf("Cycles taken: %u\n", cpu_end-cpu_start);
130159
full_matscale(gold_full, gold, ACC_SCALE_IDENTITY);
160+
#endif // #ifdef FAST
161+
131162
#endif
132163

133164
printf("Starting gemmini matmul\n");
@@ -150,8 +181,12 @@ int main() {
150181
printf("C:\n");
151182
full_printMatrix(full_C);
152183
printf("Gold:\n");
184+
#ifdef FAST
185+
printf("All elements must be %d\n", MAT_DIM_K + !NO_BIAS);
186+
#else
153187
full_printMatrix(gold);
154188
printf("\n");
189+
#endif // ifdef FAST
155190

156191
exit(1);
157192
}

bareMetalC/tiled_matmul_ws_Bt.c

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
// See LICENSE for license details.
21

32
#include <stdint.h>
43
#include <stddef.h>
@@ -42,12 +41,6 @@ typedef elem_t ACC_T;
4241

4342
#endif // ifdef FAST
4443

45-
#ifdef FAST
46-
#define RAND 1
47-
#else
48-
#define RAND rand()
49-
#endif
50-
5144
void print_tile(elem_t* in, int tile_dim) {
5245
for (size_t r = 0; r < tile_dim; r++) {
5346
printf("row starts at: %p\n", in +r*MAT_DIM_J);
@@ -144,18 +137,17 @@ int main() {
144137
for (size_t i = 0; i < MAT_DIM_I; ++i) {
145138
for (size_t j = 0; j < MAT_DIM_J; ++j) {
146139
#ifdef FAST
147-
full_D[i][j] = 0;
140+
full_D[i][j] = NO_BIAS ? 0 : 1;
148141
#else
149142
full_D[i][j] = NO_BIAS ? 0 : rand() % 2;
150143
#endif
151144
}
152145
}
153146

154147
#ifdef FAST
155-
// printf("Init D\n");
156148
for (size_t i = 0; i < MAT_DIM_I; ++i) {
157149
for (size_t j = 0; j < MAT_DIM_J; ++j) {
158-
gold[i][j] = MAT_DIM_K;
150+
gold[i][j] = MAT_DIM_K + !NO_BIAS;
159151
}
160152
}
161153
#else
@@ -191,7 +183,7 @@ int main() {
191183

192184
printf("Gold:\n");
193185
#ifdef FAST
194-
printf("All elements must be %d\n", MAT_DIM_K);
186+
printf("All elements must be %d\n", MAT_DIM_K + !NO_BIAS);
195187
#else
196188
full_printMatrix(gold);
197189
printf("\n");

bareMetalC/tiled_matmul_ws_full_C.c

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,30 +74,46 @@ int main() {
7474
static acc_t gold[MAT_DIM_I][MAT_DIM_J];
7575

7676
#if CHECK_RESULT == 1
77+
78+
#ifdef FAST
79+
#define RAND 1
80+
#else
81+
#define RAND rand()
82+
#endif
83+
7784
// printf("Init A\n");
7885
for (size_t i = 0; i < MAT_DIM_I; ++i) {
7986
for (size_t j = 0; j < MAT_DIM_K; ++j) {
80-
full_A[i][j] = rand() % 2;
87+
full_A[i][j] = RAND % 2;
8188
}
8289
}
8390

8491
// printf("Init B\n");
8592
for (size_t i = 0; i < MAT_DIM_K; ++i) {
8693
for (size_t j = 0; j < MAT_DIM_J; ++j) {
87-
full_B[i][j] = rand() % 2;
94+
full_B[i][j] = RAND % 2;
8895
}
8996
}
9097

9198
// printf("Init D\n");
9299
for (size_t i = 0; i < MAT_DIM_I; ++i) {
93100
for (size_t j = 0; j < MAT_DIM_J; ++j) {
94-
full_D[i][j] = NO_BIAS ? 0 : rand() % 2;
101+
full_D[i][j] = NO_BIAS ? 0 : RAND % 2;
95102
}
96103
}
97104

98105
printf("Starting slow CPU matmul\n");
99106
unsigned long cpu_start = read_cycles();
107+
#ifdef FAST
108+
for (size_t i = 0; i < MAT_DIM_I; ++i) {
109+
for (size_t j = 0; j < MAT_DIM_J; ++j) {
110+
gold_full[i][j] = MAT_DIM_K + (NO_BIAS ? 0 : (RAND % 2));
111+
}
112+
}
113+
114+
#else
100115
full_matmul(full_A, full_B, full_D, gold);
116+
#endif
101117
unsigned long cpu_end = read_cycles();
102118
printf("Cycles taken: %u\n", cpu_end-cpu_start);
103119
#endif

bareMetalC/tiled_matmul_ws_perf.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@
4949
#endif
5050

5151
int main() {
52+
#ifndef FAST
53+
5254
#ifndef BAREMETAL
5355
if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0) {
5456
perror("mlockall failed");
@@ -99,6 +101,8 @@ int main() {
99101
const int utilization = 100 * ideal_cycles / (end-start);
100102
printf("Utilization: %d%%\n", utilization);
101103

104+
#endif // ifndef FAST
105+
102106
exit(0);
103107
}
104108

0 commit comments

Comments
 (0)