-
Notifications
You must be signed in to change notification settings - Fork 427
[Place] Estimating Starting T Using Equilibrium T #3271
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
base: master
Are you sure you want to change the base?
[Place] Estimating Starting T Using Equilibrium T #3271
Conversation
I found that the way that the annealer estimates the initial temperature to be too high when the initial placement is of very good quality (for example, after AP). Added a new way of estimating the starting temperature by setting it to an estimation of the equilibrium temperature. The equilibrium temperature is the temperature at which the change in cost after an annealing iteration would be 0. The old way (of using the variance of the change in cost) is still the default; however, this new method can be turned on in the command-line.
…ibrium-init-t-est
Results on Titan (titan quick qor). Baseline is using the original cost variance approach (current default), the other is using my new equilibrium option (only one command-line change):
Overall, it looks like these changes improved place time by over 15% and improved CPD by 1%, at the expense of 1% wirelength! That's a very good tradeoff in my opinion! I predict AP would only be better! Raw results: Looking at direct_rf: We can see that this new equilibrium approach is achieving its goal of not setting the temperature too high. @vaughnbetz What do you think? I think we should not make this default yet; but this at least demonstrates the value of this approach. |
Definitely looks promising! |
@soheilshahrouz was curious if the gains we are seeing is just due to this new estimator always scaling down the initial temperature; so we could get the same results by just scaling down the initial temperature. To counter that point, I got the initial temperatures for each circuit for each estimator:
We can see that although, on average, the temperature was reduced by 4x, the ratio for most circuits is not near the average, with some circuits being 10x reduced, and some being 2x reduced. This demonstrates that this new approach is adapting based on the circuit's initial placement. One big bonus of this new flow is that it does not have any magic scaling factors, which will make it more automatic (so we do not need to keep readjusting it using new scaling factors). |
For @AmirhosseinPoolad , I ran VTR Master to see if there is any run time degredation due to this approach:
It looks like machine load hides the results some. But if we compare the change in pack time to the change in place time, we see that the run time does not increase by a noticeable amount due to this change. |
I found that the way that the annealer estimates the initial temperature to be too high when the initial placement is of very good quality (for example, after AP).
Added a new way of estimating the starting temperature by setting it to an estimation of the equilibrium temperature. The equilibrium temperature is the temperature at which the change in cost after an annealing iteration would be 0.
The old way (of using the variance of the change in cost) is still the default; however, this new method can be turned on in the command-line.