pr32512 - efficiency of RESHAPE and SPREAD

Tobias Schlüter tobias.schlueter@physik.uni-muenchen.de
Mon Aug 13 20:58:00 GMT 2007


Paul Thomas wrote:
> Dear All,
> 
> In contemplating this excellent suggestion from Jaroslav Hajek, I have 
> run into an interesting puzzle.
> 
> trans-array.c (gfc_conv_array_transpose) implements a transpose in which 
> the operation is entirely performed inline and only acts on the 
> descriptor.  Jaroslav suggests that we do the same for reshape and spread.
> 
> In investigating this, I found the rather wierd and wonderful property 
> of gfortran; gfc_conv_array_transpose only works when it is the actual 
> argument of something.  If I lift this constraint, it still works fine.
> 
> Does anybody know why this is so?

The original implementation of this feature (only modify the descriptor) 
was intended for the special case MATMUL(TRANSPOSE(X),Y).  It seems 
nobody at the time thought that this optimization would work or be 
beneficial outside these circumstances.

The original patch and its explanation can be found here: 
<http://gcc.gnu.org/ml/fortran/2005-12/msg00113.html> and in the older 
threads linked from there.

Cheers,
- Tobi



More information about the Fortran mailing list