[UPDATE] An alternative approach to the function enter/exit logging changes has been posted here: https://github.com/pmodels/mpich/pull/4276 The previous -finstrument-functions PR only supported Linux for address->func_name conversion in log files, which was problematic for some. The new approach uses scripts to add/remove the enter/exit macros on-demand. The benefit is that it will work on all systems, and be less error-prone than manually adding the macros by hand. Please comment on the PR or this thread if you have thoughts. Thanks, Ken On 11/7/19 9:35 AM, Raffenetti, Kenneth J. via devel wrote:
I should also note that currently the address->function translation scripts will only work on Linux.
Ken
On 11/7/19 8:30 AM, Ken Raffenetti wrote:
Here's what I've found so far:
XL compilers support -qfunctrace with slightly different user-supplied tracing function signatures. Should be trivial to add support to MPICH.
https://www.ibm.com/support/knowledgecenter/SSGH2K_12.1.0/com.ibm.xlc121.aix...
PGI supports -Minstrument with the same tracing function signatures as GCC and Clang.
Intel supports -finstrument-functions.
I do not see any support in Oracle suncc.
Ken
On 11/7/19 4:08 AM, Finkel, Hal J. via devel wrote:
Clang does support -finstrument-functions (and also provides -finstrument-functions-after-inlining and XRay-based options: https://llvm.org/docs/XRay.html).
-Hal
On 11/6/19 6:22 PM, Jeff Hammond via devel wrote:
Do you have a list of what compilers support this? Is this just GCC, just GCC and Clang, or a bigger list? If Clang supports it, do you know if all of the Clang derivatives (e.g. IBM XLC) support it?
Thanks,
Jeff
On Wed, Nov 6, 2019 at 2:04 PM Raffenetti, Kenneth J. via devel <[email protected] <mailto:[email protected]>> wrote:
Folks,
I want to draw attention to a pull request posted to the MPICH github.
https://github.com/pmodels/mpich/pull/4139
This proposes to remove all MPIR_FUNC_VERBOSE_ENTER and MPIR_FUNC_VERBOSE_EXIT macros from MPICH and instead use compiler function instrumentation when configured for debug logging: https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html.
There are 2 main benefits:
1. De-clutter the code. PR stats show a net deletion of >10,000 lines! 2. Less error-prone. The compiler will reliably instrument *all* functions, and will not suffer from copy/paste errors or typos.
Drawbacks:
1. Requires compiler support for instrumentation. May affect users debugging certain compiler configurations. 2. Compiler function instrumentation logs function addresses, not symbols. An additional step is needed to convert addresses to function names via script (included in PR).
What do people think? Will these changes affect anyone using debug logging in any regular capacity? We're looking for feedback good or bad. Let us know.
Thanks, Ken _______________________________________________ To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/devel
-- Jeff Hammond [email protected] <mailto:[email protected]> http://jeffhammond.github.io/
_______________________________________________ To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/devel -- Hal Finkel Lead, Compiler Technology and Programming Languages Leadership Computing Facility Argonne National Laboratory
_______________________________________________ To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/devel
To manage subscription options or unsubscribe: https://lists.mpich.org/mailman/listinfo/devel