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

Problems related to mismatching executors #110

Closed
gflegar opened this issue Aug 16, 2018 · 4 comments
Closed

Problems related to mismatching executors #110

gflegar opened this issue Aug 16, 2018 · 4 comments
Assignees
Labels
is:bug Something looks wrong. mod:core This is related to the core module.

Comments

@gflegar
Copy link
Member

gflegar commented Aug 16, 2018

Some operations on operators on Ginkgo assume that the executors of all arguments are the same. This does not have to be true, and with the addition of gko::make_temporary_clone helper can usually be solved easily.

BLAS-1 operations on dense matrices are an example of this problem.

@gflegar gflegar added is:bug Something looks wrong. mod:core This is related to the core module. labels Aug 16, 2018
@gflegar
Copy link
Member Author

gflegar commented Feb 12, 2019

@tcojean this is not needed for the 1.0.0 release? This can break Ginkgo in a very unpleasant way, without any hint to the user about what went wrong...

@tcojean
Copy link
Member

tcojean commented Feb 12, 2019

I agree it would be nice to have this. I will add it to the milestone, we should see who can take it.

@tcojean tcojean added this to the Ginkgo 1.0.0 release milestone Feb 12, 2019
@gflegar
Copy link
Member Author

gflegar commented Feb 12, 2019

It should be a very straightforward process (just needs a bit of time): someone should go through all of Ginkgo's public methods, and check the implementation of the ones that have a LinOp (or LinOp subclass) instance as a parameter. If the implementation calls a kernel and passes this parameter to it, without doing anything special to ensure that the executor the kernel is called on matches with the executor of the LinOp instance, instead of passing the original instance, a gko::temporary_clone of it (with the lifetime of the public method's implementation) should be passed instead.

@gflegar
Copy link
Member Author

gflegar commented Feb 12, 2019

Here is an example of correct executor consistency handling via temporary clones.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is:bug Something looks wrong. mod:core This is related to the core module.
Projects
None yet
Development

No branches or pull requests

3 participants