Feature/optimiser debugging improvements#2244
Open
KevinJW wants to merge 4 commits intoAcademySoftwareFoundation:mainfrom
Open
Feature/optimiser debugging improvements#2244KevinJW wants to merge 4 commits intoAcademySoftwareFoundation:mainfrom
KevinJW wants to merge 4 commits intoAcademySoftwareFoundation:mainfrom
Conversation
Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Add sstream to LogUtils.cpp which was previously being included by transitive dependency in Op.h Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
…stage Store the result of IsDebugLoggingEnabled() to avoid taking the internal mutex and to ensure either none or all the debugging will be output for the duration optimisation call. Avoid calling operator<< between character string literals which can be combined by the preprocessor Replace use of std::endl with "\n" Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Signed-off-by: Kevin Wheatley <kevin.wheatley@framestore.com>
Contributor
Author
|
Sample output |
Contributor
Author
|
And the result from the shader |
remia
approved these changes
Feb 10, 2026
Collaborator
|
From the sample log output you shared, my only comment would be that maybe we should add the current pass number ( |
doug-walker
approved these changes
Feb 12, 2026
Collaborator
doug-walker
left a comment
There was a problem hiding this comment.
I agree with Remi that it would be helpful to print the pass number.
| // Remove all ops for which isNoOp is true, including identity matrices. | ||
| int noops = optimizeIdentity ? RemoveNoOps(*this) : 0; | ||
| if (debugLoggingEnabled) | ||
| LogDebug(std::string("RemoveNoOps\n") + SerializeOpVec(*this, 4)); |
Collaborator
There was a problem hiding this comment.
The output is perhaps a bit difficult to read through since it's printing out the result at each step, even if there was no change. Each optimization function return 0 if no change was made, so for example, you could just print out the relevant items with (for this function):
if (noops > 0 && debugLoggingEnabled)
But I don't object to leaving it as is, if you find it more helpful.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a couple of changes related to improving the debug output of the optimiser.
Basically it outputs the results of each stage within the passes, that allows for better reasoning about what changes though the process, I've tried to ensure we don't suffer too much from the overhead from the extra logging during non-debug conditions.
I have not done any performance evaluation to confirm this so far.
As a side effect there is also a slight change to the includes to remove the dependency on pystring in the op/optimiser code.