[petsc-dev] Branches with additional features
Barry Smith
bsmith at mcs.anl.gov
Tue May 30 13:32:18 CDT 2017
Yeah, you have a valid point we really need a MatCreateDense() and a MatCreateDenseWithArray() like we have for vectors.
If we simply had a null array to indicate don't allocate space then uses would ALWAYS need to allocate the space themselves and pass it in which is annoying because most of the time users want PETSc to allocate the array.
In your case can't you create the matrix with the "first" array from the other code and then after that use MatDensePlaceArray()? Then MatCreateDense() would not allocate any unneeded space.
Barry
> On May 30, 2017, at 3:46 AM, Pierre Jolivet <pierre.jolivet at enseeiht.fr> wrote:
>
> Thank you very much. One last thing: with VecCreateMPIWithArray, if I pass a NULL pointer for the array of values, then nothing is done and I need to use VecPlaceArray/VecResetArray.
> With MatCreateDense, if I pass a NULL pointer for the array of values, then PETSc allocates the memory. Why is there such a difference? Is there a way to create a dense matrix with no storage attached to it (that will of course be then set via MatDensePlaceArray/MatDenseResetArray)?
>
> Thanks,
> Pierre
>
> On Mon, 29 May 2017 19:45:27 -0500, Barry Smith wrote:
>> I have added MatDensePlaceArray() and MatDenseResetArray() in
>> https://bitbucket.org/petsc/petsc/branch/barry/feature-matdenseplacearray
>>
>> Barry
>>
>>> On May 29, 2017, at 3:46 PM, Pierre Jolivet <pierre.jolivet at enseeiht.fr> wrote:
>>>
>>>
>>>> On 29 May 2017, at 22:20, Jed Brown <jed at jedbrown.org> wrote:
>>>>
>>>>> That makes perfect sense (assuming I'm not wrong about the
>>>>> MatAssemblyBegin/MatAssemblyEnd). MatSetUpMultiply_MPIDense would still
>>>>> be called at each iteration but I doubt this is too costly.
>>>>
>>>> It creates a VecScatter so it isn't nothing (in terms of parallel
>>>> semantics), but I'd like to see profiling data before chasing this
>>>> around.
>>>
>>> Sure, I'll use that and will look out for any occurrence of "MatDensePlaceArray" (or stuff like that) in the logs, in case it is implemented.
>>> Thanks!
>
More information about the petsc-dev
mailing list