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

difference between cut_smart and cut_conservative #80

Open
libing4752 opened this issue Mar 2, 2021 · 7 comments
Open

difference between cut_smart and cut_conservative #80

libing4752 opened this issue Mar 2, 2021 · 7 comments

Comments

@libing4752
Copy link

Hello,

I'm just reading the code of pluto, and find that seems no difference between "cut_smart" and "cut_conservative", the code is as follows:
image
image

do somebody have some suggestion on some "smart" cut_smart strategys?

thanks very much

@bondhugula
Copy link
Owner

Sorry, this code is poorly documented. I'm going to commit a patch soon to clean this up. But most of these methods are different. Note the additional conditional inside the last nest in the case of cut_smart. There is an extra check for the transformations being "full" as well, but that's less important.

@bondhugula
Copy link
Owner

Done - dae26e7

@libing4752
Copy link
Author

ops, thanks very much, I just misreaded that.
There exists a "return" in line 657 in "cut_conservative" functoin, but no "return" in the "cut_smart" function in the same place. I ju

@libing4752
Copy link
Author

btw, could you recommend have some other cut_smart strategies or related works to read?

@bondhugula
Copy link
Owner

btw, could you recommend have some other cut_smart strategies or related works to read?

cut_smart is really not a principled, but an adhoc approach. There are other fusion approaches in Pluto (typed_fuse) and a newer one that doesn't use such cutting or ILP: @aravindacharya can point you to the right cmdline options and branch.

@aravindacharya
Copy link
Collaborator

aravindacharya commented Mar 2, 2021

Pluto has two other heuristics namely typedfuse and hybridfuse. These heuristics require Pluto to be built with glpk (or gurobi) solver, as these heuristics use LP formulations instead of ILPs. This can be done by passing --enable-glpk flag to configure while building Pluto. Then, --typedfuse and --hybridfuse options enable typed fusion and hybrid fusion heuristics respectively. These options are available in the master branch. Details of these fusion heuristics are available in this paper. The right command line flags to use with hybridfuse or typed fuse is --lpcolor and --delayedcut. These flags should have been enabled by default with typed and hybrid fusion heuristics. Also the name lpcolor is poorly chosen. I should have renamed it to greedycolor in the first place. This option enables the greedy coloring huristic mentioned in the above paper.

@libing4752
Copy link
Author

thanks so much for the patient answer, I will read the paper and try some test as the way you said.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants