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

Anton Shterenlikht mexas at bris.ac.uk
Tue Sep 22 11:11:23 EDT 2015


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
>>
>


More information about the ParaView mailing list