(original) (raw)



On Sun, Oct 26, 2014 at 11:49 AM, <betulb@codeaurora.org> wrote:

\> On 10/24/14, 8:26 PM, betulb@codeaurora.org wrote:
\>> Hi All,
\>>
\>> We've been working on enhancing LLVM's instrumentation based profiling
\>> by
\>> adding indirect call target profiling support. Our goal is to add
\>> instrumentation around indirect call sites, so that we may track the
\>> frequently taken target addresses and their call frequencies.
\>>
\>> The acquired data has uses in optimization of indirect function call
\>> heavy applications. Our initial findings show that using the profile
\>> data
\>> in optimizations would help improve the performance of some of the spec
\>> benchmarks notably.
\>
\> Can you quantify "notably?" Also, do you profile on one set of inputs
\> and then test the optimization on another set of inputs (e.g., the test
\> and train runs)?

I can't give numbers, but we do collect data from train runs.

\>> We have a proof of concept implementation, which we
\>> plan to put it up for review. However, I’d like to inquire prior if
\>> there
\>> are any plans or ongoing work done in the community to enable indirect
\>> call target profiling support or not. Please inform if cfe-dev is a
\>> better
\>> candidate for posting PGO related emails.
\>
\> Interesting. I did not think SPEC had many programs with a lot of
\> indirect function calls.

Spec does have programs such as gcc, vortex and others which use indirect
calls. I'm planning to have an RFC soon on the feature. I'll follow it w/
the patch for the profiler changes for clang, llvm and compiler-rt.

IIRC, gap is another C program benefit from this.

David

\> It would be interesting to see what your optimization would do on an
\> operating system kernel like FreeBSD or Linux. The VFS (file system)
\> layer uses function pointers a lot, but I'm not sure if it's the
\> dominant overhead.
\>
\> Have you tried on C++ programs? They should be making heavy use of
\> indirect function calls as well.
\>
\> If you make your software public, please let me know. Adapting your work
\> for kernel execution and trying it out on a kernel might be a nice
\> project for one of our students.
\>
\> Regards,
\>
\> John Criswell
\>
\> --
\> John Criswell
\> Assistant Professor
\> Department of Computer Science, University of Rochester
\> http://www.cs.rochester.edu/u/criswell
\>
\>


\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
LLVM Developers mailing list
LLVMdev@cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev