30 long numberOfTilesToBuffer)
33 theNumberOfTilesToBuffer(numberOfTilesToBuffer),
37 theNumberOfProcessors = 1;
38 theNumberOfTilesToBuffer = ((theNumberOfTilesToBuffer>0)?theNumberOfTilesToBuffer:2);
42 MPI_Comm_rank(MPI_COMM_WORLD, &theRank);
43 MPI_Comm_size(MPI_COMM_WORLD, &theNumberOfProcessors);
49 theCurrentTileNumber = theRank -1;
53 theCurrentTileNumber = 0;
59 long numberOfTilesToBuffer)
62 theNumberOfTilesToBuffer(numberOfTilesToBuffer),
69 MPI_Comm_rank(MPI_COMM_WORLD, &
theRank);
142 long currentSendRequest = 0;
148 requests[i] = MPI_REQUEST_NULL;
153 ossimNotify(
ossimNotifyLevel_DEBUG) <<
"DEBUG ossimImageMpiSWriterSequenceConnection::slaveProcessTiles(): entering slave and will look at " << numberOfTiles <<
" tiles" << std::endl;
162 errorValue = MPI_Wait(&requests[currentSendRequest], MPI_STATUS_IGNORE);
163 requests[currentSendRequest] = MPI_REQUEST_NULL;
179 <<
"DEBUG ossimImageMpiSWriterSequenceConnection::slaveProcessTiles(): In salve = " 180 <<
theRank <<
" tile is empty" << std::endl;
191 <<
"DEBUG ossimImageMpiSWriterSequenceConnection::slaveProcessTiles(): In slave = " 192 <<
theRank <<
" ptr is null " << std::endl;
197 <<
"DEBUG ossimImageMpiSWriterSequenceConnection::slaveProcessTiles(): In slave = " <<
theRank <<
" tile is empty" << std::endl;
211 errorValue = MPI_Isend(buf,
217 &requests[currentSendRequest]);
223 errorValue = MPI_Isend(buf,
229 &requests[currentSendRequest]);
234 errorValue = MPI_Isend(buf,
240 &requests[currentSendRequest]);
245 errorValue = MPI_Isend(buf,
251 &requests[currentSendRequest]);
256 errorValue = MPI_Isend(buf,
262 &requests[currentSendRequest]);
267 errorValue = MPI_Isend(buf,
273 &requests[currentSendRequest]);
278 errorValue = MPI_Isend(buf,
284 &requests[currentSendRequest]);
290 errorValue = MPI_Isend(buf,
296 &requests[currentSendRequest]);
302 errorValue = MPI_Isend(buf,
308 &requests[currentSendRequest]);
317 currentSendRequest++;
325 errorValue = MPI_Wait(&requests[currentSendRequest], MPI_STATUS_IGNORE);
326 currentSendRequest++;
346 <<
"FATAL ossimImageMpiSWriterSequenceConnection::getNextTile(): " 347 <<
"should not be called" << std::endl;
virtual ossimRefPtr< ossimImageData > getTile(const ossimIrect &rect, ossim_uint32 resLevel=0)
virtual void setImageRectangle(const ossimIrect &rect)
virtual void setToStartOfSequence()
virtual void setToStartOfSequence()
ossim_int64 getNumberOfTiles() const
ossimScalarType getScalarType(const H5::DataSet *dataset)
virtual ossimDataObjectStatus getDataObjectStatus() const
virtual void initialize()
Initialize the data buffer.
virtual void slaveProcessTiles()
ossimImageMpiSWriterSequenceConnection(ossimObject *owner=NULL, long numberOfTilesToBuffer=2)
virtual ~ossimImageMpiSWriterSequenceConnection()
virtual void loadTile(const void *src, const ossimIrect &src_rect, ossimInterleaveType il_type)
static ossimImageDataFactory * instance()
unsigned int ossim_uint32
32 bit normalized floating point
virtual ossimIrect getImageRectangle() const
ossimRefPtr< ossimImageData > * theOutputTile
virtual void initialize()
virtual ossimRefPtr< ossimImageData > create(ossimSource *owner, ossimScalarType scalar, ossim_uint32 bands=1) const
virtual void initialize()
ossimByteOrder getSystemEndianType() const
int theNumberOfTilesToBuffer
virtual void makeBlank()
Initializes data to null pixel values.
64 bit normalized floating point
virtual ossimRefPtr< ossimImageData > getNextTile(ossim_uint32 resLevel=0)
int theNumberOfProcessors
virtual const void * getBuf() const
virtual void setDataObjectStatus(ossimDataObjectStatus status) const
Full list found in ossimConstants.h.
#define RTTI_DEF1(cls, name, b1)
ossimImageSource * theInputConnection
ossim_int64 theCurrentTileNumber
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)