mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-25 05:20:34 +05:00
PajeTrace - User defined containers
This commit is contained in:
parent
618b81286a
commit
3085fac973
@ -670,9 +670,21 @@ namespace ngcore
|
|||||||
|
|
||||||
std::map<int, int> containers;
|
std::map<int, int> containers;
|
||||||
|
|
||||||
|
for(auto i : Range(user_containers.size()))
|
||||||
|
{
|
||||||
|
auto & [name, parent] = user_containers[i];
|
||||||
|
int a_parent = parent == -1 ? container_task_manager : containers[parent];
|
||||||
|
containers[i] = paje.CreateContainer( container_type_timer, a_parent, name );
|
||||||
|
}
|
||||||
|
|
||||||
for(auto ev : user_events)
|
for(auto ev : user_events)
|
||||||
|
{
|
||||||
if(containers[ev.container]==0)
|
if(containers[ev.container]==0)
|
||||||
containers[ev.container] = paje.CreateContainer( container_type_timer, container_task_manager, "User " + ToString(ev.container) );
|
{
|
||||||
|
std::string name = "User " + ToString(ev.container);
|
||||||
|
containers[ev.container] = paje.CreateContainer( container_type_timer, container_task_manager, name );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int i_start = 0;
|
int i_start = 0;
|
||||||
for(auto i : Range(user_events.size()))
|
for(auto i : Range(user_events.size()))
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#ifndef NETGEN_CORE_PAJE_TRACE_HPP
|
#ifndef NETGEN_CORE_PAJE_TRACE_HPP
|
||||||
#define NETGEN_CORE_PAJE_TRACE_HPP
|
#define NETGEN_CORE_PAJE_TRACE_HPP
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@ -99,8 +100,8 @@ namespace ngcore
|
|||||||
|
|
||||||
struct UserEvent
|
struct UserEvent
|
||||||
{
|
{
|
||||||
TTimePoint t_start, t_end;
|
TTimePoint t_start = 0, t_end = 0;
|
||||||
std::string data;
|
std::string data = "";
|
||||||
int container = 0;
|
int container = 0;
|
||||||
int id = 0;
|
int id = 0;
|
||||||
|
|
||||||
@ -130,6 +131,7 @@ namespace ngcore
|
|||||||
std::vector<Job> jobs;
|
std::vector<Job> jobs;
|
||||||
std::vector<TimerEvent> timer_events;
|
std::vector<TimerEvent> timer_events;
|
||||||
std::vector<UserEvent> user_events;
|
std::vector<UserEvent> user_events;
|
||||||
|
std::vector<std::tuple<std::string, int>> user_containers;
|
||||||
std::vector<TimerEvent> gpu_events;
|
std::vector<TimerEvent> gpu_events;
|
||||||
std::vector<std::vector<ThreadLink> > links;
|
std::vector<std::vector<ThreadLink> > links;
|
||||||
NGCORE_API static std::vector<MemoryEvent> memory_events;
|
NGCORE_API static std::vector<MemoryEvent> memory_events;
|
||||||
@ -146,10 +148,19 @@ namespace ngcore
|
|||||||
void operator=(const PajeTrace &) = delete;
|
void operator=(const PajeTrace &) = delete;
|
||||||
void operator=(PajeTrace &&) = delete;
|
void operator=(PajeTrace &&) = delete;
|
||||||
|
|
||||||
void AddUserEvent(TTimePoint t_start, TTimePoint t_end, const std::string & data, int container = 0, int id=0 )
|
int AddUserContainer(std::string name, int parent=-1)
|
||||||
|
{
|
||||||
|
if(auto pos = std::find(user_containers.begin(), user_containers.end(), std::tuple{name,parent}); pos != user_containers.end())
|
||||||
|
return pos - user_containers.begin();
|
||||||
|
int id = user_containers.size();
|
||||||
|
user_containers.push_back({name, parent});
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AddUserEvent(UserEvent ue)
|
||||||
{
|
{
|
||||||
if(!tracing_enabled) return;
|
if(!tracing_enabled) return;
|
||||||
user_events.push_back(UserEvent{t_start, t_end, data, container, id});
|
user_events.push_back(ue);
|
||||||
}
|
}
|
||||||
void StartGPU(int timer_id = 0)
|
void StartGPU(int timer_id = 0)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user