MPI error: MPI_Type_create_subarray(124): Argument array_of_starts has value 120 but must be within [0, 116]
This issue was created automatically from an original Mantis Issue. Further discussion may take place here.
The following python script works with pvpython, but fails with pvbatch.
try: paraview.simple except: from paraview.simple import * paraview.simple._DisableFirstRenderCameraReset()
z_raw = ImageReader( FilePrefix='z.raw' )
z_raw.DataExtent = [1, 40, 1, 40, 1, 40] z_raw.DataByteOrder = 'LittleEndian' z_raw.DataScalarType = 'int'
RenderView1 = GetRenderView()
DataRepresentation1 = Show() DataRepresentation1.ScalarOpacityUnitDistance = 1.7320508075688776 DataRepresentation1.Representation = 'Outline' DataRepresentation1.EdgeColor = [0.0, 0.0, 0.5000076295109483]
RenderView1.CenterOfRotation = [19.5, 19.5, 19.5]
a1_ImageFile_PVLookupTable = GetLookupTableForArray( "ImageFile", 1, RGBPoints=[1.0, 0.0, 0.0, 0.0, 26.200000000000003, 0.9019607843137255, 0.0, 0.0, 51.400000000000006, 0.9019607843137255, 0.9019607843137255, 0.0, 64.0, 1.0, 1.0, 1.0], VectorMode='Magnitude', NanColor=[0.0, 0.4980392156862745, 1.0], NumberOfTableValues=64, ColorSpace='RGB', ScalarRangeInitialized=1.0 )
a1_ImageFile_PiecewiseFunction = CreatePiecewiseFunction()
ScalarBarWidgetRepresentation1 = CreateScalarBar( Title='Image', LabelFontSize=12, Enabled=1, LookupTable=a1_ImageFile_PVLookupTable, TitleFontSize=12 ) GetRenderView().Representations.append(ScalarBarWidgetRepresentation1)
RenderView1.CameraViewUp = [-0.8528543278199172, 0.017957183620535777, -0.5218400474046194] RenderView1.CameraPosition = [-43.07616287436094, 67.5962248918674, 123.42461126225268] RenderView1.CameraClippingRange = [65.37811338222085, 212.781995926041] RenderView1.CameraFocalPoint = [19.499999999999975, 19.49999999999995, 19.499999999999993] RenderView1.CameraParallelScale = 33.77499074759311 RenderView1.Background=[0.3, 0.3, 0.4] RenderView1.ViewSize=[800,800]
DataRepresentation1.Representation = 'Surface' DataRepresentation1.ScalarOpacityFunction = a1_ImageFile_PiecewiseFunction DataRepresentation1.ColorArrayName = 'ImageFile' DataRepresentation1.LookupTable = a1_ImageFile_PVLookupTable
WriteImage('z.png')
Render()
The computer is www.hector.ac.uk
The MPI used to run pvbatch is: xt-mpich2 - Cray MPICH2 Message Passing Interface
The data file is in raw binry format. It is a 40x40x40 array of 4byte integers, written with fortran 2003 "stream" qualifier. The file size is 40x40x40x4=256000 bytes. The compressed file (344 bytes) is at: http://seis.bris.ac.uk/~mexas/z.raw.xz
The PBS script:
#!/bin/bash --login #PBS -N pvbatch #PBS -l mppwidth=32 #PBS -l mppnppn=32 #PBS -l walltime=00:10:00 #PBS -j oe
export PBS_O_WORKDIR=$(readlink -f $PBS_O_WORKDIR) cd $PBS_O_WORKDIR export XDG_CONFIG_HOME=${HOME}/work/ParaViewIniConfig
module load paraview-servers/3.12.0
if [ -z ${PARAVIEW_SERVER_DIR} ] ; then echo "Error: PARAVIEW_SERVER_DIR not set. Exiting" exit 4 fi
echo "DEBUG: PBS_O_WORKDIR is" $PBS_O_WORKDIR echo "DEBUG: PARAVIEW_SERVER_DIR is" ${PARAVIEW_SERVER_DIR} echo "DEBUG: XDG_CONFIG_HOME is" ${XDG_CONFIG_HOME}
export MPPWIDTH=qstat -f $PBS_JOBID | awk '/mppwidth/ {print $3}'
export MPPNPPN=qstat -f $PBS_JOBID | awk '/mppnppn/ {print $3}'
aprun -n ${MPPWIDTH} -N ${MPPNPPN} ${PARAVIEW_SERVER_DIR}/bin/pvbatch
--use-offscreen-rendering
pv2.py
Error:
DEBUG: PBS_O_WORKDIR is /esfs2/e277/e277/mexas/cgca/branches/coarray/tests DEBUG: PARAVIEW_SERVER_DIR is /work/y07/y07/nag/ParaViewServers-3.12.0-Linux-x86_64 DEBUG: XDG_CONFIG_HOME is /work/e277/e277/mexas/ParaViewIniConfig
Generic Warning: In /work/z03/z03/markr/xe6il/pv_3.12.0/ParaView-3.12.0/VTK/Parallel/vtkMPICommunicator.cxx, line 72 MPI had an error
Invalid argument, error stack: MPI_Type_create_subarray(340): MPI_Type_create_subarray(ndims=3, array_of_sizes=0x7fffffff9f20, array_of_subsizes=0x7fffffff9f30, array_of_starts=0x7fffffff9f40, order=57, MPI_BYTE, newtype=0x7fffffff9f54) failed MPI_Type_create_subarray(124): Argument array_of_starts has value 120 but must be within [0,116]
Generic Warning: In /work/z03/z03/markr/xe6il/pv_3.12.0/ParaView-3.12.0/VTK/Parallel/vtkMPICommunicator.cxx, line 72 MPI had an error
Invalid argument, error stack: MPI_Type_create_subarray(340): MPI_Type_create_subarray(ndims=3, array_of_sizes=0x7fffffff9f20, array_of_subsizes=0x7fffffff9f30, array_of_starts=0x7fffffff9f40, order=57, MPI_BYTE, newtype=0x7fffffff9f54) failed MPI_Type_create_subarray(124): Argument array_of_starts has value 120 but must be within [0,116]
Generic Warning: In /work/z03/z03/markr/xe6il/pv_3.12.0/ParaView-3.12.0/VTK/Parallel/vtkMPICommunicator.cxx, line 72 MPI had an error
Invalid argument, error stack: MPI_Type_create_subarray(340): MPI_Type_create_subarray(ndims=3, array_of_sizes=0x7fffffff9f20, array_of_subsizes=0x7fffffff9f30, array_of_starts=0x7fffffff9f40, order=57, MPI_BYTE, newtype=0x7fffffff9f54) failed MPI_Type_create_subarray(124): Argument array_of_starts has value 30 but must be within [0,29]
and so on, from each MPI process.
I was told by the Hector support stuff that the problem might be in this snippet:
void vtkMPIImageReader::SetupFileView(vtkMPIOpaqueFileHandle &file, const int extent[6]) { int arrayOfSizes[3]; int arrayOfSubSizes[3]; int arrayOfStarts[3];
for (int i = 0; i < this->GetFileDimensionality(); i++) { arrayOfSizes[i] = this->DataExtent[i2+1] - this->DataExtent[i2] + 1; arrayOfSubSizes[i] = extent[i2+1] - extent[i2] + 1; arrayOfStarts[i] = extent[i*2]; } // Adjust for base size of data type and tuple size. int baseSize = this->GetDataScalarTypeSize() * this->NumberOfScalarComponents; arrayOfSizes[0] *= baseSize; arrayOfSubSizes[0] *= baseSize; arrayOfStarts[0] *= baseSize;
// Create a view in MPIIO. MPI_Datatype view; MPICall(MPI_Type_create_subarray(this->GetFileDimensionality(), arrayOfSizes, arrayOfSubSizes, arrayOfStarts, MPI_ORDER_FORTRAN, MPI_BYTE, &view)); MPICall(MPI_Type_commit(&view)); MPICall(MPI_File_set_view(file.Handle, this->GetHeaderSize(file), MPI_BYTE, view, const_cast<char *>("native"), MPI_INFO_NULL)); MPICall(MPI_Type_free(&view)); }