onnx2versal
Loading...
Searching...
No Matches
kernel_utils.h
1#ifndef __KERNEL_UTILS_H__
2#define __KERNEL_UTILS_H__
3
4#include "aie_api/aie.hpp"
5
6#ifdef __LOG_VERBOSE__
7
8// to be deprecated
9#define PROFILE_HEADER(stmt) \
10 stmt; \
11 unsigned cycle_num[2]; \
12 aie::tile tile = aie::tile::current(); \
13 cycle_num[0] = tile.cycles(); // cycle counter of the AI Engine tile
14#define PROFILE_FOOTER \
15 cycle_num[1] = tile.cycles(); \
16 printf("start = %d,end = %d,total = %d\n", cycle_num[0], cycle_num[1], cycle_num[1] - cycle_num[0]);
17
18#define PROFILE_HEADER2 \
19 unsigned cycle_num[2]; \
20 aie::tile tile = aie::tile::current(); \
21 cycle_num[0] = tile.cycles(); // cycle counter of the AI Engine tile
22#define PROFILE_FOOTER2(NAME, ...) \
23 cycle_num[1] = tile.cycles(); \
24 char prefix[64]; \
25 sprintf(prefix, NAME, __VA_ARGS__); \
26 printf("%s start = %d,end = %d,total = %d\n", prefix, cycle_num[0], cycle_num[1], cycle_num[1] - cycle_num[0]);
27
28#else
29
30// to be deprecated
31#define PROFILE_HEADER(stmt)
32#define PROFILE_FOOTER
33
34#define PROFILE_HEADER2
35#define PROFILE_FOOTER2(NAME, ...)
36
37#endif
38
39template<typename VECTYPE>
40void print_fvec(VECTYPE* vec, int N) {
41 for (int i = 0; i < N; i++)
42 printf("%f ", vec[i]);
43 printf("\n");
44}
45
46template<typename VECTYPE, typename CAST>
47void print_vec(VECTYPE* vec, int N) {
48 for (int i = 0; i < N; i++)
49 printf("%d ", (CAST) vec[i]);
50 printf("\n");
51}
52
53#endif // __KERNEL_UTILS_H__