Hi Richard,

Good spot! -fdefault-integer-8 does indeed fix the problem with rnflow.f90
but breaks tfft2.f90, with a type mismatch at lines 36 and 44.

      integer(8), parameter   :: jmul =  843314861  ! multiplicateur
      integer(8), parameter   :: jadd =  453816693  ! constante additive
Does the job and is portable.

With pr37336 patch applied:

Date & Time     :  9 Mar 2023 11:33:31
Test Name       : gfor_13
Compile Command : gfc13 -ffast-math -funroll-loops -O2 %n.f90 -o %n
Benchmarks      : ac aermod air capacita channel2 doduc gas_dyn2 fatigue2
induct2 linpk mp_prop_design nf protein rnflow test_fpu2 tfft2
Maximum Times   :    10000.0
Target Error %  :      0.100
Minimum Repeats :     1
Maximum Repeats :     2

   Benchmark   Compile  Executable   Ave Run  Number   Estim
        Name    (secs)     (bytes)    (secs) Repeats   Err %
   ---------   -------  ----------   ------- -------  ------
          ac      0.00       51720      7.78       2  0.0000
      aermod      0.00     1079416     10.35       2  0.1642
         air      0.00       87096      3.66       2  0.1230
    capacita      0.00       65936     22.88       2  0.0153
    channel2      0.00       39832     92.17       2  0.4410
       doduc      0.00      182104     14.55       2  0.2509
    gas_dyn2      0.00       91784    182.65       2  0.8576
    fatigue2      0.00       86496     95.72       2  0.7182
     induct2      0.00      183824    100.85       2  0.0084
       linpk      0.00       43576      6.19       2  0.4442
mp_prop_desi      0.00       48376     94.72       2  0.4276
          nf      0.00       52192      9.84       2  0.1321
     protein      0.00      128248     22.06       2  0.0476
      rnflow      0.00      136296     25.99       2  0.0462
   test_fpu2      0.00      106232     82.97       2  0.0042
       tfft2      0.00       35608     47.94       2  0.7071

Geometric Mean Execution Time =      28.68 seconds

I think that the PR can be closed.

Cheers

Paul



On Thu, 9 Mar 2023 at 08:18, Richard Biener <rguent...@suse.de> wrote:

> On Wed, 8 Mar 2023, Thomas Koenig wrote:
>
> > On 08.03.23 15:55, Paul Richard Thomas via Fortran wrote:
> > > As noted below, rnflow.f90 hangs with the unpatched mainline at -O3 but
> > > runs successfully at -O2.
> >
> > I can confirm that.
> >
> > > I presume that this is a serious regression since it involves
> optimization?
> > > Which component should I post it against?
> >
> > Probably against tree-optimization.  If later analysis determines that
> > it is something else, people will reassign it.
> >
> > This one probably calls for bisection.
>
> I have the following local change to rnflow with that I can't reproduce:
>
> --- rnflow.f90.orig     2016-06-01 14:50:16.922376347 +0200
> +++ rnflow.f90  2016-06-01 14:56:54.739045162 +0200
> @@ -884,6 +884,7 @@
>  !     generation maison d'une valeur pseudo-aleatoire uniforme sur (0,1)
>  !
>        integer, intent (inout) :: jsee               ! germe courant
> +      integer(kind=8) :: jsee_long
>        integer, parameter   :: jmul =  843314861     ! multiplicateur
>        integer, parameter   :: jadd =  453816693     ! constante additive
>        integer, parameter   :: j230 = 1073741824     ! 2 puissance 30
> @@ -899,7 +900,9 @@
>  !CRAY - The following multiply must be done with 64 bits (not 46 bits)
>  !       The algoritm depends on the overflow characteristics of
>  !       a 32 or 64 bit multiply.
> -      jsee = jsee * jmul + jadd
> +      jsee_long = jsee;
> +      jsee_long = jsee_long * jmul + jadd
> +      jsee = jsee_long;
>  !CRAY - Change to avoid 32 bit integer dependency
>        !
>        !  The original line is needlessly dependent on the
>
> the existing comment already explains the issue.  I suppose
> -fdefault-integer-8 would also work around the issue?
>
> ISTR there is an old (closed invalid) bugreport about this as well.
>
> Richard.
>


-- 
"If you can't explain it simply, you don't understand it well enough" -
Albert Einstein

Reply via email to