Hei, the code I attached to the original mail should work out of the box, but requires armadillo and PETSc to compile/run. Armadillo stores the data in column-major order, and therefore I am transposing the matrices before and after transferring using .st().
Thank you for your help! Regards, Roland Am 05.01.21 um 15:21 schrieb Matthew Knepley: > On Tue, Jan 5, 2021 at 7:57 AM Roland Richter <[email protected] > <mailto:[email protected]>> wrote: > > Hei, > > I would like to scale a given matrix with a fixed scalar value, and > therefore would like to use MatScale(). Nevertheless, I observed an > interesting behavior depending on the size of the matrix, and > currently > I am not sure why. > > When running the attached code, I intend to divide all elements in the > matrix by a constant factor of 10. If I have three or fewer rows and > 1024 columns, I get the expected result. If I have four or more rows > (with the same number of columns), suddenly my scaling factor seems to > be 0.01 instead of 0.1 for the PETSc-matrix. The armadillo-based > matrix > still behaves as expected. > > > 1) It looks like you assume the storage in your armadillo matrix is > row major. I would be surprised if this was true. > > 2) I think it is unlikely that there is a problem with MatScale, so I > would guess either you have a memory overwrite > or are misinterpreting your output. If you send something I can run, I > will figure out which it is. > > Thanks, > > Matt > > > I currently do not understand that behavior, but do not see any > problems > with the code either. Are there any possible explanations for that > behavior? > > Thank you very much, > > regards, > > Roland Richter > > > > -- > What most experimenters take for granted before they begin their > experiments is infinitely more interesting than any results to which > their experiments lead. > -- Norbert Wiener > > https://www.cse.buffalo.edu/~knepley/ > <http://www.cse.buffalo.edu/~knepley/>
