weaver@ncar.UCAR.EDU (Robert P. Weaver) (10/30/90)
I am at the University of Colorado. Our group works with languages designed to support numerical computation on distributed memory machines. In particular, we have been working with static, array-based, data-parallel languages. I have been looking at extending some of our ideas to "dynamic" parallel languages for numerical computation -- that is, languages where some aspect of the virtual parallelism (the parallelism that the programmer perceives) is determined or changes during the execution of the program. In particular, I have been exploring the idea of using a pointer based structure (graph of some kind) as the basic "distributed" data structure and providing a virtual processor for every node in the graph (and some more complicated ideas along these lines). These structures are dynamic (using my definition) in two senses -- you don't know the size of your virtual machine until run-time because it is data dependent, and we want to be able to add nodes, delete nodes, and change connections during execution. What I am looking for are actual applications that might use pointer based data structures as a basis for their program. Real applications are (in my opinion) a far better sieve to run your preliminary ideas through than the toy applications that we may create in isolation. I have looked at a few in C and in FORTRAN (I translate these into C so I actually have pointer based structures) ranging from 3000 to 30000 lines of code. Most useful would be applications of this nature already parallelized for distributed memory machines. But I am also interested in looking at some designed for shared memory machines or simply serial code. I find it most helpful if I have (1) some high-level description of the program, (2) access to the actual code, and (3) some one I can ask a few questions of if I can't figure it all out myself. If anyone has such a beast and is willing to share it, send me mail at weaver@boulder.colorado.edu. Thanks in advance. Bob Weaver