Commit c0a46285 authored by Guillaume Pasero's avatar Guillaume Pasero

Merge branch '1526-ram-not-used' into 'develop'

Bugfix RAM parameter not used

Closes #1526 and #1516

See merge request !32
parents 928adeaf cd0a0c39
......@@ -88,6 +88,9 @@ public:
* GetNumberOfSplits() returns. */
virtual RegionType GetSplit(unsigned int i);
itkSetMacro(DefaultRAM, MemoryPrintType);
itkGetMacro(DefaultRAM, MemoryPrintType);
protected:
StreamingManager();
~StreamingManager() override;
......@@ -111,11 +114,13 @@ private:
StreamingManager(const StreamingManager &); //purposely not implemented
void operator =(const StreamingManager&); //purposely not implemented
/* Compute the available RAM from configuration settings if the input parameter is 0,
* otherwise, simply returns the input parameter */
/** Compute the available RAM in Bytes from an input value in MByte.
* If the input value is 0, it uses the m_DefaultRAM value.
* If m_DefaultRAM is also 0, it uses the configuration settings */
MemoryPrintType GetActualAvailableRAMInBytes(MemoryPrintType availableRAMInMB);
/** Default available RAM in MB */
MemoryPrintType m_DefaultRAM;
};
} // End namespace otb
......
......@@ -31,6 +31,7 @@ namespace otb
template <class TImage>
StreamingManager<TImage>::StreamingManager()
: m_ComputedNumberOfSplits(0)
, m_DefaultRAM(0)
{
}
......@@ -47,8 +48,15 @@ StreamingManager<TImage>::GetActualAvailableRAMInBytes(MemoryPrintType available
if (availableRAMInBytes == 0)
{
// Retrieve it from the configuration
availableRAMInBytes = 1024*1024*ConfigurationManager::GetMaxRAMHint();
if (m_DefaultRAM != 0)
{
availableRAMInBytes = 1024*1024*m_DefaultRAM;
}
else
{
// Retrieve it from the configuration
availableRAMInBytes = 1024*1024*ConfigurationManager::GetMaxRAMHint();
}
}
return availableRAMInBytes;
}
......
......@@ -294,11 +294,17 @@ ImageFileWriter<TInputImage>
sizemode = m_FilenameHelper->GetStreamingSizeMode();
}
double sizevalue = 0.;
unsigned int sizevalue = 0;
// Save the DefaultRAM value for later
unsigned int oldDefaultRAM = m_StreamingManager->GetDefaultRAM();
if (sizemode == "auto")
{
sizevalue = oldDefaultRAM;
}
if(m_FilenameHelper->StreamingSizeValueIsSet())
{
sizevalue = m_FilenameHelper->GetStreamingSizeValue();
sizevalue = static_cast<unsigned int>(m_FilenameHelper->GetStreamingSizeValue());
}
if(type == "auto")
......@@ -307,7 +313,7 @@ ImageFileWriter<TInputImage>
{
otbLogMacro(Warning,<<"In auto streaming type, the sizemode option will be ignored.");
}
if(sizevalue == 0.)
if(sizevalue == 0)
{
otbLogMacro(Warning,<<"sizemode is auto but sizevalue is 0. Value will be fetched from the OTB_MAX_RAM_HINT environment variable if set, or else use the default value");
}
......@@ -317,7 +323,7 @@ ImageFileWriter<TInputImage>
{
if(sizemode == "auto")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
otbLogMacro(Warning,<<"sizemode is auto but sizevalue is 0. Value will be fetched from the OTB_MAX_RAM_HINT environment variable if set, or else use the default value");
}
......@@ -325,27 +331,27 @@ ImageFileWriter<TInputImage>
}
else if(sizemode == "nbsplits")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
otbLogMacro(Warning,<<"Streaming sizemode is set to nbsplits but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetNumberOfDivisionsTiledStreaming(static_cast<unsigned int>(sizevalue));
this->SetNumberOfDivisionsTiledStreaming(sizevalue);
}
else if(sizemode == "height")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
otbLogMacro(Warning,<<"Streaming sizemode is set to height but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetTileDimensionTiledStreaming(static_cast<unsigned int>(sizevalue));
this->SetTileDimensionTiledStreaming(sizevalue);
}
}
else if(type == "stripped")
{
if(sizemode == "auto")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
otbLogMacro(Warning,<<"sizemode is auto but sizevalue is 0. Value will be fetched from configuration file if any, or from cmake configuration otherwise.");
}
......@@ -354,30 +360,34 @@ ImageFileWriter<TInputImage>
}
else if(sizemode == "nbsplits")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
otbLogMacro(Warning,<<"Streaming sizemode is set to nbsplits but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetNumberOfDivisionsStrippedStreaming(static_cast<unsigned int>(sizevalue));
this->SetNumberOfDivisionsStrippedStreaming(sizevalue);
}
else if(sizemode == "height")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
otbLogMacro(Warning,<<"Streaming sizemode is set to height but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetNumberOfLinesStrippedStreaming(static_cast<unsigned int>(sizevalue));
this->SetNumberOfLinesStrippedStreaming(sizevalue);
}
}
else if (type == "none")
{
if(sizemode!="" || sizevalue!=0.)
if(sizemode!="" || sizevalue!=0)
{
otbLogMacro(Warning,<<"Streaming is explicitly disabled, sizemode and sizevalue will be ignored.");
}
this->SetNumberOfDivisionsTiledStreaming(0);
}
// since we change the m_StreamingManager under the hood, we copy the DefaultRAM
// value to the new streamingManager.
m_StreamingManager->SetDefaultRAM(oldDefaultRAM);
}
else
{
......
......@@ -315,11 +315,16 @@ SimpleParallelTiffWriter<TInputImage>
sizemode = m_FilenameHelper->GetStreamingSizeMode();
}
double sizevalue = 0.;
unsigned int sizevalue = 0;
// Save the DefaultRAM value for later
unsigned int oldDefaultRAM = m_StreamingManager->GetDefaultRAM();
if (sizemode == "auto")
{
sizevalue = oldDefaultRAM;
}
if(m_FilenameHelper->StreamingSizeValueIsSet())
{
sizevalue = m_FilenameHelper->GetStreamingSizeValue();
sizevalue = static_cast<unsigned int>(m_FilenameHelper->GetStreamingSizeValue());
}
if(type == "auto")
......@@ -328,7 +333,7 @@ SimpleParallelTiffWriter<TInputImage>
{
itkWarningMacro(<<"In auto streaming type, the sizemode option will be ignored.");
}
if(sizevalue == 0.)
if(sizevalue == 0)
{
itkWarningMacro("sizemode is auto but sizevalue is 0. Value will be fetched from configuration file if any, or from cmake configuration otherwise.");
}
......@@ -338,7 +343,7 @@ SimpleParallelTiffWriter<TInputImage>
{
if(sizemode == "auto")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
itkWarningMacro("sizemode is auto but sizevalue is 0. Value will be fetched from configuration file if any, or from cmake configuration otherwise.");
}
......@@ -346,27 +351,27 @@ SimpleParallelTiffWriter<TInputImage>
}
else if(sizemode == "nbsplits")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
itkWarningMacro("Streaming sizemode is set to nbsplits but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetNumberOfDivisionsTiledStreaming(static_cast<unsigned int>(sizevalue));
this->SetNumberOfDivisionsTiledStreaming(sizevalue);
}
else if(sizemode == "height")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
itkWarningMacro("Streaming sizemode is set to height but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetTileDimensionTiledStreaming(static_cast<unsigned int>(sizevalue));
this->SetTileDimensionTiledStreaming(sizevalue);
}
}
else if(type == "stripped")
{
if(sizemode == "auto")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
itkWarningMacro("sizemode is auto but sizevalue is 0. Value will be fetched from configuration file if any, or from cmake configuration otherwise.");
}
......@@ -375,30 +380,34 @@ SimpleParallelTiffWriter<TInputImage>
}
else if(sizemode == "nbsplits")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
itkWarningMacro("Streaming sizemode is set to nbsplits but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetNumberOfDivisionsStrippedStreaming(static_cast<unsigned int>(sizevalue));
this->SetNumberOfDivisionsStrippedStreaming(sizevalue);
}
else if(sizemode == "height")
{
if(sizevalue == 0.)
if(sizevalue == 0)
{
itkWarningMacro("Streaming sizemode is set to height but sizevalue is 0. This will result in upredicted behaviour. Please consider setting the sizevalue by using &streaming:sizevalue=x.");
}
this->SetNumberOfLinesStrippedStreaming(static_cast<unsigned int>(sizevalue));
this->SetNumberOfLinesStrippedStreaming(sizevalue);
}
}
else if (type == "none")
{
if(sizemode!="" || sizevalue!=0.)
if(sizemode!="" || sizevalue!=0)
{
itkWarningMacro("Streaming is explicitly disabled, sizemode and sizevalue will be ignored.");
}
this->SetNumberOfDivisionsTiledStreaming(0);
}
// since we change the m_StreamingManager under the hood, we copy the DefaultRAM
// value to the new streamingManager.
m_StreamingManager->SetDefaultRAM(oldDefaultRAM);
}
else
{
......
......@@ -207,6 +207,7 @@ ClampAndWriteVectorImage( itk::ImageBase<2> * in ,
sptWriter->SetFileName(filename);
sptWriter->SetInput(clampFilter->GetOutput());
sptWriter->SetAutomaticAdaptativeStreaming(ramValue);
sptWriter->GetStreamingManager()->SetDefaultRAM(ramValue);
sptWriter->Update();
}
......@@ -222,10 +223,9 @@ ClampAndWriteVectorImage( itk::ImageBase<2> * in ,
if(useStandardWriter)
{
writer->SetFileName( filename );
writer->SetInput(clampFilter->GetOutput());
writer->SetAutomaticAdaptativeStreaming(ramValue);
writer->SetFileName( filename );
writer->SetInput(clampFilter->GetOutput());
writer->GetStreamingManager()->SetDefaultRAM(ramValue);
writer->Update();
}
}
......@@ -348,7 +348,7 @@ OutputImageParameter::SwitchRGBAImageWrite()
{
m_RGBAUInt8Writer->SetFileName( this->GetFileName() );
m_RGBAUInt8Writer->SetInput(dynamic_cast<UInt8RGBAImageType*>(m_Image.GetPointer()) );
m_RGBAUInt8Writer->SetAutomaticAdaptativeStreaming(m_RAMValue);
m_RGBAUInt8Writer->GetStreamingManager()->SetDefaultRAM(m_RAMValue);
m_RGBAUInt8Writer->Update();
}
else
......@@ -363,7 +363,7 @@ OutputImageParameter::SwitchRGBImageWrite()
{
m_RGBUInt8Writer->SetFileName( this->GetFileName() );
m_RGBUInt8Writer->SetInput(dynamic_cast<UInt8RGBImageType*>(m_Image.GetPointer()) );
m_RGBUInt8Writer->SetAutomaticAdaptativeStreaming(m_RAMValue);
m_RGBUInt8Writer->GetStreamingManager()->SetDefaultRAM(m_RAMValue);
m_RGBUInt8Writer->Update();
}
else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment