Next: , Previous: Compiling UPC Programs, Up: Analyzing UPC Programs


3.2 Running UPC Programs

To run your instrumented application, use the ppwrun command in front of your application's run command invocation. Note that you must recompile your application first; for more information please see Compiling UPC Programs.

For instance, if you normally run your application using the following command:

     $ upcrun -n 16 ./myapp 1 2 3

you would use this command instead:

     $ ppwrun --output=myapp.par upcrun -n 16 ./myapp 1 2 3

For UPC programs, PPW does not currently support noncollective UPC exits, such as an exit on one thread that causes a SIGKILL signal to be sent to other threads. As an example, consider the following UPC program:

     ...
     int main() {
       if (MYTHREAD) {
         upc_barrier;
       } else {
         exit(0);
       }
       return 0;
     }

In this program, depending on the UPC compiler and runtime system used, PPW may not write out valid performance data for all threads. A future version of PPW may add “dump” functionality where complete profile data is flushed to disk every N minutes, which will allow you to collect partial performance data from a long-running program that happens to crash a few minutes before it is completed. However, for technical reasons PPW will generally not be able to recover from situations like these, so please do try to debug any crashes in your program before analyzing it with PPW.

For more information on the ppwrun command, please see ppwrun.