int test_perfmonsetup() { CpuInfo_t cpuinfo; int group1, group2; int cpu = 0; topology_init(); cpuinfo = get_cpuInfo(); if (cpuinfo->isIntel == 0) { topology_finalize(); return 1; } int ret = perfmon_init(1, &cpu); if (ret != 0) goto fail; if (perfmon_getNumberOfGroups() != 0) goto fail; if (perfmon_getNumberOfThreads() != 1) goto fail; ret = perfmon_addEventSet(eventset_ok); if (ret != 0) goto fail; group1 = ret; if (perfmon_getNumberOfGroups() != 1) goto fail; if (perfmon_getNumberOfEvents(group1) != 3) goto fail; ret = perfmon_setupCounters(group1); if (ret != 0) goto fail; if (perfmon_getIdOfActiveGroup() != group1) goto fail; ret = perfmon_addEventSet(eventset_option); if (ret != 1) goto fail; group2 = ret; if (perfmon_getIdOfActiveGroup() != group1) goto fail; if (perfmon_getNumberOfGroups() != 2) goto fail; if (perfmon_getNumberOfEvents(group1) != 3) goto fail; if (perfmon_getNumberOfEvents(group2) != 3) goto fail; perfmon_finalize(); topology_finalize(); return 1; fail: perfmon_finalize(); topology_finalize(); return 0; }
static int lua_likwid_getNumberOfEvents(lua_State* L) { int number, groupId; if (perfmon_isInitialized == 0) { return 0; } groupId = lua_tonumber(L,1); number = perfmon_getNumberOfEvents(groupId-1); lua_pushnumber(L,number); return 1; }
int test_perfmonperfgroup() { CpuInfo_t cpuinfo; int i; int cpu = 0; topology_init(); cpuinfo = get_cpuInfo(); int ret = perfmon_init(1, &cpu); if (ret != 0) { printf("Perfmon init failed\n"); goto fail; } char** glist = NULL; char** slist = NULL; char** llist = NULL; ret = perfmon_getGroups(&glist, &slist, &llist); if (ret <= 0) { goto fail; } ret = perfmon_addEventSet(glist[0]); if (ret != 0) { printf("Perfmon addEventSet(%s) failed\n", glist[0]); goto fail; } if (perfmon_getNumberOfEvents(ret) == 0) { printf("Perfmon number of events == 0\n"); goto fail; } if (perfmon_getNumberOfMetrics(ret) == 0) { printf("Perfmon number of metrics == 0\n"); goto fail; } for (i=0; i<perfmon_getNumberOfEvents(ret); i++) { if (strcmp(perfmon_getEventName(ret, i), "") == 0) goto fail; if (strcmp(perfmon_getCounterName(ret, i), "") == 0) goto fail; } if (strcmp(perfmon_getGroupName(ret), "Custom") == 0) { goto fail; } if (strcmp(perfmon_getGroupInfoShort(ret), "Custom") == 0) { goto fail; } if (strcmp(perfmon_getGroupInfoLong(ret), "Custom") == 0) { goto fail; } if (perfmon_getLastTimeOfGroup(ret) != 0) { goto fail; } if (perfmon_getTimeOfGroup(ret) != 0) { goto fail; } for (i=0; i<perfmon_getNumberOfMetrics(ret); i++) { if (strcmp(perfmon_getMetricName(ret, i), "") == 0) goto fail; if (perfmon_getMetric(ret, i, 0) != 0.0) goto fail; } free(glist); free(slist); free(llist); perfmon_finalize(); affinity_finalize(); topology_finalize(); return 1; fail: if (glist) free(glist); if (slist) free(slist); if (llist) free(llist); perfmon_finalize(); affinity_finalize(); topology_finalize(); return 0; }
int test_perfmoncustomgroup() { CpuInfo_t cpuinfo; int cpu = 0; topology_init(); cpuinfo = get_cpuInfo(); int ret = perfmon_init(1, &cpu); if (ret != 0) { printf("Perfmon init failed\n"); goto fail; } ret = perfmon_addEventSet(eventset_ok); if (ret != 0) { printf("Perfmon addEventSet(ok) failed\n"); goto fail; } if (perfmon_getNumberOfEvents(ret) != 3) { printf("Perfmon number of events != 3\n"); goto fail; } if (perfmon_getNumberOfMetrics(ret) != 0) { printf("Perfmon number of metrics != 0\n"); goto fail; } if (strcmp(perfmon_getEventName(ret, 0), event1_ok) != 0) { goto fail; } if (strcmp(perfmon_getEventName(ret, 1), event2_ok) != 0) { goto fail; } if (strcmp(perfmon_getEventName(ret, 2), event3_ok) != 0) { goto fail; } if (strcmp(perfmon_getCounterName(ret, 0), ctr1_ok) != 0) { goto fail; } if (strcmp(perfmon_getCounterName(ret, 1), ctr2_ok) != 0) { goto fail; } if (strcmp(perfmon_getCounterName(ret, 2), ctr3_ok) != 0) { goto fail; } if (strcmp(perfmon_getGroupName(ret), "Custom") != 0) { goto fail; } if (strcmp(perfmon_getGroupInfoShort(ret), "Custom") != 0) { goto fail; } if (strcmp(perfmon_getGroupInfoLong(ret), "Custom") != 0) { goto fail; } if (perfmon_getLastTimeOfGroup(ret) != 0) { goto fail; } perfmon_finalize(); affinity_finalize(); topology_finalize(); return 1; fail: perfmon_finalize(); affinity_finalize(); topology_finalize(); return 0; }
int test_perfmonaddeventset() { char eventset_fail1[] = "INSTR_RETIRED.ANY:FIXC0"; char eventset_fail2[] = "INSTR_RETIRED-ANY:FIXC0"; CpuInfo_t cpuinfo; int cpu = 0; topology_init(); cpuinfo = get_cpuInfo(); if (cpuinfo->isIntel == 0) { topology_finalize(); return 1; } int ret = perfmon_init(1, &cpu); if (ret != 0) { printf("Perfmon init failed\n"); goto fail; } if (perfmon_getNumberOfGroups() != 0) { printf("Perfmon number of groups != 0\n"); goto fail; } if (perfmon_getNumberOfThreads() != 1) { printf("Perfmon number of threads != 1\n"); goto fail; } if (perfmon_getIdOfActiveGroup() != -1) { printf("Perfmon id of active group != -1\n"); goto fail; } ret = perfmon_addEventSet(eventset_ok); if (ret != 0) { printf("Perfmon addEventSet(ok) failed\n"); goto fail; } if (perfmon_getNumberOfGroups() != 1) { printf("Perfmon number of groups != 1\n"); goto fail; } if (perfmon_getNumberOfEvents(ret) != 3) { printf("Perfmon number of events != 3\n"); goto fail; } if (perfmon_getIdOfActiveGroup() != -1) { printf("Perfmon id of active group != -1\n"); goto fail; } ret = perfmon_addEventSet(eventset_option); if (ret != 1) { printf("Perfmon addEventSet(options) failed\n"); goto fail; } if (perfmon_getNumberOfGroups() != 2) { printf("Perfmon number of groups != 2\n"); goto fail; } if (perfmon_getNumberOfEvents(ret) != 3) { printf("Perfmon number of events != 3\n"); goto fail; } if (perfmon_getIdOfActiveGroup() != -1) { printf("Perfmon id of active group != -1\n"); goto fail; } ret = perfmon_addEventSet(eventset_fail1); if (ret >= 0) { printf("Perfmon addEventSet(fail1) failed\n"); goto fail; } if (perfmon_getNumberOfGroups() != 2) { printf("Perfmon number of groups != 2\n"); goto fail; } ret = perfmon_addEventSet(eventset_fail2); if (ret >= 0) { printf("Perfmon addEventSet(fail2) failed\n"); goto fail; } if (perfmon_getNumberOfGroups() != 2) { printf("Perfmon number of groups != 2\n"); goto fail; } if (perfmon_getIdOfActiveGroup() != -1) { printf("Perfmon id of active group != -1\n"); goto fail; } perfmon_finalize(); affinity_finalize(); topology_finalize(); return 1; fail: perfmon_finalize(); affinity_finalize(); topology_finalize(); return 0; }