On Thu, 21 May 2015 15:21:54 +0200 Jakub Jelinek <ja...@redhat.com> wrote:
> On Thu, May 21, 2015 at 02:05:12PM +0100, Julian Brown wrote: > > OpenACC handles function calls specially (calling them "routines" > > -- of varying sorts, gang, worker, vector or seq, affecting where > > they can be invoked from). The plan is that all threads will call > > such routines -- and then some threads will be "neutered" as > > appropriate within the routines themselves, as appropriate. > > All functions will behave that way, or just some using some magic > attribute etc.? Say will newlib functions behave this way (math > functions, printf, ...)? It's actually unclear at this point if "regular" functions are supported by OpenACC at all (the spec says nothing about them). They probably raise "interesting" questions about re-entrancy, synchronisation, and so on. > For math functions e.g. it would be nice if > they could behave both ways (perhaps as separate entrypoints), so > have the possibility to say how many threads from the warp will > perform the operation and then work on array arguments and array > return value (kind like OpenMP or Cilk+ elemental functions, just > perhaps with different argument/return value passing conventions). And that's something that's way outside the spec as currently defined, AFAIK. Julian