From: kiwanuka on
On Jan 16, 3:31 pm, Gordon Sande <g.sa...(a)worldnet.att.net> wrote:
> On 2010-01-16 11:01:43 -0400, kiwanuka <robert.kiwan...(a)gmail.com> said:
>
>
>
> > Dear all,
>
> > I wonder if anyone has come across this problem before or has any idea
> > how to go about solving it.
>
> > Problem:
> > When I run abaqus with fortran 90 subroutines in which I use typical
> > fortran 90 functions like mutmul, then if
> > (1) I use the ifort compiler, no problem, job runs well.
> > (2) if I use the gfortran compiler, I get "Abaqus Error: The
> > executable [snip]/standard.exe aborted with system error "Illegal
> > memory reference" (signal 11)."
>
> > Other info:
> > - On the same computer where I have gfortran installed, jobs run fine
> > if I use Abaqus +gfortran+fortran 77 standard code, i.e. no special
> > functions or statements applicable to the fortran 90 standard but not
> > fortran 77.
>
> > -The version of abaqus on the computer with gfortran is 6.8.4 and the
> > gfortran version is "gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu8)"
>
> > -The version of abaqus on the computer with ifort is 6.6.3 and the
> > ifort version is "Version 9.1"
>
> > -When I build stand-alone programs in complete fortran 90 standard,
> > with whatever fortran 90 statements, they work perfectly with gfortran
> > on the same computer (which is running on Ubuntu 9.10)! IT IS ONLY
> > WHEN I WRITE ABAQUS SUBROUTINES IN FORTRAN 90 THAT I HAVE PROBLEMS! -
> > sorry not shouting but emphasising.
>
> > Any ideas around this would be welcome.
>
> > Thanks in advance,
>
> > Robert
>
> Under a minute with Google etc leads to Abaqus system requirement of IFORT.
> There is no mention of any other compiler. Fortran runtime support is

The abaqus environment file is written to expect ifort, but if made
aware of other compilers it calls them instead. It has always used
gfortran for my f77 user subroutines.

> rarely if ever compatable between different compilers. Most suppliers
> of subroutine packages sell separate versions for each compiler they
> support. A few will give you a discount for a second compiler but many
> will not.

I have never used any supplier of supplier of subroutine packages. We
write our own user element subroutines according to our element models
and other things like elastic - plastic constitutive behaviour.

Regards,

Robert
From: Richard Maine on
kiwanuka <robert.kiwanuka(a)gmail.com> wrote:

> On Jan 16, 3:31 pm, Gordon Sande <g.sa...(a)worldnet.att.net> wrote:

> > Under a minute with Google etc leads to Abaqus system requirement of IFORT.
> > There is no mention of any other compiler. Fortran runtime support is
>
> The abaqus environment file is written to expect ifort, but if made
> aware of other compilers it calls them instead. It has always used
> gfortran for my f77 user subroutines.

I'm sorry, but the fact that you can make Abaqus call some other
compiler is not substantial argument that there is any reason to expect
it to work. Nor, as it happens, is the fact that you can make it work
with some code (f77 code in particular), substantial evidence to expect
it to work with other code (such as code using f90 features). See below.

>> rarely if ever compatable between different compilers. Most suppliers
>> of subroutine packages sell separate versions for each compiler they
>> support. A few will give you a discount for a second compiler but
>> many will not.

> I have never used any supplier of supplier of subroutine packages. We
> write our own user element subroutines according to our element models
> and other things like elastic - plastic constitutive behaviour.

And here you just completely miss the point. It matters not whether the
code in question comes from some 3rd-party supplier or from yourself.
The point is that a product that supports code from one compiler does
not necessarily support the same code compiled with a different
compiler. This is true in general, as experts like Gordon and Tim (both
of who made essentially the same point) well know. Your reported data is
completely consistent with expectations based on such experience.

Your observation that your f77 code appears to work while your f90 code
does not work is consistent with this explanation. F90 introduced
*MAJOR* (If I may indulge in my own shouting) new features relating to
procedure interfaces. The implementation of those features does not tend
to be compatable at an object code level between compilers. The
implementation of f77 procedure interfaces does sometimes also have
incompatibilities, but the odds there are far better. Based on your
description, I'd saythat the odds were very high that the
object-code-level incompatibility of procedure interfaces is exactly the
problem.

I will add my own experience to that of Gordon and Tim in saying that if
Abaqus only supports IFORT, then you can't count on it working with
anything else. That also applies to f77 code, I might add. Just because
you got it to work with some f77 code doesn't mean it would work with
all f77 code. This is more than idle speculation on my part. I have
plenty of experience such cases of limitted compatibility. You could
find, for example, that things fail if you have arguments of character
type (or are ok with one such argument, but fail with multiple ones).
You could also find that things fail if I/O is involved. Those two
examples are specific ones that I have seen, but they are by no means
all of the possibilities.

Heck, I recall cases of some products being quite picky about the exact
version of compilers. A different version from the same vendor wouldn't
do. I once ran into that with Matlab on Sun computers (the specific case
I recall being quite a while back).

--
Richard Maine | Good judgment comes from experience;
email: last name at domain . net | experience comes from bad judgment.
domain: summertriangle | -- Mark Twain
From: dpb on
kiwanuka wrote:
> On Jan 16, 3:01 pm, kiwanuka <robert.kiwan...(a)gmail.com> wrote:
>> Dear all,
>>
>> I wonder if anyone has come across this problem before or has any idea
>> how to go about solving it.
>>
>> Problem:
>> When I run abaqus with fortran 90 subroutines in which I use typical
>> fortran 90 functions like mutmul, then if
>> (1) I use the ifort compiler, no problem, job runs well.
>> (2) if I use the gfortran compiler, I get "Abaqus Error: The
>> executable [snip]/standard.exe aborted with system error "Illegal
>> memory reference" (signal 11)."
....
> Abaqus + ifort +f90 standard subroutines is fine
> Abaqus +gfortran + f90 gives illegal memory reference <===
>
> So far the problems have been noted with usage of mutmul, allocate and
> pointers; the first separately, the other two in combination.
....
As others have said so I'm simply reinforcing it in less politic terms
the short story is you're trying to push water up a rope w/ the last
combination above unless Abaqus has another set of runtimes consistent
w/ the gfortran F90 implementation details.

There's no point in even trying to solve the problem outside what the
vendor supports when there's fundamental mismatch between
implementations involved.

Machinations that seem to work in some cases will still not necessarily
be ok in others and could even break on different data for cases that
appear to work on some tests.

Trying to work around such issues is just not a fruitful way to spend
one's time...

--
From: kiwanuka on
[snip]
> The point is that a product that supports code from one compiler does
> not necessarily support the same code compiled with a different
> compiler. This is true in general, as experts like Gordon and Tim (both

Thanks Richard. That's a useful reminder

[snip]
> does not work is consistent with this explanation. F90 introduced
> *MAJOR* (If I may indulge in my own shouting) new features relating to
> procedure interfaces. The implementation of those features does not tend
> to be compatable at an object code level between compilers. The
> implementation of f77 procedure interfaces does sometimes also have
> incompatibilities, but the odds there are far better. Based on your
> description, I'd saythat the odds were very high that the
> object-code-level incompatibility of procedure interfaces is exactly the
> problem.

Thanks again. That's likely the problem indeed! In that case I will
not waste time trying to solve it.

>
> I will add my own experience to that of Gordon and Tim in saying that if
> Abaqus only supports IFORT, then you can't count on it working with
> anything else. That also applies to f77 code, I might add. Just because
> you got it to work with some f77 code doesn't mean it would work with
> all f77 code. This is more than idle speculation on my part. I have
> plenty of experience such cases of limitted compatibility. You could
> find, for example, that things fail if you have arguments of character
> type (or are ok with one such argument, but fail with multiple ones).
> You could also find that things fail if I/O is involved. Those two
> examples are specific ones that I have seen, but they are by no means
> all of the possibilities.

That is useful to know.
>
> Heck, I recall cases of some products being quite picky about the exact
> version of compilers. A different version from the same vendor wouldn't
> do. I once ran into that with Matlab on Sun computers (the specific case
> I recall being quite a while back).

I've seen this before myself but the fact that I have always gotten
Abaqus and gfortran to work with all my f77 code led me to expect that
something similar should be possible with f90 code.

Regards,

Robert
From: kiwanuka on
On Jan 16, 5:16 pm, dpb <n...(a)non.net> wrote:
> kiwanuka wrote:
> > On Jan 16, 3:01 pm, kiwanuka <robert.kiwan...(a)gmail.com> wrote:
> >> Dear all,
>
> >> I wonder if anyone has come across this problem before or has any idea
> >> how to go about solving it.
>
> >> Problem:
> >> When I run abaqus with fortran 90 subroutines in which I use typical
> >> fortran 90 functions like mutmul, then if
> >> (1) I use the ifort compiler, no problem, job runs well.
> >> (2) if I use the gfortran compiler, I get "Abaqus Error: The
> >> executable [snip]/standard.exe aborted with system error "Illegal
> >> memory reference" (signal 11)."
> ...
> > Abaqus + ifort +f90 standard subroutines is fine
> > Abaqus +gfortran + f90  gives illegal memory reference <===
>
> > So far the problems have been noted with usage of mutmul, allocate and
> > pointers; the first separately, the other two in combination.
>
> ...
> As others have said so I'm simply reinforcing it in less politic terms
> the short story is you're trying to push water up a rope  w/ the last
> combination above unless Abaqus has another set of runtimes consistent
> w/ the gfortran F90 implementation details.
>
> There's no point in even trying to solve the problem outside what the
> vendor supports when there's fundamental mismatch between
> implementations involved.
>
> Machinations that seem to work in some cases will still not necessarily
> be ok in others and could even break on different data for cases that
> appear to work on some tests.
>
> Trying to work around such issues is just not a fruitful way to spend
> one's time...
>
> --

Many thanks. I usually prefer to try and fail rather than failing to
try so I gave it ago but now I see the depth of the complications I
was digging into in this particular case. Thanks for all the
information.

Regards

Robert
First  |  Prev  | 
Pages: 1 2
Prev: array in read statement
Next: Maths constants