[petsc-dev] making DA more light weight
Jed Brown
jed at jedbrown.org
Thu May 15 14:27:58 CDT 2014
Barry Smith <bsmith at mcs.anl.gov> writes:
> Hmm, this is the sequential case where no optimization was done for
> block indices (adding additional code to handle the blocks would
> not be that difficult). In the parallel case if the indices are
> block then ISGetIndices() is not suppose to ever be used (is it?)
> instead only ISBlockGetIndices() is used.
>
> Can this plot be produced for the parallel case?
$ PETSC_ARCH=mpich-opt mpirun.hydra -n 1 python2 -m memory_profiler ketch-dmda.py 128 3 1 : -n 1 python2 ketch-dmda.py 128 3 1
Filename: ketch-dmda.py
Line # Mem usage Increment Line Contents
================================================
11 23.336 MiB 0.000 MiB @profile
12 def foo(size=128,ndim=3,dof=1):
13 51.688 MiB 28.352 MiB da = PETSc.DA().create(sizes=[size]*ndim,dof=dof)
14 59.711 MiB 8.023 MiB q1 = da.createGlobalVec()
15 67.715 MiB 8.004 MiB q2 = da.createGlobalVec()
16 75.719 MiB 8.004 MiB q3 = da.createGlobalVec()
$ PETSC_ARCH=mpich-opt mpirun.hydra -n 1 python2 -m memory_profiler ketch-dmda.py 128 3 10 : -n 1 python2 ketch-dmda.py 128 3 10
Filename: ketch-dmda.py
Line # Mem usage Increment Line Contents
================================================
11 23.336 MiB 0.000 MiB @profile
12 def foo(size=128,ndim=3,dof=1):
13 235.711 MiB 212.375 MiB da = PETSc.DA().create(sizes=[size]*ndim,dof=dof)
14 315.734 MiB 80.023 MiB q1 = da.createGlobalVec()
15 395.738 MiB 80.004 MiB q2 = da.createGlobalVec()
16 475.742 MiB 80.004 MiB q3 = da.createGlobalVec()
So creating the DMDA still costs 2.5x as much as a Vec. See here for
the massif-visualizer plot:
http://59A2.org/files/dmda-memory-p2.png
$ PETSC_ARCH=mpich-opt mpirun.hydra -n 1 valgrind --tool=massif python2 ketch-dmda.py 128 3 10 : -n 1 python2 ketch-dmda.py 128 3 10
==3243== Massif, a heap profiler
==3243== Copyright (C) 2003-2013, and GNU GPL'd, by Nicholas Nethercote
==3243== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
==3243== Command: python2 ketch-dmda.py 128 3 10
==3243==
==3243==
Note that ISGetIndices is still called in the parallel case.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ketch-dmda.py
Type: text/x-python
Size: 421 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20140515/afa996ee/attachment.py>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20140515/afa996ee/attachment.sig>
More information about the petsc-dev
mailing list