Issue 168701
Summary [flang][OpenMP] Custom mappers not supported in target update construct
Labels flang
Assignees
Reporter jfuchs-kmt
    The OpenMP standard v5.2 p289 and p166-168 resp. defines that custom mappers can be used in target update constructs with `to` and `from`:
`!$omp target update to(mapper(custom): typ))`
`!$omp target update from(mapper(custom): typ))`

where one could imagine using the feature in a code similar to the snippet:
```fortran
PROGRAM main
    IMPLICIT NONE

    INTEGER, PARAMETER :: n = 4

    TYPE :: typ
        INTEGER, ALLOCATABLE :: a(:)
 INTEGER, ALLOCATABLE :: b(:)
    END TYPE typ
    !$omp declare mapper(custom: typ :: t) map(t%a)

    TYPE(typ) :: t
    ALLOCATE(t%a(n), source=1)
    ALLOCATE(t%b(n), source=2)
    !$omp target enter data map(alloc: t)

    t%a = 42 ! Modify on host
    !$omp target update to(mapper(custom): t)

    !$omp target
    t%a(:) = t%a(:) / 2 ! Modify on device
    t%b(:) = -1 ! Should not be copied back with custom mapper
 !$omp end target
    !$omp target update from(mapper(custom): t)

 PRINT*, t%a ! Expect: 21 21 21 21
    PRINT*, t%b ! Expect: 2  2  2  2

 !$omp target exit data map(delete: t)
    DEALLOCATE(t%a)
 DEALLOCATE(t%b)
END PROGRAM main
```

When compiling this with latest flang, the compiler does not recognize the mappers:
```
> flang -O2 -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda -fopenmp-version=52 main.F90 
warning: OpenMP support for version 52 in flang is still incomplete
error: Semantic errors in main.F90
./main.F90:18:35: error: Internal: no symbol found for 'custom'
      !$omp target update to(mapper(custom): t)
 ^^^^^^
./main.F90:24:37: error: Internal: no symbol found for 'custom'
      !$omp target update from(mapper(custom): t)
```

I am not sure if this is a bug or if the feature is not implemented but since there has been great progress on custom mappers lately, I suspect that the infrastructure to implement it might exist already.

For reference, I am using `flang version 22.0.0git ([email protected]:llvm/llvm-project.git ee1abb8d80691e5ef24da3273587dc789c9c6f1b)`
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to