[all-commits] [llvm/llvm-project] de9edf: [OpenMP] Avoid zero size copies to the device

Johannes Doerfert via All-commits all-commits at lists.llvm.org
Tue Mar 21 19:17:18 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: de9edf4afecc1c2caf3b552f9241008ad2bd40a8
      https://github.com/llvm/llvm-project/commit/de9edf4afecc1c2caf3b552f9241008ad2bd40a8
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2023-03-21 (Tue, 21 Mar 2023)

  Changed paths:
    M openmp/libomptarget/src/device.cpp
    M openmp/libomptarget/src/omptarget.cpp
    M openmp/libomptarget/test/mapping/data_member_ref.cpp

  Log Message:
  -----------
  [OpenMP] Avoid zero size copies to the device

This unblocks one of the XFAIL tests for AMD, though we need to work
around the missing printf still.

Differential Revision: https://reviews.llvm.org/D146592


  Commit: 0153ab6dbc33ae27b033e0dcf2c46e6de13f8521
      https://github.com/llvm/llvm-project/commit/0153ab6dbc33ae27b033e0dcf2c46e6de13f8521
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2023-03-21 (Tue, 21 Mar 2023)

  Changed paths:
    M openmp/libomptarget/DeviceRTL/src/Parallelism.cpp

  Log Message:
  -----------
  [OpenMP] Remove restriction on the thread count for parallel regions

Differential Revision: https://reviews.llvm.org/D112194


  Commit: f2c385934b0cb5fee14e62528497f76a9a534d77
      https://github.com/llvm/llvm-project/commit/f2c385934b0cb5fee14e62528497f76a9a534d77
  Author: Johannes Doerfert <johannes at jdoerfert.de>
  Date:   2023-03-21 (Tue, 21 Mar 2023)

  Changed paths:
    M openmp/libomptarget/include/device.h
    M openmp/libomptarget/src/api.cpp
    M openmp/libomptarget/src/device.cpp
    M openmp/libomptarget/src/omptarget.cpp

  Log Message:
  -----------
  [OpenMP] Remove shadow pointer map and introduce consistent locking

The shadow pointer map was problematic as we scanned an entire list if
an entry had shadow pointers. The new scheme stores the shadow pointers
inside the entries. This allows easy access without any search. It also
helps us, but also makes it necessary, to define a consistent locking
scheme. The implicit locking of entries via TargetPointerResultTy makes
this pretty effortless, however one has to:

- Lock HDTTMap before locking an entry.
- Do not lock HDTTMap while holding an entry lock.
- Hold the entry lock to read or modify an entry.

The changes to submitData and retrieveData have been made to ensure 2
when the LIBOMPTARGET_INFO flag is used. Most everything else happens by
itself as TargetPointerResultTy acts as a lock_guard for the entry. It
is a little complicated when we deal with multiple entries, especially
as they can be equal. However, one can still follow the rules with
reasonable effort.

LookupResult are now finally also locking the entry before it is
inspected. This is good even if we haven't run into a problem yet.

Differential Revision: https://reviews.llvm.org/D123446


Compare: https://github.com/llvm/llvm-project/compare/ebcc6dba5f08...f2c385934b0c


More information about the All-commits mailing list