<div dir="auto"><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I would like to bring your attention to the choice of 2 proposals for the<br>
declare mapper runtime interface:<br>
<br>
1. The current design which creates new runtime functions for declare<br>
mappers. For example, right now we have `__tgt_target_teams(...)` which<br>
corresponds to the runtime interface for `omp target teams`. Now we add<br>
`__tgt_target_teams_mapper(..., void **mappers)` to replace it.<br></blockquote></div><div dir="auto"><br></div><div dir="auto">New feature, new library call seems reasonable. The current interface can presumably be reimplemented as a call to (the internals of) the proposed interface.</div><div dir="auto"><br></div><div class="gmail_quote" dir="auto"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
2. Introduce a function `__tgt_push_mappers`, which should be called before<br>
every target function call (e.g., `__tgt_target_teams`) to pass the mapper<br>
argument for that function. The call of `__tgt_push_mappers` is implicitly<br>
bonded with the actual target call.<br></blockquote></div><div dir="auto"><br></div><div dir="auto">This seems error prone to use and likely to degrade performance.</div><div dir="auto"><br></div><div dir="auto">Choice 1 seems more appealing to me.</div><div dir="auto"><br></div><div dir="auto">Cheers</div></div>