}
int
-ModelProfiler::getProfile (int req_id, npu_profile *profile) {
+ModelProfiler::removeRequest (int req_id) {
+ return profile_map_.remove (req_id);
+}
+
+int
+ModelProfiler::getProfile (int req_id, const npu_profile_opt &opt, npu_profile *profile) {
ProfileData *data = profile_map_.find (req_id);
if (data == nullptr)
return -ENOENT;
if (status != 0)
return status;
- HWmem *extended = model->getExtendedMetadata ();
- if (extended != nullptr)
- manipulateProfile (extended, profile);
+ if (opt.level == PROFILE_LEVEL_EXT_META || opt.level == PROFILE_LEVEL_LAYER) {
+ HWmem *extended = model->getExtendedMetadata ();
+ if (extended != nullptr)
+ manipulateProfile (extended, profile);
+ else if (opt.level == PROFILE_LEVEL_LAYER)
+ status = -EINVAL;
+ }
- profile_map_.remove (req_id);
- return 0;
+ return status;
}
void
ModelProfiler::manipulateProfile (HWmem *extended, npu_profile *profile) {
npubin_meta_profile *meta_profile =
reinterpret_cast<npubin_meta_profile *> (extended->getData ());
- npu_profile_layer *new_layers =
- new npu_profile_layer[meta_profile->node_entry_num + 1];
+ npu_profile_layer *new_layers = new npu_profile_layer[meta_profile->node_entry_num + 1];
npu_profile_layer *unclassified = &new_layers[meta_profile->node_entry_num];
layer->start_cycles = profile->layers[i].start_cycles;
if (layer->end_cycles < profile->layers[i].end_cycles)
layer->end_cycles = profile->layers[i].end_cycles;
- layer->dram_read_bytes +=
- profile->layers[i].dram_read_bytes / node_num;
- layer->dram_write_bytes +=
- profile->layers[i].dram_write_bytes / node_num;
- layer->sram_read_bytes +=
- profile->layers[i].sram_read_bytes / node_num;
- layer->sram_write_bytes +=
- profile->layers[i].sram_write_bytes / node_num;
+ layer->dram_read_bytes += profile->layers[i].dram_read_bytes / node_num;
+ layer->dram_write_bytes += profile->layers[i].dram_write_bytes / node_num;
+ layer->sram_read_bytes += profile->layers[i].sram_read_bytes / node_num;
+ layer->sram_write_bytes += profile->layers[i].sram_write_bytes / node_num;
layer->visa_exec_seq = -1;
} else {
std::cerr << "Unable to find the node ID " << node_id << std::endl;