[comp.parallel] What's "hard" about parallel programming?

doc@dgp.toronto.edu (Blaine Price) (11/27/89)

I'm starting to build a system for visualizing and animating concurrent
programs and I would like to know what people think are the "hard" problems
in understanding parallelism.  What problems occur in designing, 
understanding, debugging, and maintaining parallel programs that are not as
troublesome in sequential programming?  Could a real-time animation of a 
running  concurrent program aid in its understanding or guide optimization?
If you were working on a large program and you could automatically have 
someone generate some kind of visual representation of it, what would it
look like?  I have some ideas but I don't think that I have an "intuitive
handle" on how visualization can help.

Please reply by posting or e-mail, whichever you prefer.
-- 
Blaine Price  (416) 978-6619, fax: 4765         doc@dgp.utoronto.{ca,bitnet}
Dynamic Graphics Project, Dept. of Computer Sci.         doc@dgp.toronto.edu
Univ. of Toronto, Canada M5S 1A4               ...!uunet!dgp.toronto.edu!doc
"Who do I work FOR? I don't work FOR anyone! I'm just having fun."-The Doctor

markv@phoenix.princeton.edu (Mark T Vandewettering) (11/30/89)

In article <7201@hubcap.clemson.edu> doc@dgp.toronto.edu (Blaine Price) writes:
> [ Asks what is hard about visualizing the execution of concurrent 
    programs]


In my (obviously radical and biased) opinion, most of the problems that
arise from trying to comprehend concurrent execution comes from time 
dependant behavior, ie.  synchronization problems.  For instance, 
having to rendezvous at various points in the execution path before
continuing.

In a previous life when I was examining parallelism in functional
programming languages, I considered doing a graphic oriented execution
monitor.  The particular language I was examining worked via combinator
reduction, where the program is represented by a graph that is slowly
(or hopefully quickly) transformed into a normal form by graph
rewriting.  We can get parallelism because many sites in the graph are
possible rewrite positions at any point in execution.  I imagined
a graphics interface with subtress changing colors as they become 
executable, and again when they begin execution on a physical processor.
When the results are finally computed, the subtree is replaced by
its reduced data value.

I unfortunately never implemented such a system.

>Blaine Price  (416) 978-6619, fax: 4765         doc@dgp.utoronto.{ca,bitnet}
>Dynamic Graphics Project, Dept. of Computer Sci.         doc@dgp.toronto.edu
>Univ. of Toronto, Canada M5S 1A4               ...!uunet!dgp.toronto.edu!doc
>"Who do I work FOR? I don't work FOR anyone! I'm just having fun."-The Doctor