123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /* StarPU --- Runtime system for heterogeneous multicore architectures.
- *
- * Copyright (C) 2010-2021 Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
- * Copyright (C) 2013 Joris Pablo
- * Copyright (C) 2013 Thibaut Lambert
- * Copyright (C) 2020 Federal University of Rio Grande do Sul (UFRGS)
- *
- * StarPU is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or (at
- * your option) any later version.
- *
- * StarPU is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * See the GNU Lesser General Public License in COPYING.LGPL for more details.
- */
- #ifndef __STARPU_FXT_H__
- #define __STARPU_FXT_H__
- #include <starpu_config.h>
- #include <starpu_perfmodel.h>
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- /**
- @defgroup API_FxT_Support FxT Support
- @{
- */
- struct starpu_fxt_codelet_event
- {
- char symbol[2048];
- int workerid;
- char perfmodel_archname[256];
- uint32_t hash;
- size_t size;
- float time;
- };
- struct starpu_fxt_options
- {
- unsigned per_task_colour;
- unsigned no_events;
- unsigned no_counter;
- unsigned no_bus;
- unsigned no_flops;
- unsigned ninputfiles;
- unsigned no_smooth;
- unsigned no_acquire;
- unsigned memory_states;
- unsigned internal;
- unsigned label_deps;
- char *filenames[STARPU_FXT_MAX_FILES];
- char *out_paje_path;
- char *distrib_time_path;
- char *activity_path;
- char *sched_tasks_path;
- char *dag_path;
- char *tasks_path;
- char *data_path;
- char *papi_path;
- char *comms_path;
- char *number_events_path;
- char *anim_path;
- char *states_path;
- char *dir;
- char worker_names[STARPU_NMAXWORKERS][256];
- int nworkers;
- struct starpu_perfmodel_arch worker_archtypes[STARPU_NMAXWORKERS];
- /**
- In case we are going to gather multiple traces (e.g in the case of
- MPI processes), we may need to prefix the name of the containers.
- */
- char *file_prefix;
- /**
- In case we are going to gather multiple traces (e.g in the case of
- MPI processes), this variable stores the time offset with the rank 0.
- */
- uint64_t file_offset;
- /**
- In case we are going to gather multiple traces (e.g in the case of
- MPI processes), this variable stores the MPI rank of the trace file.
- */
- int file_rank;
- /**
- In case we want to dump the list of codelets to an external tool
- */
- struct starpu_fxt_codelet_event **dumped_codelets;
- /**
- In case we want to dump the list of codelets to an external tool, number
- of dumped codelets.
- */
- long dumped_codelets_count;
- };
- void starpu_fxt_options_init(struct starpu_fxt_options *options);
- void starpu_fxt_options_shutdown(struct starpu_fxt_options *options);
- void starpu_fxt_generate_trace(struct starpu_fxt_options *options);
- /**
- Determine whether profiling should be started by starpu_init(), or only when
- starpu_fxt_start_profiling() is called. \p autostart should be 1 to do so, or 0 to
- prevent it.
- */
- void starpu_fxt_autostart_profiling(int autostart);
- /**
- Start recording the trace. The trace is by default started from
- starpu_init() call, but can be paused by using
- starpu_fxt_stop_profiling(), in which case
- starpu_fxt_start_profiling() should be called to resume recording
- events.
- */
- void starpu_fxt_start_profiling(void);
- /**
- Stop recording the trace. The trace is by default stopped when calling
- starpu_shutdown(). starpu_fxt_stop_profiling() can however be used to
- stop it earlier. starpu_fxt_start_profiling() can then be called to
- start recording it again, etc.
- */
- void starpu_fxt_stop_profiling(void);
- void starpu_fxt_write_data_trace(char *filename_in);
- void starpu_fxt_write_data_trace_in_dir(char *filename_in, char *dir);
- /**
- Wrapper to get value of env variable STARPU_FXT_TRACE
- */
- int starpu_fxt_is_enabled(void);
- /**
- Add an event in the execution trace if FxT is enabled.
- */
- void starpu_fxt_trace_user_event(unsigned long code);
- /**
- Add a string event in the execution trace if FxT is enabled.
- */
- void starpu_fxt_trace_user_event_string(const char *s);
- /** @} */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __STARPU_FXT_H__ */
|