
What tools are needed?
Resource management, load balancing, and steering are the 3 areas in which distributed computing and parallel processing tools will be most needed. I expect that more and more systems based on heterogeneous networks will become prevalent. The issues there will be focused upon flexibility and collaboration; sharing resources with colleagues etc, while maximizing throughput and utilization. Therefore tools for allocation of resources will be important. Similarly, with heterogeneous systems, load balancing becomes very critical -- tools that match algorithm load balancing with resource load balancing will need to be developed. Finally, interaction with running applications and choosing execution path decisions at runtime based on intermediate results will become standard practice, necessitating steering tools.
What is the future of PVM/MPI?
PVM will continue to exist in one form or another, as it is a flexible and general purpose system that is not dependent upon architcetures or programming models. It does many of the required tasks for cluster and network computing very well; supplemented by message passing communication that can work in MPP's or in clusters. MPI message passing can be used within (on top of) PVM, so the two can coexist. However, PVM has always been more flexible e.g. Java bindings for PVM, distributed shared memory on top of PVM, persistent messages, etc, so PVM is likely to survive longer.
What is your vision of the programming environment 5 years from today?
I believe that programming environments will be moving more towards large grained message passing systems, with each process haveing local parallelism via threads and shared memory on small scale multi-cpu machines. This will provide high efficiency in single SMP's while timesharing will provide for communication-computation overlap and latency hiding when communicating across SMP's. More packages and libraries will be used, with programmers writing shells and pipelines of processes that make calls to optimized libraries such as scalapack. More emphasis will be placed on visualization, and programming support for handling large data sets will be included into scientific and parallel computing environmemts