MCPcopy Create free account
hub / github.com/MegEngine/MegCC / profile

Method profile

benchmark/src/CCbenchmark.cpp:66–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void CCBenchmarker::profile() {
67 size_t nr_input = 0;
68 LITE_CAPI_CHECK(
69 LITE_get_all_input_name(m_model, &nr_input, NULL),
70 "get input number failed\n");
71 char* input_name_ptr[nr_input];
72 LITE_CAPI_CHECK(
73 LITE_get_all_input_name(m_model, NULL, (const char**)(&input_name_ptr)),
74 "get input name failed\n");
75 void* input_data[nr_input];
76 for (size_t i = 0; i < nr_input; ++i) {
77 LiteTensor input;
78 LITE_CAPI_CHECK(
79 LITE_get_io_tensor(m_model, input_name_ptr[i], LITE_INPUT, &input),
80 "get input tensor failed\n");
81
82 size_t length;
83 LITE_CAPI_CHECK(
84 LITE_get_tensor_total_size_in_byte(input, &length),
85 "get input tensor size failed\n");
86 input_data[i] = malloc(length);
87 LITE_CAPI_CHECK(
88 LITE_reset_tensor_memory(input, input_data[i], length),
89 "set input ptr failed\n");
90 LITE_CAPI_CHECK(LITE_destroy_tensor(input), "destory input tensor");
91 }
92
93 for (int i = 0; i < warmup; i++) {
94 LITE_CAPI_CHECK(LITE_forward(m_model), "run model failed\n");
95 LITE_CAPI_CHECK(LITE_wait(m_model), "wait model failed\n");
96 }
97
98 struct timeval start;
99 struct timeval end;
100 gettimeofday(&start, NULL);
101 for (int i = 0; i < number; i++) {
102 LITE_CAPI_CHECK(LITE_forward(m_model), "run model failed\n");
103 LITE_CAPI_CHECK(LITE_wait(m_model), "wait model failed\n");
104 }
105 gettimeofday(&end, NULL);
106
107 for (size_t i = 0; i < nr_input; ++i) {
108 free(input_data[i]);
109 }
110
111 unsigned long diff =
112 1000000 * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec;
113 float average_time = ((float)diff) / number / 1000;
114 if (m_log_level == 3) {
115 printf("the inference average time=%.3f ms\n", average_time);
116 }
117}
118
119CCBenchmarker::~CCBenchmarker() {
120 LITE_CAPI_CHECK(LITE_destroy_network(m_model), "delete model failed\n");

Callers 1

main.cppFile · 0.45

Calls 7

LITE_get_all_input_nameFunction · 0.85
LITE_get_io_tensorFunction · 0.85
LITE_reset_tensor_memoryFunction · 0.85
LITE_destroy_tensorFunction · 0.85
LITE_forwardFunction · 0.85
LITE_waitFunction · 0.85

Tested by

no test coverage detected