This is an archive of the discontinued LLVM Phabricator instance.

[AMDGPU] Attempt to reschedule withou clustering
ClosedPublic

Authored by rampitec on Jan 24 2020, 3:30 PM.

Details

Summary

We want to have more load/store clustering but we also want
to maintain low register pressure which are oposit targets.
Allow scheduler to reschedule regions without mutations
applied if we hit a register limit.

Diff Detail

Event Timeline

rampitec created this revision.Jan 24 2020, 3:30 PM
Herald added a project: Restricted Project. · View Herald TranscriptJan 24 2020, 3:30 PM

This tries scheduling with all mutations disabled including macro fusion right?

Instead of adding another scheduling pass could you try always disabling mutations for the first pass, and have them enabled for the second pass with a fallback if we drop occupancy?

This tries scheduling with all mutations disabled including macro fusion right?

Yes. Macrofusion shall have the same impact on the pressure as clustering. It is a clustering in a sense.

Instead of adding another scheduling pass could you try always disabling mutations for the first pass, and have them enabled for the second pass with a fallback if we drop occupancy?

I though about it but have chosen not to. It will effectively double scheduling time. Note I am only rescheduling when we run out of registers. If I do it another way I will have to always attempt rescheduling. Currently the impact on the compile time should be really minimal.

kerbowa accepted this revision.Jan 25 2020, 4:24 PM

LGTM

This revision is now accepted and ready to land.Jan 25 2020, 4:24 PM

LGTM.

llvm/lib/Target/AMDGPU/GCNSchedStrategy.h
97

Maybe a BitVector? Don't have a strong opinion though.

rampitec updated this revision to Diff 240630.Jan 27 2020, 10:14 AM
rampitec marked an inline comment as done.

Switched to BitVector.

vpykhtin accepted this revision.Jan 27 2020, 10:20 AM

LGTM, Thanks.

This revision was automatically updated to reflect the committed changes.