forked from icl-utk-edu/papi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLogP412.txt
517 lines (357 loc) · 17.9 KB
/
ChangeLogP412.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
2011-01-17
* src/configure: Ran autoconf to generate updated configure file.
2011-01-16
* src/components/README: Adding a component for the FreeBSD OS that
reports the value of the thermal sensors available in the Intel
Core processors. There are as many counters as cores, and the
value reported by each counter is in Kelvin degrees.
* src/freebsd.c: Implemented missing
_papi_freebsd_ntv_name_to_code.
* src/: Makefile.in, Makefile.inc, configure.in, ctests/Makefile:
Fix dependency on -ldl
Now configure checks if dl* symbols are in the base system
libraries (i.e., no -ldl needed). If so, avoid adding -ldl to
shlib example.
If dl* symbols are not find in the base system libraries, then
check for -ldl, and if it exists, pass it to ctests/Makefile
through Makefile. If -ldl is not found, fail at configure time.
* src/ctests/multiattach.c: Fix to compile in FreeBSD.
* src/: freebsd-memory.c, freebsd.c: Code cleanup.
2011-01-14
* src/: perf_events.c, perfmon.c: [PATCH 18/18] papi: make
_perfmon2_pfm_pmu_type variable static
In perf_events.c and perfmon.c the variable
_perfmon2_pfm_pmu_type is used locally only, making it static.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: linux-bgp.c, linux-ia64.c, perf_events.c, perfctr.c,
perfmon.c: [PATCH 17/18] papi: remove inline_static macro in
Linux only code
We better replace the macro with 'static inline'. Not sure if
this works for all compilers, so doing it for Linux only files.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/x86_cache_info.c: [PATCH 16/18] papi: remove static inline
function declaration
By moving the static inline function cpuid() to the begin of the
file we may remove its declaration.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/linux.h: [PATCH 15/18] papi: remove unused linux.h header
file
This file is included nowhere, removing it.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/linux-ia64.c: [PATCH 14/18] papi: fix array out of bounds
access
Fixing the following warning:
linux-ia64.c: In function ?_ia64_init_substrate?:
linux-ia64.c:1123:22: warning: array subscript is above array
bounds
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: configure, configure.in: [PATCH 13/18] papi: remove
unnecassary checks in configure.in
The check is obsolete and covered by default.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: papi_pfm_events.c, perf_events.c, perfmon.c, perfmon.h:
[PATCH 12/18] papi: include perfmon header files only where
necessary
This patch includes perfmon header files only where necessary.
Declarations in perfmon/perfmon.h are never used, removing its
inclusion. Itanium header files are needed only in perfmon.c and
perf_events.c.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: papi_pfm_events.c, perfctr-x86.c: [PATCH 11/18] papi: make
some functions in papi_pfm_events.c static
Functions _pfm_decode_native_event() and _pfm_convert_umask() are
internally used only. Remove export declaration and make it
static.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: Rules.pfm, linux-ia64-pfm.h, linux-ia64.c, pfmwrap.h:
[PATCH 10/18] papi: rename pfmwrap.h -> linux-ia64-pfm.h
pfmwrap.h actually only contains IA64 code included by
linux-ia64.c. Rename it to linux-ia64-pfm.h.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: linux-ia64.c, pfmwrap.h: [PATCH 09/18] papi, linux-ia64:
make inline functions static
Inline functions should be static. Fixing it.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: linux-ia64.c, papi_pfm_events.c: [PATCH 08/18] papi: fix
_papi_pfm_ntv_name_to_code() function interface
The function is supposed to return a PAPI error code which is an
integer. Make the function's return code an integer too.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/perfctr-ppc64.c: [PATCH 07/18] papi: fix spelling modifer ->
modifier
Fix spelling: modifer -> modifier
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: linux-ia64.c, papi_pfm_events.c, papi_pfm_events.h,
perf_events.c, perfctr-x86.c, perfmon.c: [PATCH 06/18] papi:
define function interface in papi_pfm_events.h
The header file should define the interface that
papi_pfm_events.c provides. Declarations used internally only in
papi_pfm_events.c are moved there. Now papi_pfm_events.h only
contains the prototype functions. Remapping of definitions is
removed too. This cleanup removes duplicate code and better
defines the interface.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: Rules.perfctr, Rules.perfctr-pfm, linux.c, multiplex.c,
papi_vector.c, perfctr-x86.c, perfctr.c, ctests/test_utils.c:
[PATCH 05/18] papi: rename linux.c -> perfctr.c
The name of linux.c is misleading, it only implements perfctr
functionality. Thus renaming it to perfctr.c.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: papi_pfm_events.c, perfctr-x86.c: [PATCH 04/18] papi: make
_papi_pfm_init() static by moving it to perfctr-x86.c
_papi_pfm_init() is only used in perfctr-x86.c but implemented in
papi_pfm_events.c. Move it to perfctr-x86.c and make it static.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/perfmon.c: [PATCH 03/18] papi: make some functions static in
perfmon.c
The functions are only used in perfmon.c, making it static.
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/: Rules.pfm, Rules.pfm_pe: [PATCH 02/18] papi: do not compile
libpfm examples to support cross compilation
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/Rules.pfm: To cross compile papi we need to pass the
architecture to libpfm. Otherwise it will be confused and tries
to build the host's make targets with the cross compiler ending
up in the following error:
pfmlib_amd64.c: In function ?cpuid?:
pfmlib_amd64.c:166:3: error: impossible register constraint in
?asm?
pfmlib_amd64.c:172:1: error: impossible register constraint in
?asm?
make[2]: *** [pfmlib_amd64.o] Error 1
Signed-off-by: Robert Richter <robert.richter at amd.com>
* src/ctests/Makefile: Temporarily back out the FreeBSD makefile
change that breaks the build so that I can properly test some
other changes.
* src/papi_events.csv: Change the Core2 L1_TCM preset to be
LLC_REFERENCES
The current event (L2_RQSTS:SELF:MESI) returns an event
equivelent to LLC_REFERENCES on libpfm3, but in libpfm4
L2_RQSTS:SELF:MESI maps instead to L2_RQSTS:SELF:MESI:ALL which
counts prefetches too.
By moving to LLC_REFERENCES both libpfm3 and libpfm4 count the
proper value. This also makes the "tenth" benchmark pass when
using PAPI/libpfm4.
* src/configure: Update to match current configure.in
* src/ctests/Makefile: Fix the if / fi syntax of the last change.
2011-01-13
* src/: Makefile.inc, configure.in, freebsd-memory.c, freebsd.c,
ctests/Makefile, ctests/zero_attach.c: Changes from Harald Servat
for freebsd support. Note that configure has not been regenerated
from this version of configure.in.
* papi.spec, doc/Doxyfile, doc/Doxyfile-everything,
src/Makefile.in, src/configure.in, src/papi.h: Change version
numbers to 4.1.2 in preparation for a release.
2011-01-12
* src/ctests/code2name.c: The code2name test was assuming that the
native events start right at PAPI_NATIVE_MASK. We specifically
document elsewhere this might not be the case, and indeed for the
libpfm4 code this fails.
This fix changes the code to properly enunmerate the native
events for the test.
2011-01-06
* src/: papi.c, papi_internal.c: Fix a long-standing bug where we
were walking off the end of the EventInfoArray in
remap_event_position().
This was noticed by Richard Strong when instrumenting some of the
PARSEC benchmarks.
In papi_internal.c in the remap_event_position() function we have
the loop
for ( i = 0; i <= total_events; i++ ) {
It seems weird that we are doing a <= compare, and in fact this
is why we
walk off the end of the array sometimes. But why only somtimes?
If I
change that <= to a < then many of the regression tests fail.
It turns out that the two calls to remap_event_position() in
papi_internal.c are called with ESI->NumberOfEvents being one
less
than it should be, as it is incremented after the
remap_event_position()
call (though the new events are added before the call). This is
why
<= is used.
However the call in PAPI_start() happens with
ESI->NumberOfEvents
with the right value. In this case < should be used.
The fix I've come up with has a NumberOfEvents value passed in
as a
parameter to remap_event_position(). This way the value+1 can
be passed in the former cases.
2010-12-20
* src/aix.c: Problem on POWER6 with AIX: pm_initialize() cannot be
called multiple times with PM_CURRENT. Instead, use the actual
proc type - here PM_POWER6 - and multiple invocations are no
longer a problem. Ctests/multiplex1.c passes now.
2010-12-15
* src/run_tests.sh: If we don't run any tests, get buildbot's
attention.
2010-12-14
* src/aix.c: number_of_nodes var was set to zero in
_aix_get_system_info. This caused the papi utilities to report
that the number of total CPUs is zero. This also caused
ctests/hwinfo to fail on POWER6 with AIX.
2010-12-13
* src/papi_internal.h: Slight re-ordering of the no_vararg_macro
debug statements. (I actually tested the changes with
--with-debug and without on aix)
2010-12-10
* src/run_tests.sh: Change the syntax on our find command to be
more posix compliant.
GNU is Not UNIX, cute acronym or massive compatibility
conspiracy. I fall back to posix, you decide!
* src/: configure, configure.in: Update configure file to be aware
of the existence of AIX-Power7.
PAPI still won't build, but it gets further than before.
2010-12-09
* src/run_tests.sh: Make our grep invocation posix compliant.
(--invert-match == -v & --regex == -e )
* src/ctests/overflow_allcounters.c: Separate 'indent' check-in so
that the previous modifications are comprehensible :)
* src/ctests/overflow_allcounters.c: The overflow_allcounters test
failed on Power6 with AIX (pmapi) but passes on Power6 with linux
(perf_events | perfctr). Therefore detect if we're running on
AIX, print a warning, but still pass the test.
* src/run_tests.sh: Move away from echo -n to the shell builtin
printf (echo -n is not portable)
non-argumented instances of echo are fine.
* src/run_tests_exclude.txt: Skip the non-test ctests/burn
executable.
* src/Matlab/: PAPI_Matlab.c, PAPI_Matlab.readme: Change
documentation for matlab integration to reflect the need to link
to the libpapi.so library and not the static one.
Also listed me and the ptools-perfapi list as points of contact
for future questions *gulp*
2010-12-08
* src/: configure, configure.in, run_tests.sh: Clean up (purge)
references to libpfm-2.x in configure and run_tests.sh
* src/Matlab/PAPI_Matlab.c: MATLAB fixups: Calls to PAPI('stop')
now stop counting even if we ignore the return values.
* src/Matlab/PAPI_Matlab.c: Fixup for papi matlab integration.
Calls to PAPI('stop') don't cause errors now. If you call
PAPI('stop') with out capturing its return value, it does
nothing.
* src/Matlab/PAPI_Matlab.c: mex does not like c++ style comments
(double-backslash)
2010-12-06
* src/solaris-ultra.c: Resolved a couple type cast warnings. Also
initialized a variable and enabled GET_OVERFLOW_ADDRESS code in
two places. The overflow test suite still has a number of
failures and is disabled in configure.
2010-11-24
* src/papi_internal.h: That last commit was lacking in
creativity... By having the debug function names still a macro,
we get all the goodness of __FILE__ etc bing in the right place
and still not using variadic macros.
#define SUBDBG do{ if (_papi_hwi_debug & DEBUG_SUBSTRATE )
print_the_label; } while (0); _SUBDBG was the clever line that
eluded me yesterday.
2010-11-23
* src/papi_internal.h: Turns out that when DEBUG and
NO_VARARG_MACRO are true, we didn't correctly implement
component-level debug functions. This change uses variable
argument lists ( man stdarg) to correctly handle this case. (
papi_internal.h defines these)
Note that debugging information is not completly useful; due to
functions which use variable argument lists not being inlinable (
the inline keyword is afterall only a sugestion), all messages
appear to come from papi_internal.h:PAPIDEBUG:525:22619 and I am
not clever enough to get around that in general right now.
Thanks to Maynard Johnson for reporting.
* src/papi_events.csv: Enable the PAPI_HW_INT event on Nehalem, as
tests show the HW_INT:RCV event is the proper one to use here.
2010-11-22
* src/papi_events.csv: Update the preset events for Nehalem, as
contributed by Michel Brown.
2010-11-19
* src/: perf_events.h, perf_events.c: Address problem with overflow
handler continuing to count events. Add overflow status field to
determine if an event set has any events enabled for overflow.
Use IOC_REFRESH instead of IOC_ENABLE when overflowing.
Implement IOC_REFRESH at end of overflow handler. None of this
worked. Also implemented an IOC_DISABLE at top of overflow
handler. That worked, even though it's suboptimal.
2010-11-17
* src/utils/command_line.c: test_fail_exit() substituted for
test_fail(). This became necessary because
PAPI_event_name_to_code now returns a PAPI_EATTR error if the
base name matches but attribute names don't. This utility was
producing an error message and then running the test. Perfctr
implementations will happily add a base name with no umasks and
then generate 0 counts. This fix prevents that behavior.
* src/ctests/test_utils.c: Rewrite of test_fail_exit() to call
test_fail(). It should be noted that test_fail_exit() behaves the
way test_fail() used to behave, i.e. it exits after printing the
fail message. However, test_fail no longer exits as that was
causing problems with multi-threaded tests not freeing memory. In
those cases where an exit is desired, calls to test_fail_exit()
should be substituted for calls to test_fail().
* src/: papi.h, papi_data.c, papi_pfm_events.c, perfmon.c: Added 3
new error codes: PAPI_EATTR, PAPI_ECOUNT, and PAPI_ECOMBO. These
map onto equivalent errors in libpfm and are provided to give
more detail on failures in libpfm calls. A new error mapping
function has been added to papi_pfm_events.c to map libpfm errors
to PAPI errors, and this function is employed in the
compute_kernel_args function in perfmon.c. It could also be
deployed elsewhere, but so far is not.
2010-11-09
* src/x86_cache_info.c: The cpuid change yesterday broke
compilation on a 32-bit Pentium 3. Fix the inline assembly to
compile properly there too.
2010-11-08
* src/: configure, configure.in: Fix configure script to properly
detect Pentium M machines.
* src/x86_cache_info.c: Add cpuid leaf4 cache detection support.
This has been available on intel processors since Late model P4s
and all Core2 and newer. It returns cache info in a different
way than the older leaf2 method.
Currently we only use leaf4 data if the leaf2 results tell us to
(apparently Westmere does that). Otherwise we use the old
method.
It might be interesting to use more of the leaf4 info. It can
tell us things such as how many processors share a socket, how
many processors share a cache, and info on the inclusivity of a
cache.
* src/: linux.c, perfctr-x86.c: Add perfctr Westmere support.
* src/perfctr-2.6.x/: patches/aliases, usr.lib/Makefile: Fix
conflicts from perfctr merge.
2010-11-06
* src/perf_events.c: Replace KERNEL_CHECKS_SCHEDUABILITY_UPON_OPEN
with the proper dynamic kernel version number checking. This
should be the last place in our perf_events code that was using a
hard-coded rather than dynamic check for a kernel-version related
bugfix.
* src/perf_events.c: This patch allows PAPI to read multiple events
at a time out of the kernel when the kernel is new enough (2.6.34
or newer). The previous code required setting a #define by hand
to get this behavior, this new code picks the proper way to do
things based on the kernel version number.
The patch was supplied by Gary Mohr
2010-11-04
* src/: linux.c, perfctr-x86.c: Replace occurrances of
PERFCTR_X86_INTEL_COREI7 with PERFCTR_X86_INTEL_NHLM as the
former has been documented as being deprecated as of perfctr
2.6.41.
2010-11-03
* src/cycle.h: Change "unicos" to "CLE" since "unicos" no longer
exists.
2010-10-26
* src/examples/locks_pthreads.c: Add a call to PAPI_thread_init(),
Thanks to Martin Schindewolf for pointing this out.
2010-10-21
* src/: papi.c, components/lmsensors/linux-lmsensors.h: Fixup url's
that checkbot was finding in error.
2010-10-05
* src/ctests/: multiattach.c, zero_attach.c: The zero_attach and
multiattach were forking before off children before testing
that PAPI in fact is available. Then when PAPI_init() failed
the children weren't being cleaned up properly. This was
confusing build bot. This changeset moves the fork to after the
check plus do a fail_exit() on failure.
* src/: configure, configure.in: Solaris build will fail if
/usr/ccs/bin isn't in the path. Have it check there for "ar" on
Solaris systems if it can't be found by normal methods.
* src/: configure, configure.in: Only run the EAR tests on itanium
systems.
* src/: configure, configure.in: Pentium4-perfctr was skipping most
of the CTESTS. Make sure they are all run.