- Commit
- f529d36ef76eacfbad8d463b547b3b8a8db9be7e
- Parent
- 1497e5933ac42eeb193dd11272e0227f51521c0a
- Author
- Pablo <pablo-pie@riseup.net>
- Date
Minor tweak in perf.h
Educational material on the SciPy implementation of numerical linear algebra algorithms
Minor tweak in perf.h
1 file changed, 4 insertions, 6 deletions
Status | File Name | N° Changes | Insertions | Deletions |
Modified | getrf/benchmarks/src/perf.h | 10 | 4 | 6 |
diff --git a/getrf/benchmarks/src/perf.h b/getrf/benchmarks/src/perf.h @@ -65,10 +65,6 @@ typedef struct { typedef struct { int fds[PERF_EVENT_COUNT]; - union { - uint64_t raw_result[PERF_EVENT_COUNT]; - PerfResult result; - }; } PerfRecorder; void perf_start_recording(PerfRecorder *pr, size_t cpu_id) @@ -100,9 +96,11 @@ void perf_start_recording(PerfRecorder *pr, size_t cpu_id) PerfResult perf_stop_recording(PerfRecorder *pr) { + union { uint64_t raw_result[PERF_EVENT_COUNT]; PerfResult result; } r; + for (size_t i = 0; i < PERF_EVENT_COUNT; i++) { ioctl(pr->fds[i], PERF_EVENT_IOC_DISABLE, 0); // stop counting - if (!read(pr->fds[i], &pr->raw_result[i], sizeof(uint64_t))) { + if (!read(pr->fds[i], &r.raw_result[i], sizeof(uint64_t))) { fprintf(stderr, "ERROR: Coulnd't read perf counter for %s!\n", perf_event_str[i]); exit(EXIT_FAILURE); @@ -110,7 +108,7 @@ PerfResult perf_stop_recording(PerfRecorder *pr) close(pr->fds[i]); } - return pr->result; + return r.result; } #endif // PERF_H_