We would like avoid allocating a huge array for the matrix and then having 
the user place on top of it. 

   In the new paradigm there could be options called on the resulting C of 
MatMatGetProduct() that would take effect before the C is fully formed to 
prevent the allocating and freeing for a huge array the same time as user array 
exists but with the current API we have for this release.



> On Sep 23, 2019, at 9:59 AM, Zhang, Hong <hzh...@mcs.anl.gov> wrote:
> 
> Yes, we should allow users to provide their own matrix array. 
> 
> We use MatDensePlaceArray() to plug an array into matrix C before 
> MatMatMult(). If we cannot do this, we will have to copy from the internal 
> array of the result C to our array.
> 
> Would the following sequence work?
> MatMatMultSymbolic()
> MatDensePlaceArray()
> MatMatMultNumeric()
> This seems a reasonable API, but it is not obvious to users when and where 
> MatDensePlaceArray() should be called.
> Currently, most users call  MatMatMult(A,B, reuse,&C) instead of 
> MatMatMultSymbolic/Numeric. 
> 
> We plan to add
> MatMatGetProduct(A,B,&C);
> Then,
> MatDensePlaceArray(C,array);
> 
> Hong

Reply via email to