Skip to content

Commit eec8392

Browse files
committed
gpl: incremental new messages,
report the number of identified placed and unplaced instances, which influences incremental gpl behavior Signed-off-by: Augusto Berndt <[email protected]>
1 parent a43c6df commit eec8392

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

src/gpl/src/initialPlace.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ void InitialPlace::doBicgstabPlace(int threads)
9393

9494
if (std::isnan(error.x) || std::isnan(error.y)) {
9595
log_->warn(utl::GPL,
96-
154,
96+
325,
9797
"Conjugate gradient initial placement solver failed at "
9898
"iteration {}. ",
9999
iter);

src/gpl/src/replace.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,32 +133,37 @@ void Replace::doIncrementalPlace(int threads)
133133
}
134134

135135
// Lock down already placed objects
136-
int locked_cnt = 0;
136+
int placed_cnt = 0;
137137
int unplaced_cnt = 0;
138138
auto block = db_->getChip()->getBlock();
139139
for (auto inst : block->getInsts()) {
140140
auto status = inst->getPlacementStatus();
141141
if (status == odb::dbPlacementStatus::PLACED) {
142142
pbc_->dbToPb(inst)->lock();
143-
++locked_cnt;
143+
++placed_cnt;
144144
} else if (!status.isPlaced()) {
145145
++unplaced_cnt;
146146
}
147147
}
148148

149+
log_->info(GPL, 154, "Identified {} placed instances", placed_cnt);
150+
log_->info(GPL, 155, "Identified {} not placed instances", unplaced_cnt);
151+
149152
if (unplaced_cnt == 0) {
150153
// Everything was already placed so we do the old incremental mode
151154
// which just skips initial placement and runs nesterov.
155+
log_->info(GPL,
156+
156,
157+
"Identified all instances as placed. Unlocking all instances "
158+
"and running nesterov from scratch.");
152159
for (auto& pb : pbVec_) {
153160
pb->unlockAll();
154161
}
155-
// pbc_->unlockAll();
162+
156163
doNesterovPlace(threads);
157164
return;
158165
}
159166

160-
log_->info(GPL, 132, "Locked {} instances", locked_cnt);
161-
162167
// Roughly place the unplaced objects (allow more overflow).
163168
// Limit iterations to prevent objects drifting too far or
164169
// non-convergence.
@@ -174,7 +179,7 @@ void Replace::doIncrementalPlace(int threads)
174179
setNesterovPlaceMaxIter(previous_max_iter);
175180

176181
// Finish the overflow resolution from the rough placement
177-
log_->info(GPL, 133, "Unlocked instances");
182+
log_->info(GPL, 133, "Unlocking all instances");
178183
for (auto& pb : pbVec_) {
179184
pb->unlockAll();
180185
}
@@ -422,6 +427,7 @@ void Replace::setInitialPlaceNetWeightScale(float scale)
422427

423428
void Replace::setNesterovPlaceMaxIter(int iter)
424429
{
430+
log_->info(GPL, 158, "Setting nesterov max iterations to {}", iter);
425431
nesterovPlaceMaxIter_ = iter;
426432
if (np_) {
427433
np_->setMaxIters(iter);
@@ -436,6 +442,7 @@ void Replace::setBinGridCnt(int binGridCntX, int binGridCntY)
436442

437443
void Replace::setTargetOverflow(float overflow)
438444
{
445+
log_->info(GPL, 157, "Setting target overflow to {}", overflow);
439446
overflow_ = overflow;
440447
if (np_) {
441448
np_->setTargetOverflow(overflow);

0 commit comments

Comments
 (0)