IBM Support

LI75695: WRONG OUTPUT WITH MPI, -O3 AND -QAUTODBL=DBL4

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • When compiling and running the following testcase, the output is
    incorrect.  The error is caused by using the MPI compiler
    invocation, -O3 and the -qautodbl=dbl4 option.  Using the
    invocation 'xlf95_r' gives the correct output.  Removing
    -qautodbl=dbl4 or -O3 or adding -qstrict gives the correct
    output.
    
    
     =====   TESTCASE   =====
    
    ===== COMPILE COMMAND:
    mpixlf95_r -O3 -o optim_O3 -qautodbl=dbl4 optim_test.F90
    
    
    PROGRAM optim_test
      IMPLICIT NONE
      INTEGER :: vsp_dim, momnum, ln1,ln2
      COMPLEX, DIMENSION(:,:), ALLOCATABLE :: infield
      COMPLEX, DIMENSION(:), ALLOCATABLE :: mom
      REAL, DIMENSION(:,:), ALLOCATABLE :: mat
      integer :: ierr,n
      ln1=1; ln2=1;
      vsp_dim = 32
      ALLOCATE(infield(1:vsp_dim,ln1:ln2))
      ALLOCATE(mat(1:vsp_dim,ln1:ln2))
      ALLOCATE(mom(ln1:ln2))
      mat = 3.0D0
      infield = CMPLX(1.0d0,4.0d0)
      CALL calc_moments_perf(vsp_dim, infield,mat, mom)
      PRINT*,ln1,': ',mom(ln1)
    CONTAINS
      SUBROUTINE calc_moments_perf(vsp_dim,p_g_1,p_mat,p_mom)
        INTEGER, INTENT(in):: vsp_dim
        COMPLEX, DIMENSION(vsp_dim,ln1:ln2), INTENT(in):: p_g_1
        REAL, DIMENSION(vsp_dim,ln1:ln2), INTENT(in):: p_mat
        COMPLEX, DIMENSION(ln1:ln2), INTENT(out):: p_mom
        COMPLEX, DIMENSION(vsp_dim):: temp
        INTEGER:: n
        temp = p_mat(:,ln1) * p_g_1(:,ln1)
        p_mom(ln1) = SUM(temp,1)
      END SUBROUTINE calc_moments_perf
    END PROGRAM optim_test
    

Local fix

  • n/a
    

Problem summary

  • USER AFFECTED:
    Users who make use of floating point code.
    
    PROBLEM DESCRIPTION:
    Incorrect output in applications with floating point code.  A
    code optimization was not tracking a floating point register
    correctly thus resulting in an incorrect computation.
    

Problem conclusion

  • Dot product reduction was not properly
    tracking the secondary floating point register through a string
    of serialized computations. This meant that it did not correctly
    transform the computation. The method in which it tracks the
    secondary register has been corrected.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI75695

  • Reported component name

    XL FORTRAN AE B

  • Reported component ID

    5799HJG00

  • Reported release

    B10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-09-13

  • Closed date

    2010-09-13

  • Last modified date

    2010-09-13

  • APAR is sysrouted FROM one or more of the following:

    LI74650

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    XL FORTRAN AE B

  • Fixed component ID

    5799HJG00

Applicable component levels

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSB259","label":"XL Fortran Advanced Edition for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B.1","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
24 February 2022