Skip to content

[Issue]: flang-new: do concurrent (host) reduction gives incorrect result. #253

Open
@RJaBi

Description

@RJaBi

Problem Description

I was having some issues with do-concurrent giving wrong results on the host with some more complicated code. I reduced it down to the below which just does a sum within a do-concurrent with a reduction.

There's a reduction for an int and one for a real. In the real code, there's some actual work done here, but for this minimal example, I just add 1 each iteration.

I can compile with
amdflang-new -g -O0 -fopenmp -fdo-concurrent-parallel=host

and the numbers it produces are different each time. The correct answer is given by

amdflang-new -g -O0 -fopenmp -fdo-concurrent-parallel=none

program superMWE
  use iso_c_binding, only: C_DOUBLE
  implicit none(external)
  integer, parameter :: WP=C_DOUBLE
  ! set up size
  integer :: NX, NY, NZ, NT
  ! counters
  integer :: nnt, nnx, nny, nnz
  ! sum
  real(kind=WP) :: sumTrP
  integer :: nP
  NX = 32
  NY = 32
  NZ = 32
  NT = 8
  nP = 0
  sumTrP = 0.0_WP
  do concurrent(nnx=1:nx, nny=1:ny, nnz=1:nz, nnt=1:nt) reduce(+:sumTrP, nP)
         sumTrP = sumTrP + 1.0_WP
         nP = nP + 1
   end do
   write(*,*) 'Done', sumTrP, nP
end program superMWE

Operating System

Ubuntu 22.04.5 LTS (Jammy Jellyfish)

CPU

13th Gen Intel(R) Core(TM) i5-13500

GPU

Not applicable

ROCm Version

rocm-afar-7110-drop-5.3.0

ROCm Component

flang

Steps to Reproduce

No response

(Optional for Linux users) Output of /opt/rocm/bin/rocminfo --support

No response

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions