[cfe-dev] Discussion about OpenMP 5.0 declare mapper runtime interface

Lingda Li via cfe-dev cfe-dev at lists.llvm.org
Mon Sep 30 13:49:33 PDT 2019


Hi,

I would like to bring your attention to the choice of 2 proposals for the
declare mapper runtime interface:

1. The current design which creates new runtime functions for declare
mappers. For example, right now we have `__tgt_target_teams(...)` which
corresponds to the runtime interface for `omp target teams`. Now we add
`__tgt_target_teams_mapper(..., void **mappers)` to replace it.

As a result, the old interfaces will be deprecated, but they need to be
kept there for backward compatibility. I think this scheme is clear and has
no hidden problems. The down side is it will create more OpenMP runtime
interfaces. The patches for this scheme can be found at
https://reviews.llvm.org/D67833 and https://reviews.llvm.org/D68100.

2. Introduce a function `__tgt_push_mappers`, which should be called before
every target function call (e.g., `__tgt_target_teams`) to pass the mapper
argument for that function. The call of `__tgt_push_mappers` is implicitly
bonded with the actual target call.

This scheme will introduce less runtime interfaces. Its problem is the
implementation is not straightforward and needs to take extra precautions.
For example, each OpenMP task should have a separate mapper storage, to
prevent a target region from reading the mapper written by another task.

Your option about which one is better will be greatly appreciated.

Thanks,
Lingda Li
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20190930/132604a9/attachment.html>


More information about the cfe-dev mailing list