15c6c1daeSBarry Smith 207475bc1SBarry Smith #include <petsc-private/viewerimpl.h> /*I "petscsys.h" */ 338dc1537SBarry Smith #include <petscviewerams.h> 45c6c1daeSBarry Smith 55c6c1daeSBarry Smith #undef __FUNCT__ 65c6c1daeSBarry Smith #define __FUNCT__ "PetscViewerAMSOpen" 75c6c1daeSBarry Smith /*@C 85c6c1daeSBarry Smith PetscViewerAMSOpen - Opens an AMS memory snooper PetscViewer. 95c6c1daeSBarry Smith 105c6c1daeSBarry Smith Collective on MPI_Comm 115c6c1daeSBarry Smith 125c6c1daeSBarry Smith Input Parameters: 135c6c1daeSBarry Smith + comm - the MPI communicator 145c6c1daeSBarry Smith - name - name of AMS communicator being created 155c6c1daeSBarry Smith 165c6c1daeSBarry Smith Output Parameter: 175c6c1daeSBarry Smith . lab - the PetscViewer 185c6c1daeSBarry Smith 195c6c1daeSBarry Smith Options Database Keys: 205c6c1daeSBarry Smith + -ams_port <port number> - port number where you are running AMS client 215c6c1daeSBarry Smith . -ams_publish_objects - publish all PETSc objects to be visible to the AMS memory snooper, 225c6c1daeSBarry Smith use PetscObjectAMSPublish() to publish individual objects 235c6c1daeSBarry Smith - -ams_java - open JAVA AMS client 245c6c1daeSBarry Smith 255c6c1daeSBarry Smith Level: advanced 265c6c1daeSBarry Smith 275c6c1daeSBarry Smith Fortran Note: 285c6c1daeSBarry Smith This routine is not supported in Fortran. 295c6c1daeSBarry Smith 305c6c1daeSBarry Smith See the matlab/petsc directory in the AMS installation for one example of external 315c6c1daeSBarry Smith tools that can monitor PETSc objects that have been published. 325c6c1daeSBarry Smith 335c6c1daeSBarry Smith Notes: 345c6c1daeSBarry Smith This PetscViewer can be destroyed with PetscViewerDestroy(). 355c6c1daeSBarry Smith 3638dc1537SBarry Smith This viewer is currently different than other viewers in that you cannot pass this viewer to XXXView() to view the XXX object. 3738dc1537SBarry Smith PETSC_VIEWER_AMS_() is used by PetscObjectAMSPublish() to connect to that particular AMS communicator. 3838dc1537SBarry Smith 395c6c1daeSBarry Smith Information about the AMS is available via http://www.mcs.anl.gov/ams. 405c6c1daeSBarry Smith 415c6c1daeSBarry Smith Concepts: AMS 425c6c1daeSBarry Smith Concepts: ALICE Memory Snooper 435c6c1daeSBarry Smith Concepts: Asynchronous Memory Snooper 445c6c1daeSBarry Smith 4538dc1537SBarry Smith .seealso: PetscObjectAMSPublish(), PetscViewerDestroy(), PetscViewerStringSPrintf(), PETSC_VIEWER_AMS_(), 4638dc1537SBarry Smith PetscObjectAMSPublish(), PetscObjectAMSUnPublish(), PetscObjectAMSTakeAccess(), PetscObjectAMSGrantAccess() 475c6c1daeSBarry Smith 485c6c1daeSBarry Smith @*/ 495c6c1daeSBarry Smith PetscErrorCode PetscViewerAMSOpen(MPI_Comm comm,const char name[],PetscViewer *lab) 505c6c1daeSBarry Smith { 515c6c1daeSBarry Smith PetscErrorCode ierr; 525c6c1daeSBarry Smith 535c6c1daeSBarry Smith PetscFunctionBegin; 545c6c1daeSBarry Smith ierr = PetscViewerCreate(comm,lab);CHKERRQ(ierr); 555c6c1daeSBarry Smith ierr = PetscViewerSetType(*lab,PETSCVIEWERAMS);CHKERRQ(ierr); 565c6c1daeSBarry Smith ierr = PetscViewerAMSSetCommName(*lab,name);CHKERRQ(ierr); 575c6c1daeSBarry Smith PetscFunctionReturn(0); 585c6c1daeSBarry Smith } 59*bfb97211SBarry Smith 60*bfb97211SBarry Smith #undef __FUNCT__ 61*bfb97211SBarry Smith #define __FUNCT__ "PetscObjectViewAMS" 62*bfb97211SBarry Smith /*@C 63*bfb97211SBarry Smith PetscObjectViewAMS - View the base portion of any object with an AMS viewer 64*bfb97211SBarry Smith 65*bfb97211SBarry Smith Collective on PetscObject 66*bfb97211SBarry Smith 67*bfb97211SBarry Smith Input Parameters: 68*bfb97211SBarry Smith + obj - the Petsc variable 69*bfb97211SBarry Smith Thus must be cast with a (PetscObject), for example, 70*bfb97211SBarry Smith PetscObjectSetName((PetscObject)mat,name); 71*bfb97211SBarry Smith - viewer - the AMS viewer 72*bfb97211SBarry Smith 73*bfb97211SBarry Smith Level: advanced 74*bfb97211SBarry Smith 75*bfb97211SBarry Smith Concepts: publishing object 76*bfb97211SBarry Smith 77*bfb97211SBarry Smith .seealso: PetscObjectSetName(), PetscObjectAMSUnPublish() 78*bfb97211SBarry Smith 79*bfb97211SBarry Smith @*/ 80*bfb97211SBarry Smith PetscErrorCode PetscObjectViewAMS(PetscObject obj,PetscViewer viewer) 81*bfb97211SBarry Smith { 82*bfb97211SBarry Smith PetscErrorCode ierr; 83*bfb97211SBarry Smith AMS_Memory amem; 84*bfb97211SBarry Smith AMS_Comm acomm; 85*bfb97211SBarry Smith 86*bfb97211SBarry Smith PetscFunctionBegin; 87*bfb97211SBarry Smith PetscValidHeader(obj,1); 88*bfb97211SBarry Smith if (obj->classid == PETSC_VIEWER_CLASSID) PetscFunctionReturn(0); 89*bfb97211SBarry Smith if (obj->amsmem != -1) PetscFunctionReturn(0); 90*bfb97211SBarry Smith ierr = PetscObjectName(obj);CHKERRQ(ierr); 91*bfb97211SBarry Smith 92*bfb97211SBarry Smith ierr = PetscViewerAMSGetAMSComm(viewer,&acomm);CHKERRQ(ierr); 93*bfb97211SBarry Smith ierr = AMS_Memory_create(acomm,obj->name,&amem);CHKERRQ(ierr); 94*bfb97211SBarry Smith obj->amsmem = (int)amem; 95*bfb97211SBarry Smith 96*bfb97211SBarry Smith ierr = AMS_Memory_take_access(amem);CHKERRQ(ierr); 97*bfb97211SBarry Smith ierr = AMS_Memory_add_field(amem,"Class",&obj->class_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 98*bfb97211SBarry Smith ierr = AMS_Memory_add_field(amem,"Type",&obj->type_name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 99*bfb97211SBarry Smith ierr = AMS_Memory_add_field(amem,"Id",&obj->id,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 100*bfb97211SBarry Smith ierr = AMS_Memory_add_field(amem,"ParentId",&obj->parentid,1,AMS_INT,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 101*bfb97211SBarry Smith ierr = AMS_Memory_add_field(amem,"Name",&obj->name,1,AMS_STRING,AMS_READ,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 102*bfb97211SBarry Smith ierr = AMS_Memory_add_field(amem,"Block",&obj->amspublishblock,1,AMS_BOOLEAN,AMS_WRITE,AMS_COMMON,AMS_REDUCT_UNDEF);CHKERRQ(ierr); 103*bfb97211SBarry Smith ierr = AMS_Memory_publish(amem);CHKERRQ(ierr); 104*bfb97211SBarry Smith ierr = AMS_Memory_grant_access(amem);CHKERRQ(ierr); 105*bfb97211SBarry Smith PetscFunctionReturn(0); 106*bfb97211SBarry Smith } 107