Intel® Fortran Compiler for Linux* and Mac OS X*

MPI application portable?

Hi there,

My fortran code uses MPI, with all MPI lines prefixed with !$ for conditional compilation. Compiling the code using ifort on a Linux cluster, with command lines:

ifort -O2 -ip -ipo -inline-factor=100 -unroll-aggressive -openmp -o a.out *.f90

mpif90 -O2 -ip -ipo -inline-factor=100 -unroll-aggressive -openmp -o a-mpi.out *.f90

I got 2 binaries, a.out and a-mpi.out, which both work fine on the cluster. However, when they are tested by my colleague on his Linux machine, he had no problem with a.out, but had an error message

Fixing multiplicity of common blocks in library

Can identical common blocks of mutually exclusive subroutines be merged within a library? Current results show multiplicity.

I modified a Fortran 77 package to use common blocks in lieu of internally saved variables to allow checkpointing. Several subroutines within the package use identical (or subset of) variables in the common blocks. So, I've written a few header files which define the maximal necessary common blocks to interface with the code. This provides a consistent chunk of external variables that will work with any subroutine in the package.

Distributable binary for Mac OS X

Hi there,

I am using the latest Intel fortran composer on Mac OS X (10.9.2) to compile my code, with command

ifort -O1 -ip *.f90

The binary generated, a.out, works fine on my Mac. However, when my colleague tested it on him Mac with the same OS, he got an error message:

./colony2s-mac-i.out: line 1: syntax error near unexpected token `<'

Coarray type with an allocatable component of length zero

I get a SIGSEGV when running the following code

 type t

	  real, allocatable :: a(:)

	 end type t

	 type(t) :: data[*]


	 print*, size(data[1]%a)

	end program

If, instead of the last line I put

print*, size(data%a)

it runs successfully by printing 0 for each image. In principle I could work out the problem by using 'allocated' statements, but



Compiler not detecting missing OMP4 declare target variable

Most of the time, the compiler will complain if a global variable used in an OMP4 target region is not declared for the target (!$omp declare targt(foo))

But now I had a (very big) program that compiled without errors (finally after fixing all the missing declares) but failed at runtime with the message:

Functions returning arrays, derived types and the creation of temporaries.

Dear all,

Consider the following situation followed up by a working test case.

Let there be a derived type wrapping a multidimensional array. Let there further be a function "sum" which adds array components of the objects of a derived type and returns the resulting array. Furthermore, there is a "from_array" assignment subroutine which takes an object and an array, then fills the array component of the object with its array argument.

Override default component initialization


I understand the following is not legal:

module foo
type :: bar
    integer :: a=53
end type

type, extends(bar) :: rab
    integer :: a=-33333 !!! Redefine default initialization
end type
end module

I think this would be quite practical. The only workaround is implementing clumsy constructor wrappers...

Any thoughts?

S’abonner à Intel® Fortran Compiler for Linux* and Mac OS X*