| 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