IBM Israel
Skip to main content
 
Search IBM Research
   Home  |  Products & services  |  Support & downloads  |  My account
Select a Country Select a country
IBM Research Home IBM Research Home
IBM Haifa Labs Homepage IBM Haifa Labs Home

FDPR-Pro

Performance Analysis and Optimizations Technologies
Project Homepage
 ·FDPR-Pro/AIX
 ·FDPR-Pro/Linux
 ·FDPR-Pro z/OS
 ·FDPR-Pro/Embedded
 ·FDPR-Pro/CBE
 ·FDPR-Pro/HLR
 ·Contact Information
Feedback


Feedback Directed Program Restructuring (FDPR-Pro)

  FDPR-Pro/AIX


  Overview     FAQs     Downloads  |  Related Links  |  Team & Contacts  

  1. What is the difference between FDPR and FDPR-Pro?
  2. How do I teach FDPR-Pro to optimize the program for a specific workload?
  3. FDPR fails in the training phase. Why?
  4. FDPR-Pro fails because the input program is "stripped." What does this mean?
  5. Can a program already optimized (or instrumented) by FDPR-Pro be used as input to the Post-Link Optimization tool?
  6. Can an optimized program be debugged by gdb (or another user-level debugger)?


  1. What is the difference between FDPR and FDPR-Pro?

    FDPR-Pro stands for Feedback Directed Program Restructuring. FDPR-Pro is the main optimization engine tool. It can either instrument a program or, if given the program's profile, optimize it. FDPR is the wrapper script that runs FDPR-Pro engine through the instrumentation phase, then collects the profile (the training phase), and, finally, runs the optimization phase. The AIX command for invoking FDPR-Pro is: fdprpro located under /usr/lib/perf. The AIX command for the FDPR wrapper is: fdpr located under /usr/bin.
  2. How do I teach FDPR-Pro to optimize the program for a specific workload?

    First the program should be instrumented and its initial profile generated, as follows:
    $ fdpr -a instr myprog
    The output will be generated (by default) in myprog.instr and its profile in myprog.nprof.

    Next, run myprog.instr on some typical workload. This will fill the profile file with information that characterizes the workload.

    Finally, re-run FDPR-Pro with the profile file provided, as follows:
    $ fdpr -a opt -f myprog.nprof [optimization options] myprog
    Note that, given a script "test", which runs the myprog.instr on a typical workload, all the above can be done in one command:
    $ fdpr [optimization options] -p myprog -x test

  3. FDPR fails in the training phase. Why?

    Running of the instrumented program may fail for several reasons:
    • It cannot find the profile file. It might be deleted or might not be in its assumed location. Note that the location of the profile file is set in the instrumentation phase. By default, it is in the directory of the output file. In order to make sure that the instrumented program will find the profile file, you may provide a profile file name with a full path, or set the environment variable FDPR_PROF_DIR to the directory containing the profile file.
    • FDPR runs a script using the -x option. If the script exits with a non-zero exit status, FDPR detects this as a failure and makes sure that if the training script terminates correctly, it exits with a zero status.

  4. FDPR-Pro fails because the input program is "stripped." What does this mean?

    FDPR-Pro requires that the input program contains relocation information. Executable files in AIX are generally non-stripped unless they were stripped off their relocation and symbolic information using the AIX strip command or linked with the special "-s" option "-s" of the "ld" linker.
  5. Can a program already optimized (or instrumented) by FDPR-Pro be used as input to the Post-Link Optimization tool?

    Currently this feature is not supported.
  6. Can an optimized program be debugged by gdb (or another user-level debugger)?

    Yes. The optimized program is in a regular executable format and can be run by an AIX debugger. Symbolic information allows access to functions and data. In order to facilitate in the debugging process of restructured code, FDPR-Pro attaches a symbol to each chunk of code that belongs to the same function. The symbol has the following format:
    <original function name>__fdpr_<function's part number>
    For example, if after code reordering, function "main" was split into 3 parts, then it would have 3 entries in the Symbol Table; one for each part as follows: "main" for the chunk containing the prolog, "main__fdpr_1" for the second chunk and "main__fdpr_2" for the third chunk.




































 

  About IBM  |  Privacy  |  Terms of use  |  Contact