Skip to content

Commit 4a2d30b

Browse files
jfuentesigcbot
authored andcommitted
Update priority for GRF number
1 parent 60c1bbe commit 4a2d30b

File tree

2 files changed

+20
-22
lines changed

2 files changed

+20
-22
lines changed

visa/G4_Kernel.cpp

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -623,10 +623,8 @@ bool G4_Kernel::updateKernelToLargerGRF() {
623623
if (numRegTotal == grfMode.getMaxGRF())
624624
return false;
625625

626-
numRegTotal = grfMode.getLargerGRF();
627-
628626
// Scale number of GRFs, Acc, SWSB tokens.
629-
setKernelParameters();
627+
setKernelParameters(grfMode.getLargerGRF());
630628
fg.builder->rebuildPhyRegPool(getNumRegTotal());
631629
return true;
632630
}
@@ -638,10 +636,8 @@ bool G4_Kernel::updateKernelToSmallerGRF() {
638636
if (numRegTotal == grfMode.getMinGRF())
639637
return false;
640638

641-
numRegTotal = grfMode.getSmallerGRF();
642-
643639
// Scale number of GRFs, Acc, SWSB tokens.
644-
setKernelParameters();
640+
setKernelParameters(grfMode.getSmallerGRF());
645641
fg.builder->rebuildPhyRegPool(getNumRegTotal());
646642
return true;
647643
}
@@ -656,10 +652,8 @@ void G4_Kernel::updateKernelByRegPressure(unsigned regPressure) {
656652
if (newGRF == numRegTotal)
657653
return;
658654

659-
numRegTotal = newGRF;
660-
661655
// Scale number of threads, Acc, SWSB tokens.
662-
setKernelParameters();
656+
setKernelParameters(newGRF);
663657

664658
// Update physical register pool
665659
fg.builder->rebuildPhyRegPool(getNumRegTotal());
@@ -676,10 +670,9 @@ bool G4_Kernel::updateKernelFromNumGRFAttr() {
676670
if (numRegTotal == attrNumGRF)
677671
return true;
678672

679-
numRegTotal = attrNumGRF;
680673
regSharingHeuristics = false;
681674
// Scale number of GRFs, Acc, SWSB tokens.
682-
setKernelParameters();
675+
setKernelParameters(attrNumGRF);
683676
fg.builder->rebuildPhyRegPool(getNumRegTotal());
684677
return true;
685678
}
@@ -950,7 +943,7 @@ unsigned G4_Kernel::getLargestInputRegister() {
950943
return regNum;
951944
}
952945

953-
void G4_Kernel::setKernelParameters() {
946+
void G4_Kernel::setKernelParameters(unsigned newGRF) {
954947
unsigned overrideGRFNum = 0, overrideNumThreads = 0, overrideNumSWSB = 0,
955948
overrideNumAcc = 0;
956949

@@ -961,27 +954,31 @@ void G4_Kernel::setKernelParameters() {
961954

962955
//
963956
// Number of threads/GRF can currently be set by:
964-
// 1.- IGC flag (reg key)
965-
// 2.- Compiler option entered by user for
957+
// 1.- Per kernel attribute
958+
// 2.- IGC flag (reg key)
959+
// 3.- Compiler option entered by user for
966960
// 2.1 entire module
967961
// 2.2 kernel function
968-
// 3.- Per kernel attribute
969962
// 4.- Compiler heuristics
970963
//
971-
// 1 and 2 are set via vISA option; 3 via kernel attribute.
964+
// 1 is set via kernel attribute. 2 and 3 via vISA option.
972965
// If none of them are set, compiler selects the best option (4).
973966
//
974967

975-
if (overrideNumThreads > 0) {
968+
if (newGRF > 0) {
969+
// per kernel attribute or GRF change during compilation
970+
grfMode.setModeByNumGRFs(newGRF);
971+
overrideGRFNum = 0;
972+
} else if (overrideNumThreads > 0) {
973+
// per kernel/module number of threads
976974
grfMode.setModeByNumThreads(overrideNumThreads);
977975
overrideGRFNum = 0;
978976
} else if (overrideGRFNum != grfMode.getDefaultGRF()) {
977+
// per kernel/module number of GRFs
979978
grfMode.setModeByNumGRFs(overrideGRFNum);
980979
} else {
981-
// GRFMode is set to default mode when kernel is created
982-
// During compilation GRFMode may change by updating numRegTotal
983-
if (numRegTotal > 0)
984-
grfMode.setModeByNumGRFs(numRegTotal);
980+
// Use default value
981+
grfMode.setDefaultGRF();
985982
overrideGRFNum = 0;
986983
}
987984

visa/G4_Kernel.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ class GRFMode {
155155
return configs[configs.size() - 1].numGRF;
156156
}
157157
unsigned getDefaultGRF() const { return configs[defaultMode].numGRF; }
158+
void setDefaultGRF() { currentMode = defaultMode; }
158159
unsigned getLargerGRF() const {
159160
return currentMode + 1 < configs.size() ? configs[currentMode + 1].numGRF
160161
: configs[currentMode].numGRF;
@@ -768,7 +769,7 @@ class G4_Kernel {
768769
G4_BB *getNextBB(G4_BB *bb) const;
769770
unsigned getBinOffsetOfBB(G4_BB *bb) const;
770771

771-
void setKernelParameters();
772+
void setKernelParameters(unsigned newGRF = 0);
772773

773774
void dumpDotFileInternal(const std::string &baseName);
774775
void dumpG4Internal(const std::string &baseName);

0 commit comments

Comments
 (0)