-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[AIEX] Ignore bank conflict if in the next cycle we cannot schedule the instruction. #229
base: aie-public
Are you sure you want to change the base?
Conversation
|
@@ -479,6 +483,56 @@ int AIEPostRASchedStrategy::getMaxDeltaCycles(const SchedBoundary &Zone) const { | |||
BottomUpDelta.getValue()}); | |||
} | |||
|
|||
bool AIEPostRASchedStrategy::canOptimizeMemoryAccess(SUnit &SU, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As optimize is a general term, is it possible to summarize the goal of this function? I see the explanation deep in the code, but I think that is also good to have information in advance (mostly for future reference).
@@ -88,6 +88,10 @@ static cl::opt<bool> UseLoopHeuristics( | |||
"aie-loop-sched-heuristics", cl::init(true), | |||
cl::desc("Use special picking heuristics when scheduling a loop region")); | |||
|
|||
static cl::opt<bool> IgnoreMemoryBankConflict( | |||
"aie-ignore-bank-conflict", cl::init(false), | |||
cl::desc("Ignore bank conflicts based on special heuristics")); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I like this special heuristics
but I think we can go with just heuristics
;-).
As an insight about the regressions, are the worst ones related to bank conflicts (wait cycles) or just longer schedules? Or even a mix? |
About QoR, I can see that some results are not present (like Reduce* and Softmax*). Do you know the reason? |
As an insight about the regressions, are the worst ones related to bank conflicts (wait cycles) or just longer schedules? Or even a mix? I have been pondering on how we can automate turning on/off this feature without been too expensive About QoR, I can see that some results are not present (like Reduce* and Softmax*). Do you know the reason? |
I have a feeling that, before committing to a bank conflict, we should use a finer-grained heuristic to check if we reduce resource conflicts. We can get an inspiration on @martien-de-jong's work in |
AIEHazardRecognizer &HR = *getAIEHazardRecognizer(Zone); | ||
MachineInstr *MI = SU.getInstr(); | ||
|
||
const std::vector<unsigned int> *AlternateOpcodes; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would suggest to declare and initialize it together, two lines down
Will look into it, I think we need to add an extra pass iteration of scheduler to see if we are able to reduce the number of VLIW instruction in a BB by the same or more number of times that of we are creating bank-conflict. |
No description provided.