This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Openacc launch API


Jakub?

https://gcc.gnu.org/ml/gcc-patches/2015-09/msg01287.html


On 09/17/15 10:40, Nathan Sidwell wrote:
Updated patch addressing your points.  Some  further comments though ...

+  while (GOMP_LAUNCH_PACK (GOMP_LAUNCH_END, 0, 0)
+     != (tag = va_arg (ap, unsigned)))

That's a somewhat non-idiomatic way to write this, with the constant first and
not obviously a constant. I'd initialize a variable with the constant before the
loop.

I went with
   while ((tag = va_arg (...)) != 0) ...

and killed GOMP_LAUNCH_END throughout, using explicit '0'.

+      assert (!GOMP_LAUNCH_DEVICE (tag));

Uh, that seems unfriendly, and not exactly forwards compatible. Can that fail a
bit more gracefully? (Alternatively, implement the device_type stuff now so that
we don't have TODOs in the code and don't have to worry about compatibility
issues.)

Added call to gomp_fatal, indicating libgomp is out of date. Also added a
default to the switch following with the same effect.  The trouble  with
implementing handling of device_type here now, is difficulty in testing its
correctness.  If it were  buggy we'd be in a worse position than not having it.

+GOACC_2.0,1 {
+  global:
+    GOACC_parallel_keyed;
+} GOACC_2.0;

Did you mean to use a comma?

I misunderstood your comment as 'did you mean to use a comma where you used
something else', not 'is that comma a typo?'  well spotted!

+    else if (!tagging)

Oh... so tagging controls two different methods for constructing argument lists,
one for GOACC_parallel and the other for whatever OMP uses? That's a bit
unfortunate, I'll need to think about it for a bit or defer to Jakub.

My earlier description was lacking.  The memory arguments have already been
pushed before that switch.  This is just dealing with async & wait args.  I
found it easier to modify the existing code path and have a tagging flag, rather
than duplicate it.

nathan


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]