npubin_meta_profile *meta_profile =
static_cast<npubin_meta_profile *> (elem->getAddr ());
npu_profile_layer * new_layers =
- new npu_profile_layer[meta_profile->node_entry_num];
+ new npu_profile_layer[meta_profile->node_entry_num + 1];
+
+ npu_profile_layer * unknown_layer =
+ &new_layers[meta_profile->node_entry_num];
+
+ snprintf (unknown_layer->name, NPU_OPNAME_MAX - 1, "%s", "Unknown");
+ unknown_layer->name[NPU_OPNAME_MAX - 1] = '\x00';
+ unknown_layer->node_id = -1;
+
+ unknown_layer->running_cycles = 0;
+ unknown_layer->dram_read_bytes = 0;
+ unknown_layer->dram_write_bytes = 0;
+ unknown_layer->sram_read_bytes = 0;
+ unknown_layer->sram_write_bytes = 0;
/** 1) parsing node table */
std::unordered_map<uint32_t, npu_profile_layer *> node_table;
memcpy (&node_num, meta_profile->entry_data + pos, sizeof (uint32_t));
pos += sizeof (uint32_t);
- /** TODO: for now, let's skip vISA insts unmapped to node layers */
if (node_num > 0) {
uint32_t * node_ids = (uint32_t *) (meta_profile->entry_data + pos);
std::cerr << "Unable to find the node ID " << node_id << std::endl;
}
}
+ } else {
+ unknown_layer->running_cycles += profile->layers[i].running_cycles;
+ unknown_layer->dram_read_bytes += profile->layers[i].dram_read_bytes;
+ unknown_layer->dram_write_bytes += profile->layers[i].dram_write_bytes;
+ unknown_layer->sram_read_bytes += profile->layers[i].sram_read_bytes;
+ unknown_layer->sram_write_bytes += profile->layers[i].sram_write_bytes;
}
pos += sizeof (uint32_t) * node_num;
delete [] profile->layers;
profile->layers = new_layers;
- profile->num_layers = num_layers;
+ profile->num_layers = num_layers + 1;
}
}