The invention provides a scalable, automated, network friendly method for
building parallel applications from embarrassingly parallel serial
programs. Briefly, the steps of an exemplary method in this invention are
as follows: First, the application loops with significant potential
parallelism are identified. Second, from the set of loops identified,
those loops which can statically be shown to not be parallelizable are
disqualified. Next, the program is transformed into a parallel form in
which the remaining identified loops are optimistically parallelized and
packaged into per-iteration functions. Then, shared memory in the
functions is relocated to a shared memory section available to all
computers and references to the shared memory in the source code are
transformed into indirect accesses. Finally, the per-iteration functions
are spawned on to multiple computers, at run-time, where each computer is
given a range of iteration.
De uitvinding verstrekt scalable, geautomatiseerd, netwerk vriendschappelijke methode om parallelle toepassingen van embarrassingly parallelle periodieke programma's te bouwen. Kortom, de stappen van een voorbeeldige methode in deze uitvinding zijn als volgt: Eerst, worden de toepassingslijnen met significant potentieel parallellisme geïdentificeerd. Ten tweede, van de reeks geïdentificeerde lijnen, worden die lijnen die statisch kunnen worden getoond om niet parallelizable te zijn gediskwalificeerd. Daarna, wordt het programma omgezet in een parallelle vorm waarin de resterende geïdentificeerde lijnen optimistisch parallelized en in per-herhalingsfuncties worden verpakt. Dan, wordt het gedeelde geheugen in de functies opnieuw gevestigd aan een gedeelde geheugensectie beschikbaar aan alle computers en de verwijzingen naar het gedeelde geheugen in de broncode worden omgezet in indirecte toegangen. Tot slot worden de per-herhalingsfuncties kuit geschoten op veelvoudige computers, bij run-time, waar elke computer een waaier van herhaling wordt gegeven.