ProDev MP Fortran
Writing programs that run on multiple processors and take maximum advantage of the hardware can be a complex task. Debugging and tuning these programs is even more difficult. The SGI developer environment is specifically designed to facilitate the development of parallel programs.
The ProDev MP Fortran bundle creates a powerful development environment:
- Power Fortran Analyzer - automatic and user-directed parallelization of code.
- Pro MPF - a visual interface to the Power Fortran Analyzer that shows which parts of the program have been parallelized and why other parts can not be parallelized.
- MIPSpro Fortran Compiler - optimizing Fortran 77 and Fortran 90 MIPSpro compilers support portability by adhering to industry standards.
- ProDev WorkShop - a suite of tools that support the debugging of parallelized programs and performance analysis of each thread which the parallelized program executes.
Power Fortran Analyzer (PFA)
The Power Fortran Analyzer is used for initial code parallelization. Users run their code through PFA, which looks at the program structure, determines which loops it can parallelize, which are best left serial, and which have one or more obstacles preventing their parallelization.
PFA always errs conservatively - if it is not sure whether it can parallelize a loop safely, it will not do so. PFA modifies the user original source to a transformed source that is optimized and parallelized. It acts as a preprocessor for the SGI MIPSpro Fortran compiler, which understands the parallel directives and has its own MP extensions.
Pro MPF provides a powerful visual interface into PFA transformations to show which loops were parallelized, which were not, and why they were not. In all cases where a loop could not be parallelized, Pro MPF will show the user the obstacles to parallelization and allow the user to rearrange the algorithm to circumvent those obstacles. Where it can, Pro MPF will prompt the user for the additional information that will allow PFA to parallelize that code section.
Pro MPF also allows control over PFA assertions and directives, as well as parallelization and MP scheduling controls. Integration with the ProDev WorkShop Performance Analyzer allows the user to identify the most expensive loops in the program and concentrate on those, rather than waste effort tuning loops that do not use significant time during execution.
Using Pro MPF, programmers can develop their multiprocess applications on a single processor system, use Pro MPF to understand the code and produce a multiprocessor version. Programmers can also execute the parallelized program on a multiple processor system. The compiled executable will automatically determine the number of processors available and execute accordingly.
Understanding Parallelized Code
Pro MPF provides the following capabilities that allow programmers to understand and develop parallelized code more easily:
- Lists all loops in the program with parallelization status
- Allows filtering by loop state: unparallelizable, parallel, serial, or those for which the user has requested modifications
- Allows filtering by source file or sub-routine
- Provides detailed information about each loop
- Displays source code, highlighting the selected loop
- Lists transformed loops coming from the original loop
- Shows correlated display of original and transformed sources
- Shows obstacles to parallelization and other messages
- Shows actual performance cost for the loop
- Displays a list of all subroutines and files in the program
- Highlights obstacles to parallelization
- Shows source lines of where obstacles are in code
- Shows relevant variable or subroutine names and their uses
- Works with the ProDev Workshop Performance Analyzer
- Allows sorting of loops by performance cost
- Annotates source display with performance information
- Allows straightforward composition of a custom DOACROSS directive
- Allows editing of parallelization condition
- Shows variables with read/write status within the loop, allows selection of state, and highlighting of uses of each variable within the loop
MIPSpro Fortran Compilers
This 64-bit ANSI Fortran 77 compiler is ideal for systems based on MIPS R8000 running IRIX 6. It is compatible with VAX/VMS Fortran and supports Cray extensions.
MIPSpro Fortran 90 Compiler
A 64 bit ANSI Fortran 90 compiler with additional support for user-defined multi-processing directives for systems based on MIPS R8000 running IRIX 6. Compatible with VAX/VMS Fortran and supports Cray extensions.
For more information, read about the MIPSpro compilers.
The ProDev WorkShop programming environment is specifically designed to handle the debugging and tuning of MP programs.
The multiprocess view of the debugger allows users to more easily debug parallelized programs. This view allows users to set breakpoints at the creation of a new process, handle sprocs and threads. MP view also provides a separate debugging view for each thread of the program.
The ProDev WorkShop Performance Analyzer has several views. All of the views can be used to look at performance of each thread of an executing program.
- Resource usage view - helps identify CPU and I/0 bottlenecks
- Function list - shows the performance cost of each function
- Call graph view - displays function relationships during execution (e.g.,who called whom and how often)
- I/O view - displays I/O activity on a file-descriptor basis
Performance Data Sampling Paradigm
The ProDev WorkShop Performance Analyzer utilizes a sampling paradigm that allows the collection of performance data at specified points during program execution, and analysis of that data during the different phases of the program execution. The sampling paradigm is critical for very large programs as it allows for analysis of specific portions of the program, and tuning of each portion individually.
Combined, these tools provide a superb environment for facilitating the development of applications to run on MP systems. Whether you are an experienced MP application developer, or are trying to write your first MP program, the SGI MP development tools provide you with the functionality you need to take advantage of all of the power of your systems.