Subject: hpff-external: Re: A question about HPF_LOCAL (from comp.lang.fortran)

From: [email-masked] (Chuck Koelbel)
Date: Fri, 8 Sep 1995 09:24:08 -0500

---------------------------------------------------------------------------
[email-masked] is a mailing list for discussion of external
interfaces between HPF and other languages/systems.  Instructions for
adding or deleting yourself from this list appear at the bottom of this
message.
---------------------------------------------------------------------------

Hi, Danny -

I'm forwarding this to the hpff-external mailing list, which is considering
better interfaces between HPF and other parallel paradigms.  Sorry, I don't
have a worked example for you.  Just a few comments:

The primary goal of HPF was to support "Data parallel programming (defined
as single threaded, global name space, and loosely synchronous parallel
computation)" (taken from the language spec).  The master-slave model is
multi-threaded, at least if you're doing anything interesting with
controlling the task scheduling.  That's the primary reason that HPF
doesn't support it well.

Also, HPF goes to fair lengths to avoid having the user write the
communication explicitly.  That's why you're having trouble inserting
communication.

EXTRINSIC(HPF_LOCAL) supplies a bare-bones interface to an SPMD programming
paradigm.  Because of the variety of architectures that were considered,
concensus didn't seem possible on what communications features to use
(remember, this was designed before MPI).  So we wimped out and left that
to the vendors.  I'm suprised that DEC would recommend HPF_LOCAL without
telling you how to link their communications routines; maybe they're listed
in another section of the manual (or another manual).  I have no direct
experience with the compiler, though, so I can't say for sure

                  Chuck Koelbel

>Path:
>rice!newsfeed.rice.edu!bcm.tmc.edu!cs.utexas.edu!howland.reston.ans.net!tan
>k.news.pipex.net!pipex!sunsite.doc.ic.ac.uk!qmw!news.lpac.ac.uk!usenet
>From: Daniele Rizzi <[email-masked]>
>Newsgroups: comp.lang.fortran
>Subject: A question about HPF_LOCAL
>Date: 7 Sep 1995 08:50:21 GMT
>Organization: lpac
>Lines: 78
>Message-ID: <[email-masked]>
>NNTP-Posting-Host: neptune.lpac.ac.uk
>Mime-Version: 1.0
>Content-Type: text/plain; charset=us-ascii
>Content-Transfer-Encoding: 7bit
>X-Mailer: Mozilla 1.1N (X11; I; OSF1 V3.2 alpha)
>X-URL: news:comp.lang.fortran
>
>Hi all,
>
>I'm working on a 4-node Alpha Farm coupled with a HPF v1.0 compiler, and
>I'm supposed to write a parallel program using the Master-Slave model.
>Shortly described, such a program could be described (in a
>pseudo-parallel-language) by a loop:
>
>        PARDO i = 1, number_of_processors()
>                call foo(a, b, c, ...)
>        END PARDO
>
>which forks copies of himself through the available peers; the program
>running on the master and on the slaves is the same, but the instructions
>executed depend on the type of the node, and on the data it has to process.
>
>Unfortunately, it seems that this computer paradigm is not well-supported
>in HPF, because:
>
>        + a DO loop is never compiled as a parallel construct;
>
>        + and a FORALL loop is parallelized only if the included subroutine
>          (in this case, foo() ) is declared PURE, which in turn means
>          that it cannot:
>
>                - modify global variables;
>                - define variables with SAVE attribute;
>                - use dummy arguments without INTENT(IN) statement;
>                - call a function or a subroutine non-PURE;
>                etc.
>
>In a few words, there is no way to communicate or to share data between the
>different slaves, or between the master and the slaves.
>
>"HPF Handbook" and "DEC F90 Manual" suggest what they call "Loosely
>Synchronous Parallel Execution" model: "Although all processors execute the
>same program, the processors are not necessarily processing the exact same
>instruction at the same time".  This should be implemented using the
>EXTERNAL(HPF_LOCAL) declaration, but, oddly enough, no working example is
>provided, and there still remains open the question about the communication
>between the peers.  The DEC Manual states: "it is up to you to insert
>whatever SENDs and RECEIVEs are necessary", without giving any information
>about the syntax of SEND and RECEIVE calls.
>
>Is it available any example, or any fragment of code, describing how an
>explicit comm.  can be carried out inside HPF?
>
>Thanks for your help
>
>dany -> [email-masked]

---------------------------------------------------------------------------
To (un)subscribe to this list, send mail to [email-masked].
Leave the subject line blank, and in the body put the line
(un)subscribe <email-address>
---------------------------------------------------------------------------