mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#7527 HDF Summary Reader : Add first working prototype
HDF5 must be compiled with special options to support multithreading. Disable file object multithreading for HDF5. Some vector types are not supported, as the support in opm-common reader is not complete (region, region_to_region, ...).
This commit is contained in:
@@ -85,13 +85,24 @@ void RimFileSummaryCase::updateFilePathsFromProjectPath( const QString& newProje
|
||||
// RimTools::relocateFile( m_summaryHeaderFilename().path(), newProjectPath, oldProjectPath, nullptr, nullptr );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimFileSummaryCase::createSummaryReaderInterfaceThreadSafe( RiaThreadSafeLogger* threadSafeLogger )
|
||||
{
|
||||
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(),
|
||||
m_includeRestartFiles,
|
||||
threadSafeLogger );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimFileSummaryCase::createSummaryReaderInterface()
|
||||
{
|
||||
m_summaryFileReader =
|
||||
RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(), m_includeRestartFiles );
|
||||
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(),
|
||||
m_includeRestartFiles,
|
||||
nullptr );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -109,17 +120,16 @@ void RimFileSummaryCase::createRftReaderInterface()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RifReaderEclipseSummary* RimFileSummaryCase::findRelatedFilesAndCreateReader( const QString& headerFileName,
|
||||
bool includeRestartFiles )
|
||||
RifReaderEclipseSummary* RimFileSummaryCase::findRelatedFilesAndCreateReader( const QString& headerFileName,
|
||||
bool includeRestartFiles,
|
||||
RiaThreadSafeLogger* threadSafeLogger )
|
||||
{
|
||||
RifReaderEclipseSummary* summaryFileReader = new RifReaderEclipseSummary;
|
||||
|
||||
if ( !summaryFileReader->open( headerFileName, includeRestartFiles ) )
|
||||
if ( !summaryFileReader->open( headerFileName, includeRestartFiles, threadSafeLogger ) )
|
||||
{
|
||||
RiaLogging::warning( QString( "Failed to open summary file %1" ).arg( headerFileName ) );
|
||||
|
||||
delete summaryFileReader;
|
||||
summaryFileReader = nullptr;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return summaryFileReader;
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
class RifReaderRftInterface;
|
||||
class RifReaderEclipseRft;
|
||||
class RifReaderEclipseSummary;
|
||||
class RiaThreadSafeLogger;
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
@@ -43,6 +44,7 @@ public:
|
||||
QString caseName() const override;
|
||||
void updateFilePathsFromProjectPath( const QString& newProjectPath, const QString& oldProjectPath ) override;
|
||||
|
||||
void createSummaryReaderInterfaceThreadSafe( RiaThreadSafeLogger* threadSafeLogger );
|
||||
void createSummaryReaderInterface() override;
|
||||
void createRftReaderInterface() override;
|
||||
RifSummaryReaderInterface* summaryReader() override;
|
||||
@@ -50,9 +52,11 @@ public:
|
||||
|
||||
void setIncludeRestartFiles( bool includeRestartFiles );
|
||||
|
||||
static RifReaderEclipseSummary* findRelatedFilesAndCreateReader( const QString& headerFileName,
|
||||
bool includeRestartFiles );
|
||||
static RifReaderEclipseRft* findRftDataAndCreateReader( const QString& headerFileName );
|
||||
static RifReaderEclipseSummary* findRelatedFilesAndCreateReader( const QString& headerFileName,
|
||||
bool includeRestartFiles,
|
||||
RiaThreadSafeLogger* threadSafeLogger );
|
||||
|
||||
static RifReaderEclipseRft* findRftDataAndCreateReader( const QString& headerFileName );
|
||||
|
||||
private:
|
||||
cvf::ref<RifReaderEclipseSummary> m_summaryFileReader;
|
||||
|
||||
@@ -182,8 +182,9 @@ void RimGridSummaryCase::updateFilePathsFromProjectPath( const QString& newProje
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimGridSummaryCase::createSummaryReaderInterface()
|
||||
{
|
||||
m_summaryFileReader =
|
||||
RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(), m_includeRestartFiles );
|
||||
m_summaryFileReader = RimFileSummaryCase::findRelatedFilesAndCreateReader( this->summaryHeaderFilename(),
|
||||
m_includeRestartFiles,
|
||||
nullptr );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -441,18 +441,29 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vector<RimFileS
|
||||
|
||||
RifOpmCommonEclipseSummary::resetLodCount();
|
||||
|
||||
#pragma omp parallel for schedule( dynamic )
|
||||
RiaThreadSafeLogger threadSafeLogger;
|
||||
|
||||
// The HDF5 reader requires a special configuration to be thread safe. Disable threading for HDF reader creation.
|
||||
bool canUseMultipleTreads =
|
||||
( RiaPreferences::current()->summaryDataReader() != RiaPreferences::SummaryReaderMode::HDF5_OPM_COMMON );
|
||||
|
||||
#pragma omp parallel for schedule( dynamic ) if ( canUseMultipleTreads )
|
||||
for ( int cIdx = 0; cIdx < static_cast<int>( fileSummaryCases.size() ); ++cIdx )
|
||||
{
|
||||
RimFileSummaryCase* fileSummaryCase = fileSummaryCases[cIdx];
|
||||
if ( fileSummaryCase )
|
||||
{
|
||||
fileSummaryCase->createSummaryReaderInterface();
|
||||
fileSummaryCase->createSummaryReaderInterfaceThreadSafe( &threadSafeLogger );
|
||||
}
|
||||
|
||||
progInfo.setProgress( cIdx );
|
||||
}
|
||||
|
||||
for ( const auto& txt : threadSafeLogger.messages() )
|
||||
{
|
||||
RiaLogging::info( txt );
|
||||
}
|
||||
|
||||
auto numberOfLodFilesCreated = RifOpmCommonEclipseSummary::numberOfLodFilesCreated();
|
||||
if ( numberOfLodFilesCreated > 0 )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user