Skip to content

DependencyTools misses a simple opportunity for parallelisation? #3224

@mn416

Description

@mn416

While working on PR #3213 I encountered the following loop that I thought DependencyTools would be able to parallelise, but was surprised to find it couldn't:

module subroutine_example
contains
  subroutine main()
    integer :: i
    real :: re_m(10)
    real :: im_m(10)
    do i = 1, 10
      call sub(re_m(i), im_m(i))
    end do
  end subroutine

  pure subroutine sub(a, b)
    real, intent(inout) :: a
    real, intent(inout) :: b
  end subroutine
end module

Here's a small PSyclone script to try to parallelise it:

from psyclone.psyir.transformations import OMPLoopTrans, TransformationError
from psyclone.psyir.nodes import Loop, Routine

def trans(psyir):
    for loop in psyir.walk(Loop):
        OMPLoopTrans(omp_directive="paralleldo").apply(loop)

@hiker may be interested in this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions