Skip to content
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

Templated Functions Slowing Search #194

Closed
IanBriggs opened this issue Aug 13, 2018 · 5 comments
Closed

Templated Functions Slowing Search #194

IanBriggs opened this issue Aug 13, 2018 · 5 comments
Assignees
Labels
documentation Involves touching documentation enhancement python Involves touching python code question

Comments

@IanBriggs
Copy link
Collaborator

When using FLiT bisect on a project that contains templated c++ functions the bisect search is slowed significantly if a templated function is a source of the difference. This is especially troublesome for templates that are based on integers, as there can easily be 30 instantiations of the templated function, all of which exhibit the difference. For each symbol, the search must start over which leads to a bloated runtime. Is this something that should be addressed?

If so, a possible mitigation to this problem would be to treat all template instantiations of a function as a single group, and if one function is marked then mark the whole group. This is a fast solution, but it does mean that those results are not verified.

A second approach would be to group the instantiations like above, but when a function is marked then test all members of the group without restarting the search. This would speed up the bisect search less, but it does retain the integrity of the reported bad symbols.

@IanBriggs IanBriggs added enhancement question python Involves touching python code labels Aug 13, 2018
@mikebentley15
Copy link
Collaborator

Thanks Ian for the well worded issue. I would vote for the second approach. Other opinions? If desired, we could add a flag for this, but I hesitate to add flag bloat to flit bisect in order to avoid making small decisions.

@IanBriggs
Copy link
Collaborator Author

I agree with avoiding flag bloat. If the runtime becomes a problem we can revisit the first idea later.

@mikebentley15 mikebentley15 added the documentation Involves touching documentation label Aug 15, 2018
@IanBriggs
Copy link
Collaborator Author

It seems that the best solution is to not include weak global symbols in the search space since we currently don't have a way to select which weak symbol is chosen.
(documenting conversation with @mikebentley15)

@IanBriggs IanBriggs self-assigned this Aug 16, 2018
@mikebentley15
Copy link
Collaborator

Agreed

@mikebentley15
Copy link
Collaborator

I think the only thing left for this issue is for it to be documented in the official documentation about bisect. It is probably sufficient to piggy-back on issue #136 to complete documentation of this fix.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Involves touching documentation enhancement python Involves touching python code question
Projects
None yet
Development

No branches or pull requests

2 participants