[petsc-users] [Fwd: Re: saving views as images]

Barry Smith bsmith at mcs.anl.gov
Tue Mar 10 11:35:14 CDT 2015


   You must call 

  call(PetscDrawSetSave(draw, "matrix", PETSC_FALSE));
  call(PetscDrawSetSaveFinalImage(draw, "matrix2"));

BEFORE you view the image.  PetscDrawSetSave() sets the flag to save future images; generally you could this immediately after you've done the PetscViewerDrawOpen


  Barry

  You don't need the flush. 
> On Mar 10, 2015, at 10:47 AM, Theler German Guillermo <gtheler at cites-gss.com> wrote:
> 
> 
> On Sat, 2015-03-07 at 15:51 -0600, Barry Smith wrote:
>> Did you follow the directions in the manual page for PetscDrawSetSave()? 
>> "Requires that PETSc be configured with the option --with-afterimage to save the images and ffmpeg must be in your path to make the movie"
> 
> Yes. For some reason configure does not find libAfterImage in Debian's
> default location, but it works if I provide both with-afterimage-lib and
> with-afterimage-include. Debian Jessie provides packages
> libafterimage-dev and libafterimage0, both marked as version 2.2.12-3.
> 
> gtheler at blinky:~/libs/petsc-3.5.3$ ./configure
> --with-afterimage-lib=/usr/lib/x86_64-linux-gnu/libAfterImage.so
> --with-afterimage-include=/usr/include/libAfterImage
> ===============================================================================
>             Configuring PETSc to compile on your
> system                       
> ===============================================================================
> TESTING: alternateConfigureLibrary from
> PETSc.packages.petsc4py(config/PETSc/packages/petsc4py.py:74)
> Compilers:
>  C Compiler:         mpicc  -fPIC -Wall -Wwrite-strings
> -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0 
>  C++ Compiler:       mpicxx  -Wall -Wwrite-strings -Wno-strict-aliasing
> -Wno-unknown-pragmas -g -O0   -fPIC  
>  Fortran Compiler:   mpif90  -fPIC -Wall -Wno-unused-variable
> -ffree-line-length-0 -Wno-unused-dummy-argument -g -O0  
> Linkers:
>  Shared linker:   mpicc  -shared  -fPIC -Wall -Wwrite-strings
> -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0
>  Dynamic linker:   mpicc  -shared  -fPIC -Wall -Wwrite-strings
> -Wno-strict-aliasing -Wno-unknown-pragmas -g3 -O0
> make:
> MPI:
>  Includes: -I/usr/include/mpich
> BLAS/LAPACK: -llapack -lblas
> cmake:
> X:
>  Library:  -lX11
> pthread:
>  Library:  -lpthread
> ssl:
>  Library:  -lssl -lcrypto
> afterimage:
>  Includes: -I/usr/include/libAfterImage
>  Library:  -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -lAfterImage
> valgrind:
>  Arch:     
> PETSc:
>  PETSC_ARCH: arch-linux2-c-debug
>  PETSC_DIR: /home/gtheler/libs/petsc-3.5.3
>  Clanguage: C
>  shared libraries: enabled
>  Scalar type: real
>  Precision: double
>  Memory alignment: 16
> xxx=========================================================================xxx
> Configure stage complete. Now build PETSc libraries with (gnumake
> build):
>   make PETSC_DIR=/home/gtheler/libs/petsc-3.5.3
> PETSC_ARCH=arch-linux2-c-debug all
> xxx=========================================================================xxx
> gtheler at blinky:~/libs/petsc-3.5.3$                      
> 
> 
> Now, consider the attached source file (based on
> mat/examples/tutorials/ex16.c). It does compile and gets linked to
> libAfterImage:
> 
> 
> 
> gtheler at blinky:~/codigos/mat2img$ make
> mpicc -c -o mat2img.o mat2img.c -Wall
> -I/home/gtheler/libs/petsc-3.5.3/include
> -I/home/gtheler/libs/petsc-3.5.3/arch-linux2-c-debug/include
> -I/usr/include/libAfterImage -I/usr/include/mpich
> mpicc -o mat2img mat2img.o
> -Wl,-rpath,/home/gtheler/libs/petsc-3.5.3/arch-linux2-c-debug/lib
> -L/home/gtheler/libs/petsc-3.5.3/arch-linux2-c-debug/lib  -lpetsc
> -llapack -lblas -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -lAfterImage -lX11 -lpthread -lssl -lcrypto
> -lm -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9
> -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -Wl,-rpath,/lib/x86_64-linux-gnu
> -L/lib/x86_64-linux-gnu -lmpichf90 -lgfortran -lm -lgfortran -lm
> -lquadmath -lm -lmpichcxx -lstdc++ -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9
> -L/usr/lib/gcc/x86_64-linux-gnu/4.9 -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu
> -L/lib/x86_64-linux-gnu -Wl,-rpath,/usr/lib/x86_64-linux-gnu
> -L/usr/lib/x86_64-linux-gnu -ldl -lmpich -lopa -lmpl -lrt -lcr -lpthread
> -lgcc_s -ldl  
> gtheler at blinky:~/codigos/mat2img$ ldd mat2img | grep After
>        libAfterImage.so.0
> => /usr/lib/x86_64-linux-gnu/libAfterImage.so.0 (0x00007f95bc4b7000)
>        libAfterBase.so.0 => /usr/lib/x86_64-linux-gnu/libAfterBase.so.0
> (0x00007f95b7ad4000)
> gtheler at blinky:~/codigos/mat2img$ 
> 
> 
> However, an empty directory called "test" is created when running the
> code:
> 
> gtheler at blinky:~/codigos/mat2img$ ./mat2img -info
> [0] PetscInitialize(): PETSc successfully started: number of processors
> = 1
> [0] PetscGetHostName(): Rejecting domainname, likely is NIS
> blinky.(none)
> [0] PetscInitialize(): Running on machine: blinky
> [0] PetscCommDuplicate(): Duplicating a communicator 1140850688
> -2080374784 max tags = 536870911
> [0] PetscGetFileStat(): System call stat() succeeded on file matrix.bin
> [0] PetscTestOwnership(): System call access() succeeded on file
> matrix.bin
> [0] PetscFileRetrieve(): Found file matrix.bin
> [0] PetscGetFileStat(): System call stat() failed on file
> matrix.bin.info
> [0] PetscFileRetrieve(): Did not find file matrix.bin.info
> [0] PetscCommDuplicate(): Using internal PETSc communicator 1140850688
> -2080374784
> [0] MatAssemblyEnd_SeqAIJ(): Matrix size: 20 X 20; storage space: 0
> unneeded,58 used
> [0] MatAssemblyEnd_SeqAIJ(): Number of mallocs during MatSetValues() is
> 0
> [0] MatAssemblyEnd_SeqAIJ(): Maximum nonzeros in any row is 3
> [0] MatCheckCompressedRow(): Found the ratio (num_zerorows
> 0)/(num_localrows 20) < 0.6. Do not use CompressedRow routines.
> [0] Mat_CheckInode(): Found 20 nodes out of 20 rows. Not using Inode
> routines
> [0] PetscCommDuplicate(): Using internal PETSc communicator 1140850688
> -2080374784
> [0] PetscDrawSetUpColormap_Shared(): Successfully allocated colors
> [0] PetscGetHostName(): Rejecting domainname, likely is NIS
> blinky.(none)
> [0] PetscPOpen(): Running command :rm -fr matrix matrix.m4v
> [0] PetscGetHostName(): Rejecting domainname, likely is NIS
> blinky.(none)
> [0] PetscPOpen(): Running command :mkdir matrix
> [0] PetscFinalize(): PetscFinalize() called
> gtheler at blinky:~/codigos/mat2img$ 
> 
> 
> 
> I cannot find out what I am missing.
> 
> 
> 
> 
>> So you have to install afterimage on your machine and then ./configure PETSc so it knows about it. If you have done all that and PETSc is being linked with the afterimage libraries then run your code with -info and send all the output; it may indicate why the images are not being saved.
>> 
>>  Barry
>> 
>> 
>>> On Mar 7, 2015, at 3:38 PM, Theler German Guillermo <gtheler at cites-gss.com> wrote:
>>> 
>>> Hi
>>> 
>>> Last week I asked how to dump a matrix structure into an image and Barry kindly pointed me out the  PetscDrawSetSave function. But I cannot figure out how to use it. So far, I can show my matrix structure into an X window with something like
>>> 
>>>   PetscViewerDrawOpen(PETSC_COMM_WORLD, PETSC_NULL, "R", 100, 100, size, size, &viewer);
>>>   MatView(milonga.R, viewer);
>>> 
>>> I tried with this snippet of code but had no luck:
>>> 
>>>   PetscViewerDrawOpen(PETSC_COMM_WORLD, PETSC_NULL, "R", 100, 100, size, size, &viewer);
>>>   MatView(milonga.R, viewer);
>>>   PetscViewerDrawGetDraw(viewer, 0, &draw);
>>>   PetscDrawFlush(draw);
>>>   PetscDrawSetSave(draw, "test.gif", PETSC_FALSE);
>>>   PetscDrawSetSaveFinalImage(draw, "test2.gif");
>>> 
>>> The result is that test.gif and test2.gif are created but they are empty directories.
>>> What am I missing?
>>> 
>>> --
>>> jeremy
>>> 
>>> ________________________________
>>> Imprima este mensaje sólo si es absolutamente necesario.
>>> Para imprimir, en lo posible utilice el papel de ambos lados.
>>> El Grupo Sancor Seguros se compromete con el cuidado del medioambiente.
>>> 
>>> 
>>> 
>>> ************AVISO DE CONFIDENCIALIDAD************
>>> 
>>> El Grupo Sancor Seguros comunica que:
>>> 
>>> Este mensaje y todos los archivos adjuntos a el son para uso exclusivo del destinatario y pueden contener información confidencial o propietaria, cuya divulgación es sancionada por ley. Si usted recibió este mensaje erróneamente, por favor notifíquenos respondiendo al remitente, borre el mensaje original y destruya las copias (impresas o grabadas en cualquier medio magnético) que pueda haber realizado del mismo. Todas las opiniones contenidas en este mail son propias del autor del mensaje. La publicación, uso, copia o impresión total o parcial de este mensaje o documentos adjuntos queda prohibida.
>>> 
>>> Disposición DNDP 10-2008. El titular de los datos personales tiene la facultad de ejercer el derecho de acceso a los mismos en forma gratuita a intervalos no inferiores a seis meses, salvo que acredite un interés legítimo al efecto conforme lo establecido en el artículo 14, inciso 3 de la Ley 25.326. La DIRECCIÓN NACIONAL DE PROTECCIÓN DE DATOS PERSONALES, Organo de Control de la Ley 25.326, tiene la atribución de atender las denuncias y reclamos que se interpongan con relación al incumplimiento de las normas sobre la protección de datos personales.
>> 
> <mat2img.c><makefile>



More information about the petsc-users mailing list