19#define EVENTS_WIDTH (sizeof(uint32_t) * 8)
20#define DEVICE_WIDTH (7)
21#define OPCODE_WIDTH (1)
22#define QLMASK_WIDTH (2)
23#define NAMEID_WIDTH (2)
24#define UNUSED_WIDTH (EVENTS_WIDTH - DEVICE_WIDTH - OPCODE_WIDTH - QLMASK_WIDTH - NAMEID_WIDTH)
25#define DEVICE_SHIFT (EVENTS_WIDTH - UNUSED_WIDTH - DEVICE_WIDTH)
26#define OPCODE_SHIFT (DEVICE_SHIFT - OPCODE_WIDTH)
27#define QLMASK_SHIFT (OPCODE_SHIFT - QLMASK_WIDTH)
28#define NAMEID_SHIFT (QLMASK_SHIFT - NAMEID_WIDTH)
29#define DEVICE_MASK ((0xFFFFFFFF >> (EVENTS_WIDTH - DEVICE_WIDTH)) << DEVICE_SHIFT)
30#define OPCODE_MASK ((0xFFFFFFFF >> (EVENTS_WIDTH - OPCODE_WIDTH)) << OPCODE_SHIFT)
31#define QLMASK_MASK ((0xFFFFFFFF >> (EVENTS_WIDTH - QLMASK_WIDTH)) << QLMASK_SHIFT)
32#define NAMEID_MASK ((0xFFFFFFFF >> (EVENTS_WIDTH - NAMEID_WIDTH)) << NAMEID_SHIFT)
33#define DEVICE_FLAG (0x2)
34#define OPCODE_FLAG (0x1)
35#define OPCODE_EXP (0x0)
36#define OPCODE_SUM (0x1)
59 {
"TEMPLATE_ZERO" ,
"This is a template counter, that always returns 0" },
60 {
"TEMPLATE_CONSTANT",
"This is a template counter, that always returns a constant value of 42" },
61 {
"TEMPLATE_FUNCTION",
"This is a template counter, that allows for different functions" },
177 for (
i = 0;
i < ctx->num_events; ++
i) {
185 ctx->counters[
i] = (
long long) 0;
187 ctx->counters[
i] = (
long long) 42;
190 ctx->counters[
i] = (ctx->counters[
i]) ? ctx->counters[
i] * 2 : 2;
192 ctx->counters[
i] = (ctx->counters[
i]) ? ctx->counters[
i] + 1 : 1;
196 *counters = ctx->counters;
203 ctx->state &= ~TEMPL_CTX_RUNNING;
210 memset(ctx->counters, 0,
sizeof(ctx->counters) * ctx->num_events);
226 ctx->state &= ~TEMPL_CTX_OPENED;
274 if (info.
flags == 0) {
304 switch (info.
flags) {
306 snprintf(
name, len,
"%s:device=%i:function=%s",
311 snprintf(
name, len,
"%s:device=%i",
316 snprintf(
name, len,
"%s:function=%s",
354 switch (code_info.
flags) {
360 sprintf(info->
symbol,
"%s:device=%i:function=%s",
375 sprintf(info->
long_descr,
"%s masks:Device qualifier [%s]",
380 sprintf(info->
symbol,
"%s:function=%s",
383 sprintf(info->
long_descr,
"%s masks:Mandatory function qualifier (exp,sum)",
510 if (NULL == ctx->counters) {
531 ctx->events_id = NULL;
595 char *p = strstr(
name,
":device=");
597 *device = (
int) strtol(p + strlen(
":device="), NULL, 10);
607 if (0 == strcmp(basename,
"TEMPLATE_FUNCTION")) {
608 char *p = strstr(
name,
":function=");
610 if (strncmp(p + strlen(
":function="),
"exp", strlen(
"exp")) == 0) {
612 }
else if (strncmp(p + strlen(
":function="),
"sum", strlen(
"sum")) == 0) {
627 char *p = strstr(
name,
":");
629 if (len < (
int)(p -
name)) {
632 strncpy(base,
name, (
size_t)(p -
name));
634 if (len < (
int) strlen(
name)) {
637 strncpy(base,
name, (
size_t) len);
#define PAPI_NTV_ENUM_UMASKS
#define PAPI_2MAX_STR_LEN
char events[MAX_EVENTS][BUFSIZ]
static nvmlDevice_t * devices
unsigned long AO_t __attribute__((__aligned__(4)))
#define papi_calloc(a, b)
device_table_t * device_table_p
char symbol[PAPI_HUGE_STR_LEN]
char long_descr[PAPI_HUGE_STR_LEN]
inline_static int _papi_hwi_lock(int lck)
inline_static int _papi_hwi_unlock(int lck)
#define TEMPL_CTX_RUNNING
static int unload_profiler_v1_symbols(void)
int vendorp1_ctx_open(unsigned int *events_id, int num_events, vendorp_ctx_t *ctx)
int vendorp1_evt_code_to_info(unsigned int event_code, PAPI_event_info_t *info)
static int get_events_count(int *num_events)
static ntv_event_table_t ntv_table
static int finalize_ctx(vendorp_ctx_t ctx)
int vendorp1_evt_name_to_code(const char *name, unsigned int *event_code)
static int evt_id_to_info(uint32_t event_id, event_info_t *info)
static int evt_name_to_basename(const char *name, char *base, int len)
int vendorp1_evt_code_to_descr(unsigned int event_code, char *descr, int len)
int vendorp1_ctx_stop(vendorp_ctx_t ctx)
static struct @9 vendor_events[]
int vendorp1_init_pre(void)
static int get_events(ntv_event_t *events, int num_events)
static int evt_name_to_opcode(const char *name, int *opcode)
static ntv_event_table_t * ntv_table_p
static int finalize_event_table(void)
int vendorp1_ctx_close(vendorp_ctx_t ctx)
int vendorp1_evt_enum(unsigned int *event_code, int modifier)
int vendorp1_ctx_reset(vendorp_ctx_t ctx)
int vendorp1_shutdown(void)
int vendorp1_ctx_read(vendorp_ctx_t ctx, long long **counters)
static int evt_id_create(event_info_t *info, uint32_t *event_id)
int vendorp1_ctx_start(vendorp_ctx_t ctx)
static int close_ctx(vendorp_ctx_t ctx)
static int evt_name_to_device(const char *name, int *device)
static int initialize_event_table(void)
static int init_ctx(unsigned int *events_id, int num_events, vendorp_ctx_t ctx)
static int load_profiler_v1_symbols(void)
int vendorp1_evt_code_to_name(unsigned int event_code, char *name, int len)
static int open_ctx(vendorp_ctx_t ctx)