[Paraview] 400GB dataset out of memory on 1k cores?

Berk Geveci berk.geveci at kitware.com
Tue Sep 22 14:07:21 EDT 2015


Hmmm. We are not exactly on the same wavelength :-) When you run a
threshold filter, you indeed get a volume with all the cells of a given
grain id. However, when you show it as a Surface (the default mode),
ParaView extracts the outer surface of that volume. Which ends up being
equivalent to showing all the interfaces between grains. To actually see
_all_ of the elements, you need volume rendering. Can you send me a small
dataset so I can demonstrate the difference in some pictures.

Best,
-berk

On Tue, Sep 22, 2015 at 11:11 AM, Anton Shterenlikht <mexas at bris.ac.uk>
wrote:

> Hi Berk,
>
> sorry for replying via online gmail, it will probably screw up the context.
> I deleted your mail by accident from mbox, so have to resort to this...
>
> Anyway, I haven't tried your script yet, but you are probably correct
> about the threshold.
> I have another script working on the same dataset (see below),
> which runs fine. That script only shows the surface.
>
> You ask "extract the interfaces between the grains, correct?"
> If I understand you right, then no.
> Please see here the expected image from a smaller dataset:
>  http://eis.bris.ac.uk/~mexas/cgpack/201509res/crgb.png
> I want to show all elements of the 3D array (dataset) with
> particular values in particular colours. In my case yellow
> for all cells (array elements) with value 0:
>
> cracks100.ThresholdRange = [ 0, 0 ]
> DataRepresentation3 = Show()
> DataRepresentation3.DiffuseColor = [1.0, 1.0, 0.0]
>
> green for all cells with value -1:
>
> cracks110.ThresholdRange = [ -1, -1 ]
> DataRepresentation4 = Show()
> DataRepresentation4.DiffuseColor = [0.0, 1.0, 0.5]
>
> and semi-transparent purple all cells with value 2:
>
> Threshold1 = Threshold()
> Threshold1.ThresholdRange = [ 2, 2 ]
> DataRepresentation2 = Show()
> DataRepresentation2.DiffuseColor = [ 1, 0, 1 ]
>
> And I'd like to show the cells not as individual points,
> but link adjacent cells into some sort of surface.
>
> I my case green and yellow are cracks on different crystallographic planes,
> and purple are grain boundaries.
>
> Many thanks for your help
>
> Anton
>
> ************************************
>
> The script that runs fine on the same 400GB dataset:
>
> ext1    = 4640       # data extent along 1
> ext2    = 4650        # data extent along 2
> ext3    = 4650       # data extent along 3
> infile  = "./large/1000/zg0.raw"   # input file name
> outfile = "g.png"   # output file name
> imsize1 = 1200         # size, in pixels, of the resulting image along 1
> imsize2 = 1200         # size, in pixels, of the resulting image along 2
> minval  = 1           # min colour value
> maxval  = 1.0e6       # max colour value, equal to the number of grains
>
> # End of adjustable parameters
> ######################################################################72
>
> # define the centre of rotation (cor)
> cor1 = 0.5 * ext1
> cor2 = 0.5 * ext2
> cor3 = 0.5 * ext3
>
> from paraview.simple import *
>
> reader=ImageReader(FilePrefix= infile )
> reader.DataExtent=[ 0, ext1-1, 0, ext2-1, 0, ext3-1 ]
> reader.DataByteOrder = 'LittleEndian'
> reader.DataScalarType = 'int'
>
> RenderView1 = GetRenderView()
> DataRepresentation1 = Show()
>
> dp = GetDisplayProperties(reader)
> dp.LookupTable = MakeBlueToRedLT(minval,maxval)
> dp.ColorAttributeType = 'POINT_DATA'
> dp.ColorArrayName = 'ImageFile'
> dp.Representation = "Surface"
>
> bar = CreateScalarBar(LookupTable=dp.LookupTable, Title="grain")
> bar.Position=[0.80,0.15]
> GetRenderView().Representations.append(bar)
>
> camera = GetActiveCamera()
> camera.SetViewUp(-1,0,0)
> camera.Azimuth(30)
> camera.Elevation(30)
>
> #camera.SetPosition(0,0,100)
> #camera.Roll(-90)
>
> RenderView1.ResetCamera()
> # make white background, for papers
> #RenderView1.Background = [ 1,1,1]
>
> # gradient background colour
> RenderView1.UseGradientBackground = 1
> RenderView1.Background2 = [0.0, 0.0, 0.16470588235294117]
> RenderView1.Background = [0.3215686274509804, 0.3411764705882353,
> 0.43137254901960786]
>
> RenderView1.CenterAxesVisibility = 0
> RenderView1.OrientationAxesVisibility = 1
> RenderView1.CenterOfRotation = [ cor1, cor2, cor3 ]
> RenderView1.ViewSize = [ imsize1, imsize2 ]
>
> WriteImage( outfile )
>
> Render()
>
>
> On 22/09/2015, Berk Geveci <berk.geveci at kitware.com> wrote:
> > Hi Anton,
> >
> > Let's debug this a big. I suspect that the thresholds are the issue here.
> > Does this script work?
> >
> > ext1    = 4640       # data extent along 1
> > ext2    = 4650       # data extent along 2
> > ext3    = 4650       # data extent along 3
> > ffile   = "./large/1000/zf5.raw" # fracture file
> > imsize1 = 1200         # size, in pixels, of the resulting image along 1
> > imsize2 = 1200         # size, in pixels, of the resulting image along 2
> >
> > cor1 = 0.5 * ext1
> > cor2 = 0.5 * ext2
> > cor3 = 0.5 * ext3
> >
> > from paraview.simple import *
> >
> > # the extents start from zero, so need to lower
> > # the upper extents by 1
> > cracks = ImageReader( FilePrefix= ffile )
> > cracks.DataExtent=[ 0, ext1-1, 0, ext2-1, 0, ext3-1 ]
> > cracks.DataByteOrder = 'LittleEndian'
> > cracks.DataScalarType = 'int'
> >
> > RenderView1 = GetRenderView()
> > DataRepresentation1 = Show()
> >
> > If this works, let's discuss how to avoid using Threshold but get the
> same
> > result. The issue with Threshold is that it creates a volume as an
> > unstructured grid, which is heavy-weight. For example, a ~40KB volume
> (one
> > float variable) turns into a ~800KB if I extract all of it as an
> > unstructured grid. It seems like all you need is to extract the
> interfaces
> > between the grains, correct?
> >
> > Best,
> > -berk
> >
> > On Mon, Sep 21, 2015 at 10:50 AM, Anton Shterenlikht <mexas at bris.ac.uk>
> > wrote:
> >
> >> >From mexas Mon Sep 21 14:29:16 2015
> >> >To: paraview at paraview.org
> >> >Subject: 400GB dataset out of memory on 1k cores?
> >> >Reply-To: mexas at bris.ac.uk
> >> >
> >> >I get OOM on a ~400GB raw dataset
> >> >that I process with a script below.
> >> >I use 24 core nodes with 64GB per node.
> >> >I tried using up to 1008 nodes.
> >>
> >> error... 1008 cores (42 nodes).
> >>
> >> Anton
> >> _______________________________________________
> >> Powered by www.kitware.com
> >>
> >> Visit other Kitware open-source projects at
> >> http://www.kitware.com/opensource/opensource.html
> >>
> >> Please keep messages on-topic and check the ParaView Wiki at:
> >> http://paraview.org/Wiki/ParaView
> >>
> >> Search the list archives at: http://markmail.org/search/?q=ParaView
> >>
> >> Follow this link to subscribe/unsubscribe:
> >> http://public.kitware.com/mailman/listinfo/paraview
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/paraview/attachments/20150922/fd7aa15a/attachment.html>


More information about the ParaView mailing list