Print

Print


Hello,

I have a problem which is mostly relevant to HPF, but is related to a
non-existant feature in Fortran--inlined procedures. In the heart of my
HPF program is a conjugate gradient solver which often needs to perform
vector updates and dot products. This is easy to do by placing these in
subroutines. But, according to HPF syntax, all processors need to be
synchronized before and after a subroutine call, so that my HPF compiler
will insert three sync points for a single dot product.

There are two ways I know of to solve this. One is to use the low level
HPF_LOCAL model, but this is clumsy. The other is to use inlined
functions for DotProduct and VectorUpdate (note that the intrinsic
DOT_PRODUCT has certain issues, so I need to write my own routine!),
which would avoid the synchronizations. Since Fortran does not offer
this functionality, I have to do it probably using a preprocessor.
Is this a good idea? I've always thought of good programming as making
procedures for things and putting them in well organized modules. This
would make my routines not standard conforming and not in a module?
Anybody have better ideas?

Thanks,
Aleksandar

--
_____________________________________________
Aleksandar Donev
Physics Department
Michigan State University
East Lansing, MI 48824-1116
E-mail: [log in to unmask]
Work phone: (517) 432-6770
_____________________________________________




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%