This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/84498] New: [nvptx, openacc] Don't generate state-propagation inbetween subsequent worker/vector loops
- From: "vries at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 21 Feb 2018 11:40:09 +0000
- Subject: [Bug target/84498] New: [nvptx, openacc] Don't generate state-propagation inbetween subsequent worker/vector loops
- Auto-submitted: auto-generated
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.