void
UtilTrinity::callbackVerify (output_buffers *output, int req_id, void *data) {
bool success = true;
- UtilModel *model = static_cast<UtilModel *> (data);
+ CallbackData *cb_data = static_cast<CallbackData *> (data);
+
+ UtilModel *model = static_cast<UtilModel *> (cb_data->data);
+ UtilTrinity *util = cb_data->instance;
+
+ int res = getNPU_requestResult (util->getDeviceHandle (), req_id);
+ std::cout << "Test Result: " << std::to_string (res) << std::endl;
+
+ delete cb_data;
for (uint32_t idx = 0; idx < output->num_buffers; idx++) {
if (model != nullptr) {
/** @brief callback without verification */
void
UtilTrinity::callback (output_buffers *output, int req_id, void *data) {
- UtilModel *model = static_cast<UtilModel *> (data);
+ CallbackData *cb_data = static_cast<CallbackData *> (data);
+
+ UtilModel *model = static_cast<UtilModel *> (cb_data->data);
+ UtilTrinity *util = cb_data->instance;
+
+ int res = getNPU_requestResult (util->getDeviceHandle (), req_id);
+ std::cout << "Test Result: " << std::to_string (res) << std::endl;
+
+ delete cb_data;
if (model == nullptr) {
for (uint32_t idx = 0; idx < output->num_buffers; idx++) free (output->bufs[idx].addr);
int
UtilTrinity::run_each (UtilModel *model, bool sync) {
int status = -EINVAL;
- void *cb_data = nullptr;
+ CallbackData *cb_data = new CallbackData ();
+ cb_data->instance = this;
npuOutputNotify cb;
if (need_model_ && model == nullptr)
if (verify_) {
cb = UtilTrinity::callbackVerify;
if (model) {
- cb_data = static_cast<void *> (model);
+ cb_data->data = static_cast<void *> (model);
}
} else {
cb = UtilTrinity::callback;
total_++;
}
- cb (cb_output, 0, cb_data);
+ cb (cb_output, 0, static_cast<void *> (cb_data));
}
} else {
if (model) {
status = runNPU_model (dev_, model->getModelID (), NPU_INFER_NON_BLOCKING, model->getInput (),
- model->getOutput (), cb, cb_data);
+ model->getOutput (), cb, static_cast<void *> (cb_data));
} else {
/* TODO: revise this when TRIA is implemented */
input_buffers input;
if (status != 0)
return status;
- status = runNPU_async (dev_, 0, &input, cb, NULL, cb_data, NPUASYNC_WAIT);
+ status =
+ runNPU_async (dev_, 0, &input, cb, NULL, static_cast<void *> (cb_data), NPUASYNC_WAIT);
cleanNPU_inputBuffers (dev_, &input);
}
status = submitNPU_request (dev_, req_id);
if (status == 0) {
total_++;
- UtilTrinity::callbackVerify (model->getOutput (), req_id, static_cast<void *> (model));
+
+ CallbackData *cb_data = new CallbackData ();
+ cb_data->instance = this;
+ cb_data->data = static_cast<void *> (model);
+ UtilTrinity::callbackVerify (model->getOutput (), req_id, static_cast<void *> (cb_data));
}
return status;