ifort and common blocks

ifort and common blocks

Hi,

Trying to compile an application with intel compiler 13.1.3 for linux and openmpi I kept getting 

This name does not have a type, and must have an explicit type.   [MPI_IN_PLACE]

As the application is not open source... I created a small example to show the issue (file attached) which I boiled down to the an issue with the current version of the compiler. 

[alin@abaddon:~/playground/mpimod]: ifort *.F90
test.F90(5): error #6404: This name does not have a type, and must have an explicit type. [MPI_IN_PLACE]
write(*,*)"MPI_IN_PLACE: ", mpi_in_place
----------------------------^
compilation aborted for test.F90 (code 1)

if in myf.h i comment line 2 and uncomment line 3 everything compiles as expected.

so it seems to be an issue when there is only one variable in the common block.

older versions of the compiler that I have tried 2013.2.146 and 2013.0.079 compile the files as expected.

another workaround is: in file myTestMod.F90 the line 

use myMPI, only : mpi_in_place

is replaced by

use myMPI

is this a regression or I miss something?

regards,

Alin

AllegatoDimensione
Download mympi.f9093 byte
Download mytestmod.f9094 byte
Download myf.h127 byte
Download test.f90102 byte
Without Questions there are no Answers!
5 post / 0 nuovi
Ultimo contenuto
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione

Yes, it does appear that this is a regression. It happened between updates 3 and 4 of Composer XE 2013. I have escalated this to development as issue DPD200247222.

The simplest solution, and one I would recommend if feasible, is to do away with COMMON and have these be module variables. This also avoids the error and doesn't require any other code changes (that is, unless you have code that redeclares the COMMON and doesn't use modules.)

Steve - Intel Developer Support

Hi Lionel,

thank you for your fast answer and suggestion!

The codes affected by this are openmpi and mpich. Fortunately for me intel-mpi is not affected and I can use it.

regards,

Alin

Without Questions there are no Answers!

>>so it seems to be an issue when there is only one variable in the common block.

Can you add a second dummy variable and EQUIVILENCE them to work around the bug?

Jim Dempsey

 

www.quickthreadprogramming.com

This issue has been fixed for the 15.0 release due out later this year. The fix isn't in the initial beta.

Steve - Intel Developer Support

Lascia un commento

Eseguire l'accesso per aggiungere un commento. Non siete membri? Iscriviti oggi