[Openmp-commits] [PATCH] D110707: [OpenMP][OMPT] lightweight tasks and explicit tasks

Vladimir Inđić via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Wed Sep 29 05:58:37 PDT 2021


vladaindjic created this revision.
vladaindjic added reviewers: protze.joachim, AndreyChurbanov, hbae, jlpeyton.
Herald added subscribers: guansong, yaxunl.
vladaindjic requested review of this revision.
Herald added a reviewer: jdoerfert.
Herald added subscribers: openmp-commits, sstefan1.
Herald added a project: OpenMP.

__ompt_get_task_info_internal function was extended to support arbitrary
nesting of explicit tasks and serialized parallel regions. In
particular, this fixes problems that occur when a serialized parallel
region is nested inside an explicit task which is at the same time
enclosed by another serialized parallel region.

While forming a serialized parallel region nested inside an explicit task, 
a new lightweight task descriptor is created to represent the information 
about the explicit task. To indicate whether a lightweight task descriptor 
corresponds to an explicit or an implicit task, it now contains td_flags field
of kmp_tasking_flags_t type. Now, the ompt_get_task_info can determine 
the right information about the task type.

When a serialized parallel region R2 <https://reviews.llvm.org/source/clang-tools-extra/> is nested inside a chain of explicit tasks
belonging to an enclosing serialized parallel region R1 <https://reviews.llvm.org/diffusion/L/>, all explicit tasks nested 
in R1 <https://reviews.llvm.org/diffusion/L/> and R1 <https://reviews.llvm.org/diffusion/L/>’s implicit task share the same ompt_team_info stored inside the lwt 
that represents the innermost explicit task in R1 <https://reviews.llvm.org/diffusion/L/>. (before nested loop)

The following tests are provided to show that the patch fixes described problems:

1. lwts_info.c - contains serialized parallel region that encloses an explicit task that encloses another serialized parallel region.
2. lwts_if_info.c - the same as previous with the difference that if(0) clause is used inside omp parallel and task directives
3. nested_lwts_info.c - contains three nested serialized parallel regions that enclose three explicit tasks that enclose another three nested serialized parallel regions.
4. nested_lwts_if0_info.c - the same as previous with the difference that if(0) clause is used inside omp parallel and task directives


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D110707

Files:
  openmp/runtime/src/kmp.h
  openmp/runtime/src/kmp_tasking.cpp
  openmp/runtime/src/kmp_tasking_flags.h
  openmp/runtime/src/ompt-internal.h
  openmp/runtime/src/ompt-specific.cpp
  openmp/runtime/test/ompt/tasks/lwts_if0_info.c
  openmp/runtime/test/ompt/tasks/lwts_info.c
  openmp/runtime/test/ompt/tasks/nested_lwts_if0_info.c
  openmp/runtime/test/ompt/tasks/nested_lwts_info.c

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110707.375850.patch
Type: text/x-patch
Size: 51544 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20210929/a3f9a81a/attachment-0001.bin>


More information about the Openmp-commits mailing list