I am designing MPI application that requires GUI to show the progress.
How do I bring up the GUIfor processes that are invoked on remote computers, at the remote end?
Thanks for helping.
I assume you're asking a high-level question, and not something lower-level, like"How do I launch a program on a remote node."
That depends on several issues.
How is the MPI application started? How do you want the monitoring activity to function? How does the monitoring function get the progress data? Let's take a look at the high-level approaches that you may have (or could have) used.
You can run the MPI program and the monitoring GUI separately. The advantage is that you and start and stop the monitoring GUI at will; the MPI program will run regardless of the monitoring GUI. This could enable you to periodically "check in" to monitor the data, from any host that can access the MPI program's progress data. The disadvantage is that you must manage both programs seperately. Clearly, you could do this within an "execution script" that hid the startup of both, giving the user the illusion that they're only doing one thing (as in the integrated cases below).
You can run the MPI program from the monitoring GUI. The advantage is integration and simplicity--the user just sees the one event, "starting the program". The fact that an MPI program, with it's MPI startup, is being used in unknown to the user.You also have more flexibility on how progress data is transferred between the two, e.g., there could be shared message, pipes, or other hidden mechanisms for the MPI program to get progress data to the monitoring program. The disadvantage is that quitting the monitoring program will kill the MPI program unless you take specific actions.
You can start the monitoring program from the MPI program. This has the same "integration" advantages of the (preceding) reverse case. The disadvantage is that the monitoring will tied to the original MPI program execution unless you take special actions to enable the progress data to be obtained later.
Finally, you could build the two capabilities, compute and monitoring, into a single program. This would be the hardest and least flexible, but it offers the highest level of integration.
As for the actual mechanics of the monitoring GUI program, there are any number of tools that you can use. For example, you gould use a scripting language (e.g., Perl, Python, or TCL) with Tk or Qt providing the graphics. This will enable you to build a first-class GUI using a language and graphicswell suited to the task without a lot of the difficulties of C/C++ programming. You could also use C/C++ and Qt or one of the other grapahics toolkits.
My recommendation is to build a monitoring GUI using the language and graphics toolkits of your choice, and teach it how to get progress data from the MPI program.This will be the simplest and most flexible approach.