====================================================================== | The Dragon Tool/Linux | | An OpenUH-based compiler Tool for Fortran/C language | | Copyright (C) 2005 reserved | | University of Houston | ====================================================================== DESCRIPTION Whenever application software is migrated to a new platform, optimized for an existing one, or extended in its functionality, the source code must be carefully analyzed in order to understand many details of the current implementation. Dragon is a prototype software tool to support an applications developer or code owner who wishes to understand more about his or her C or Fortran application. It provides a range of information about the structure of a source program in a graphical browse able form, at the level of detail desired. The current input language for Dragon is FORTRAN 77/90, C, C++. OpenMP/MPI. Dragon is an interactive system. It provides a powerful graphical user interface including tools for manipulating the graphical displays and for navigating within them. A hierarchically structured menu system based on MOTIF/LESSTIF and X11 helps to find the different facilities of Dragon. Dragon is an on-going research project developed at the University of Houston, with funding from NSF, DOE, Dell Computer Corp. and NASA. Its functionality is based on the OpenUH compiler infrastructure taking advantage of the analysis information generated by the compiler. We intend to make Dragon available to the community and contribute to the set of tools currently available that supports high performance programming. SYSTEM REQUIREMENTS Intel Itanium or Pentium CPU Memory > 128MB Disk > 250MB Red Hat Linux 7.x (for Itanium) or equivalent linux. Minimum Resolution 1024 * 768 Recommended Resolution 1600 * 1200 Lesstif 0.93.18-1 (from www.lesstif.org) ro equivalent VCG 1.30 A recent version of gnu gcc/g++ FILES README - this file you are reading actually README_IA64 - how to get a program's dynamic information on IA-64 dragon - the executable file of the dragon tool dragon.res - the resource file logos/menu.xpm - the logo picture logos/dragon.xpm - the logo picture INSTALLATION NOTES 0) The Dragon tool is based on the OpenUH compiler please install the OpenUH compiler first, without root privileges: a) tar -xzvf openuh-alpha.itanium.tar.gz for IA-64 or tar -xzvf openuh-alpha.i386.tar.gz for IA-32 b) export TOOLROOT=$HOME (or the directory you wish to install add this in your .bash_profile) export LD_LIBRARY_PATH=$TOOLROOT/usr/lib/gcc-lib/ia64-orc-linux/2.1:$LD_LIBRARY_PATH export PATH=$PATH:$TOOLROOT/usr/bin source ~/.bash_profile c) cd openuh d) run ./install.sh If you have questions of what is inside the install.sh script, feel free to review it, but do not attempt to change the paths for the filenames, otherwise the compiler might not be able to install correctly. 2) Install the vcg tool for the purpose of printing call graph and control flow graph. See vcg tool documentation for installation. This is optional. 3) For Linux system, use: tar -xzvf dragon.itanium.tar.gz or tar -xzvf dragon.i386.tar.gz to extract dragon executable file into your home directory. Enter the dragon_release1.0b directory and type dragon to start the dragon tool. HOW TO USE 0) First of all, use the OpenUH compiler to compile your source code. (Remember to check if the $TOOLROOT variable is set where the compiler is installed) To extract the Callgraph, flowgraph and regions analysis us the following flags: uhf90 -dragon -ipa -O2 .... uhcc -dragon -ipa -O2 ... To extract the dependence graphs (which takes longer compile time) use the following flags: uhf90 -dragon -O3 .... uhcc -dragon -O3 ... 1) There are some *.cfg and *.dep files generated in your source code directory and one *.d and *.rgn file(the same name with your executable file) after compilation. Type dragon to start the Dragon tool, open the *.d file, then you could choose to view the call graph control flow graph, array usages, dpendence graphs of your program by selecting the menu. PROBLEMS This is the second version of the Dragon tool. Your feedback is very important for us. Any bug reports, suggestions are highly appreciated. Please send your comments to openuh@cs.uh.edu. 1) There are some DOLOOP nodes in the control flow graph displayed by the Dragon tool if your source code is written by Fortran 90. However, you may find some of them do not have matched do loop statements in your source code. The matched codes are some array operations. The reason is the OpenUH compiler translate such operations to do loop statements. 2) Some other Fortran 90 statements may be changed to Fortran 77 in the Control Flow graph. 3) Procedure parameters might not be reflected in the Callgraph. We will address this issue in future releases. 4) Some edges in Control Flow Graph may be overlayed by others. please Use the middle button(or left and right button) of your mouse to move a node in order to see the edges. FUTURE WORK We are working on the next version of the Dragon tool to bring the following functionalities: 1) OpenMP assisted directive generation 2) Variables tracking for scalars. 4) C++ language support (might work with C++ codes at this stage by haven't been tested) AUTHORS Dr. Barbara Chapman (Email: openuh at cs dot uh dot edu) Computer Science Department University of Houston Houston, TX, USA.