Closed tgmattso closed 2 years ago
The statement cannot be true of inputs. Inputs may also be left modified if an execution error occurs.
Suppose an input matrix A for GrB_mxm has pending work, and I must complete (wait on) the work to finish before computing C=A*B. While computing A, I run out of memory, but I've already partially modified A to compute its new value. I cannot return to the unmodified value of A, so I just clear it of all entries in this case.
So I would state instead:
If a GraphBLAS method returns with any execution error, then any input or output arguments may be left in an invalid state, and their use downstream in the program flow may cause additional errors.
Yes, I mean line 789. I actually agree with Tim on this one. If there is an execution error, all bets are off
If we don't do this, then the implementor has to do operations into separate storage and copy into final destinations only after the operations are done and gauranteed to be free of errors
We are going to defer any changes pertaining to this issue. Basically, the text as is covers what we need. We agree that we can be a bit more relaxed than the current text allows, but making the needed changes for such relaxation is more than we have time for now. We'll pick this up for 2.1
I think the statement in question is true. We need to look it over and make a final call