-
Notifications
You must be signed in to change notification settings - Fork 415
Manual Moves Timing #1795
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
Manual Moves Timing #1795
Conversation
…dow appear once it is toggled
…aluated if the input is valid by checking location contraints and if the block is found
As we discussed in the meeting today:
|
Also will need to avoid calling gtk code when graphics are off (--disp off) |
…l move flag. Timing is now similar to master branch
@PaulaPerdomo : you have a warning in your code which will have to be fixed (no warnings allowed by CI): You also have errors when graphics are disabled (-DNO_GRAPHICS compilation): We need the program to compile properly without graphics, and some may not have the necessary packages to compile the graphics. |
…o draw_debug.h file (to reduce warning as well)
…al_moves.cpp instead of move_utils
…r manual move generator file
This looks like it's getting there. Final testing:
Figure out why placement changes with graphics off on some Titan designs:
Other testing:
Please summarize all the test results here as you get them. |
…user selects manual move accidentally
@vaughnbetz @MohamedElgammal. Hello, I ran the gsm_switch_stratixiv architecture individually on the manual moves and master branch. The vpr.out file for both have the same placement. The temperature, Av cost, Av BB cost, Av TD cost and CPD is all the same. The difference is in the timing, where the manual move branch is slightly slower. I also compared the .place file and they were identical. From the parse_results.txt from both branch, the placed_CPD_est time is now the same, where before it increased by a factor of 0.16. I changed my code this morning when I was testing everything a user should/shouldn't do, in case they activate the manual move toggle button but then decide not to use it. I'm not entirely sure yet if this could have caused a big difference or how this code was running since it was --disp off. I will test another circuit that had different placed_CPD_est, and compare its results too. I attached the vpr.out file and .place files for both branches (in .txt format) : gsm_switch_stratixiv_arch_timing_place_mm.txt |
Thanks Paula. That's very good news. I suggest re-running all the Titan designs (you can use the regtest) and producing a spreadsheet to see if all the critical paths now line up (hopefully they do!). |
@@ -694,21 +743,23 @@ void toggle_routing_bounding_box(GtkWidget* /*widget*/, gint /*response_id*/, gp | |||
draw_state->show_routing_bb = new_value; | |||
|
|||
//redraw | |||
if ((int)(draw_state->show_routing_bb) == (int)((int)(route_ctx.route_bb.size()) - 1)) { | |||
if ((int)(draw_state->show_routing_bb) |
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.
There are so many formatting edits that split a line into multiple lines. You might be using an IDE and setting the text wrap option to a small values which causes all these edits.
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.
@PaulaPerdomo : you should get rid of the short lines in that case, and rely on
make format
to adjust the final format.
Or are the formatting changes due to make format (in which case they're fine, as we rely on make format everywhere).
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.
Thanks for getting this working. Please mention me when you add the full Titan results after the fix.
The code seems to be well organized. I have left some comments to be addressed. My main comment is that this PR includes many formatting changes to old code (not related to manual move) and some of them are actually making the code less readable. It seems that these edits were done automatically by an IDE.
Thanks for all the code updates @PaulaPerdomo . They look good. Pasting in some info from an email from Paula on the cpd results changing on the manual moves branch:I updated my code based on the code changes requested by Mohamed and you and are ready to be reviewed again. I also did the Manual moves documentation and the branch is called "documentation_manual_moves". Also, the QoR results between both branches is not the same for all placed_CPD_est. There are like 6 architectures where the results don't match with the master branch. I have gone through the code with gdb, checked for sanitizers leaks and I have not found any segmentation faults or memory leaks reported when doing so. I also changed the seed number, and the results are varied by very little when doing this. I don't know why there are changes to this number and they vary from the master branch by 1-2 seconds in some architectures. However, when I run a circuit individually (instead of the whole titan benchmarks), these results match the master branch which I found odd. According to the VPR output file, the changes in placement happen ever since the first move with the circuits that don't match their values with the master branch. |
This is almost ready to merge. @PaulaPerdomo if you can address the remaining comments (see above) we can merge this. |
@PaulaPerdomo : can you do a pull request on the documentation branch to get that in too? |
Everything passed except nightly tests 1, which might be hung (started just before midnight last night). Will wait until this evening and then restart kokoro if necessary. |
Thanks @PaulaPerdomo. I see the documentation and helper function are added. Anything more to do from a coding perspective to merge this? |
Thanks @PaulaPerdomo for working on this after the official end of your summer to get it in. Merging it! |
Implementing manual moves feature which allows a user to specify a move in placement. If the move is legal, blocks are swapped and shown on the architecture.
Related Issue
Motivation and Context
Optimizing the code to enable merge with master branch.
How Has This Been Tested?
Once the placement time was corrected, VPR output comparison were done between the master branch and the manual moves branch. This comparison shows the different outputs between the branches when --disp off: (These results are outdated) https://docs.google.com/spreadsheets/d/1PLCIUYsW7kX_kchS87_xRWioD9ZW5pa-36fpH6AoCaE/edit?usp=sharing.
vtr_reg_nightly1, 2, 3 were ran again and reported:
In the weekly meeting, these changes were not considered a problem.
The VTR and Titan Benchmarks were also ran and the GEOMEAN was calculated.
ManualMoves-Master Comparisons.xlsx
Types of changes
Checklist: