[petsc-dev] printing the matrix name via -mat_view_info

Barry Smith bsmith at mcs.anl.gov
Thu Sep 30 14:43:21 CDT 2010


  Currently each individual matrix type (seqaij, mpiaij, ....) provides its own code to print out in ASCII (some provide several codes depending on viewer format flag).

  You could add to (some,all?) of these specific codes a call to PetscObjectPrintClassNamePrefixType() to print that. For example, in MatView_SeqAIJ_ASCII()

  } else if (format == PETSC_VIEWER_ASCII_COMMON) {
    ierr = PetscViewerASCIIUseTabs(viewer,PETSC_NO);CHKERRQ(ierr);
    for (i=0; i<m; i++) {

change to 

  } else if (format == PETSC_VIEWER_ASCII_COMMON) {
    ierr = PetscViewerASCIIUseTabs(viewer,PETSC_NO);CHKERRQ(ierr);
    PetscObjectPrintClassNamePrefixType(....);
    for (i=0; i<m; i++) {


I think it is fine if you add this.

  Barry


On Sep 30, 2010, at 1:25 PM, Shri wrote:

> Can the object name be also displayed when the option -<object>_view is provided or <object>View() is called? Maybe only for matrices,vectors and DAs??
> 
> Instead of
> 
> row 0: (0, 4) 
> row 1: (1, 4) 
> row 2: (2, 4) 
> row 3: (3, 4) 
> row 4: (4, 4) 
> 
> It should display
> 
> Matrix Object : <matrix_name>
> row 0: (0, 4) 
> row 1: (1, 4) 
> row 2: (2, 4) 
> row 3: (3, 4) 
> row 4: (4, 4) 
> 
> Shri
> ----- Barry Smith <bsmith at mcs.anl.gov> wrote:
>> 
>>  I have added PetscObjectPrintClassNamePrefixType() which is now (in theory) used uniformly in all the XXXView ASCII info formats to display this information appropriately. A nice improvement, eliminated lots of duplicate code and makes it easier to have uniform output.
>> 
>>  PetscObjects are NOT given names by default, you should call PetscObjectSetName() to give it a name.  In a small number of places when an object NEEDS a name, for example when it is saved to Matlab with that variable name then PetscObjectName() is called to generate a "unique" name.
>> 
>>   Thanks for the suggestion,
>> 
>>   Barry
>> 
>>> What does PetscObjectName() do??Generate a random name??
>> 
>> Currently it generates a name that looks like
>> 
>> classname_commid_number
>> 
>> where number is incremented sequentially.
>> 
>> I would lean towards always naming everything so that a unique
>> identifier is available.  Unfortunately, doing so would make all the
>> test output non-reproducible because the identifier (for generated
>> names) includes some run-dependent information (commid above).  Maybe
>> name everything, but have an option to turn it off?
>> 
>> 
>> On Sep 29, 2010, at 2:28 PM, Shri wrote:
>> 
>>> Is there a way to print the matrix name so that -mat_view_info prints it out.
>>> 
>>> Instead of
>>> 
>>> Matrix Object:
>>> type=mpiaij, rows=200, cols=200
>>> total: nonzeros=40000, allocated nonzeros=40000
>>> total number of mallocs used during MatSetVal
>>> 
>>> it should print
>>> 
>>> Matrix Object: <MATRIX_NAME>
>>> type=mpiaij, rows=200, cols=200
>>> total: nonzeros=40000, allocated nonzeros=40000
>>> total number of mallocs used during MatSetVal
>>> 
>>> It'll be nice to have the matrix name printed out cause sometimes it gets confusing when there are a lot of matrices you are working with. 
>>> Either the user can set a name and it could be printed out in mat_view_info or even better if in some way the variable name can be used directly.
>>> 
>>> What do you think?
>>> 
>>> Shri
>> 
> 




More information about the petsc-dev mailing list