llvm / llvm/llvm-project

Implement OpenMP lowering for iterator modifier in depend/from/map/to

Open
#188,061 0 comments 0 reactions 1 assignee Claimed by @chichunchen View on GitHub
flang:openmp
Dominant language
LLVM
Stars
40.5k
Forks
18.7k
PR merge metrics
PR metrics pending

Description

Implement iterator modifier support in depend/from/map/to by following the proposal in omp.iterator PR (#182218).

- [DONE] affinity clause: each iteration returns !omp.iterated.
omp.affinity_entry have enough info to build kmp_task_affinity_info_t.
- [DONE] depend clause: each iteration returns something like !omp.iterated
- [TODO] map/to/from: each iteration returns !omp.iterated

```
%it = omp.iterators(%iv: index) = (%lb to %ub step %step) {
%e = omp.affinity_entry %addr, %len
: (!llvm.ptr, i64) -> !omp.affinity_entry_ty
omp.yield(%e : !omp.affinity_entry_ty)
} -> !omp.iterated>

omp.task affinity(%it : !omp.iterated>) {
omp.terminator
}
```

Conceptually, this lowers to:

```
kmp_task_affinity_info_t affinity_info_list[tripcounts];
for (int i = lb; i < ub; i += step) {
affinity_info_list[i] = omp.iterators(i);
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.