-
Notifications
You must be signed in to change notification settings - Fork 1
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
matmult fails on empty row #14
Comments
oops ... thanks for the report! hopefully I'll have some time to look into it in the next few days. |
Thank you for the quick response! Removing the pre-check now reveals another problem:
Looks like |
indeed ... that's a klunky idiom I sometimes used to create and empty pdl of a particular type ... looks like PDL core doesn't support type-conversion on Happily, it turns out that other changes to PDL core have made that klunkiness unnecessary. This case should work now in 6972a9f (current master). In general, I think you can expect more weirdness if your Let me know if this works for you & I can put out another release soon. |
Once again: Thank you very much! Just one thing I want you to know: |
We only have your word for that 🤔 (😉) Thank you @moocow-the-bovine for being so quick to sort stuff out with all your libraries! |
@jo-37 A new version is on CPAN with the fix. If that now works for you, do you feel like closing this? |
😆² fwiw, I didn't really suspect that you were ... and I do appreciate the minimal broken examples 🙂. There's always a chance something will "bottom out".
🤔 .... I think the CCS::Nd Also, for the
... you have to pre-allocate the output pdl |
I'd advocate adding some tests with Matrix Market sparse stuff, that is what it's for!
If |
yeah, more tests are definitely needed. I'm grateful that this issue provided a couple of very clear, ultra-specific tests for stuff with surprisingly far-reaching consequence. Three cheers for 3x3 matrices!
... that won't quite cut the butter here, I'm afraid. Among other reasons, because PDL::CCS is supposed to emulate PDL even with respect to "thread"-loops, broadcasting, etc. So we don't usually even know how many size-like-parameters (~ "logical dimensions") we need to be passing in. We could pass in a perl array (I know it's possible, but I don't remember the syntax) ... but then we'd have to deal with that in a painfully explicit and hard-to-generalize way. I'm currently thinking that it would make more sense to always pass a PDL of "logical" dimensions (~ CCS::Nd |
See |
it's late and my brain is full. the tough stuff (where I believei I've actually tested the threadloop-emulation) is the "usual suspects", i.e. binary operations like Maybe the easiest place to start thinking about this would be the ufuncs - [EDIT: the ufuncs have painful-to-read wrappers too: |
@moocow-the-bovine Thank you for pointing to these. I'll certainly give them a try! |
I'm only seeing one However, this isn't urgent, and tomorrow (etc) will do! |
Looks like |
yeah, I think that none of the |
@moocow-the-bovine Could you steer me to stuff I can look at to better understand the need for |
@mohawk2 I wish I could ... I spent some time going over the "usual suspects", but I can't see anywhere that's actually required (... except for laziness: I'm more comfortable expressing that logic in perl than in C). Suggestions:
|
Great! I'll be pleased to give help where I can. I'd suggest IRC as an additional channel for quicker Q&A, but here works too because it causes notifications on IRC. |
closing this issue as completed |
When
matmult
ing aPDL::CCS::Nd
matrix with a vector where all matrix rows corresponding to non-zero vector values are empty, this results in a runtime error:Can work around this with an ugly pre-check:
The text was updated successfully, but these errors were encountered: