Subject: hpff: Re: Descriptors

From: [email-masked] (Rob Schreiber)
Date: Wed, 13 Sep 1995 11:23:54 -0700

---------------------------------------------------------------------------
[email-masked] is a mailing list for announcements related to High
Performance Fortran.  Instructions for adding or deleting yourself
from this list appear at the bottom of this message.
---------------------------------------------------------------------------

Scott:

Some comments:

	As a follow on to this: what about the converse, that is
	calling HPF from another languge (e.g. C++)? In this case
	HPF is viewed as the extrinsic language.

	To get the ball rolling.  Let's say we have an SPMD program,
	that is a group of processors (e.g. an MPI communicator)
	all executing the same program in loosely synchronous fashion.

	What we need need an etry to initialize the HPF run time system
	i.e. to identify global processor arrangments.  

i.e., we need HPF_INIT, which works like MPI_INIT.

        We also need
	a routine much like your create_mapped_array_descriptor(), with arguments
	that specify the global shape, 
        the processor array, distribution
	and alignment and so on.
The question of what NUMBER_OF_PROCESSORS and PROCESSORS_SHAPE should return
is indeed interesting.   Identifying the called HPF routine with an MPI communicator
is appealing; and the caller could endow the communicator with a shape, as well as a size;
doesn't MPI have a topology facility for shaping its processors?

I think what we need is the inverse of create_mapped_array_descriptor.  Something
that is an ordinary struct or something in C++ that can be used to describe
to the HPF runtime (not the application) the shape and mapping of an array
that has been created by the C++ calling routine:

   subroutine hpf_called_from_extrinsic(x_desc, x)
!
!  this routine is called collectively by an extrinsic that has passed in
!  both the mapped array X, and a descriptor of this mapped array
!
	type (mapped_array_descriptor) x_desc
	real x(:,:,:)   !   Use assumed sahpe array
	call describe_mapped_array_argument(x_desc, x)  ! Tell HPF about X

	We can also support task parallelism, through the use of
	multiple MPI communicators.  Then we could think of multiple
	SPMD programs 
or multiple process groups in a single MPI SPMD code
        calling different HPF routines.  
Its low level, but it kind of naturally falls out of the idea of
hpf called by extrinsic spmd code collectively.

	Though the facility should work in principle with any language,
	at this point I would tend to be biased to C++.

Lets make it lang independent!  We tried to do that with Extrinsics, too.

---------------------------------------------------------------------------
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>
---------------------------------------------------------------------------