This is the mail archive of the gcc-bugs@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]

[Bug target/84498] New: [nvptx, openacc] Don't generate state-propagation inbetween subsequent worker/vector loops


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84498

            Bug ID: 84498
           Summary: [nvptx, openacc] Don't generate state-propagation
                    inbetween subsequent worker/vector loops
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

Consider a openacc parallel region with two subsequent worker loops, with no
code inbetween the two loops.

We have the following sequence of state transitions:
1. worker single
2. worker partitioned
3. worker single
4. worker partitioned
5. worker single

At the transition from worker single to worker partitioned (1 -> 2 and 3 -> 4),
we propagate the set of live registers from the worker single thread to all the
worker threads.

At the first transition, we need to propagate all registers, because they
haven't been initialized yet in all the workers.

At the second transition however, we only need to propagate the registers that
have been modified during 3. To do this on a per-register base is more
complicated, but if no code is executed during 3, then we know no register was
modified inbetween, and we can skip the propagation of all registers.

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