diff --git a/buildDataMan.sh b/buildDataMan.sh index 0e65f3f0c51e5f109fcd19ef35af398473f09a13..886d96447ab724f8f003605560cedac7b183a7cd 100755 --- a/buildDataMan.sh +++ b/buildDataMan.sh @@ -9,7 +9,7 @@ DATAMAN_LOCATION=/Users/w4g/Dropbox/lib/DataMan MPICOMPILER=mpic++ if [ "$(uname)" == "Darwin" ]; then - CCOMPILER=clang++ + CCOMPILER=g++ export DYLD_LIBRARY_PATH=$DATAMAN_LOCATION/lib:$DYLD_LIBRARY_PATH elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then CCOMPILER=g++ @@ -43,7 +43,7 @@ echo "#################################################################" echo "#################################################################" echo "DataMan reader" echo "#################################################################" -./examples/hello/datamanReader/helloDataManReader_nompi.exe +#./examples/hello/datamanReader/helloDataManReader_nompi.exe echo echo diff --git a/examples/hello/datamanReader/helloDataManReader.cpp b/examples/hello/datamanReader/helloDataManReader.cpp index 0943c6c402f32867ac5f966a1bf4ee2f496bbe3e..d3569ff6d8fa93e3a76c90e9d1dbdffa9eb2bab3 100644 --- a/examples/hello/datamanReader/helloDataManReader.cpp +++ b/examples/hello/datamanReader/helloDataManReader.cpp @@ -27,7 +27,7 @@ void getcb( const void *data, std::string doid, std::string var, std::string dty std::size_t varsize = std::accumulate(varshape.begin(), varshape.end(), 1, std::multiplies<std::size_t>()); - for (int i=0; i<varsize; i++) + for (size_t i=0; i<varsize; i++) std::cout << ((float*)data)[i] << " "; std::cout << std::endl; } diff --git a/examples/hello/datamanReader/helloDataManReader_nompi.cpp b/examples/hello/datamanReader/helloDataManReader_nompi.cpp index be16f1149ad4a54b89ae951020bb019f9bd9ffbe..12d44b873718f15728839fa5f9bc638721742823 100644 --- a/examples/hello/datamanReader/helloDataManReader_nompi.cpp +++ b/examples/hello/datamanReader/helloDataManReader_nompi.cpp @@ -19,7 +19,7 @@ void getcb( const void *data, std::string doid, std::string var, std::string dty std::size_t varsize = std::accumulate(varshape.begin(), varshape.end(), 1, std::multiplies<std::size_t>()); - for (int i=0; i<varsize; i++) + for (size_t i=0; i<varsize; i++) std::cout << ((float*)data)[i] << " "; std::cout << std::endl; } diff --git a/examples/hello/datamanWriter/helloDataManWriter.cpp b/examples/hello/datamanWriter/helloDataManWriter.cpp index 574308aa449a20cfdf3bac4440793a626361118d..48817643bcbed8abc55d2ba1fe8927992c67b591 100644 --- a/examples/hello/datamanWriter/helloDataManWriter.cpp +++ b/examples/hello/datamanWriter/helloDataManWriter.cpp @@ -38,8 +38,8 @@ int main( int argc, char* argv [] ) try { //Define variable and local size - auto& ioMyDoubles = adios.DefineVariable<double>( "myDoubles", {Nx} ); - auto& ioMyCFloats = adios.DefineVariable<std::complex<float>>( "myCFloats", {3} ); + auto ioMyDoubles = adios.DefineVariable<double>( "myDoubles", {Nx} ); + auto ioMyCFloats = adios.DefineVariable<std::complex<float>>( "myCFloats", {3} ); //Define method for engine creation, it is basically straight-forward parameters adios::Method& datamanSettings = adios.DeclareMethod( "WAN", "DataManWriter" ); //default method type is Writer diff --git a/examples/hello/datamanWriter/helloDataManWriter_nompi.cpp b/examples/hello/datamanWriter/helloDataManWriter_nompi.cpp index c5c68a96b5aa7cffb40eae9cfb52bbde83ae4620..8176525148b8790b0e6fa3686eee743543cc1e02 100644 --- a/examples/hello/datamanWriter/helloDataManWriter_nompi.cpp +++ b/examples/hello/datamanWriter/helloDataManWriter_nompi.cpp @@ -31,14 +31,14 @@ int main( int argc, char* argv [] ) { //Define variable and local size //Define variable and local size - auto& ioMyFloats = adios.DefineVariable<float>( "myfloats", adios::Dims{Nx} ); - auto& ioMyFloat = adios.DefineVariable<float>( "myfloat", adios::Dims{1} ); + auto ioMyFloats = adios.DefineVariable<float>( "myfloats", adios::Dims{Nx} ); + auto ioMyFloat = adios.DefineVariable<float>( "myfloat", adios::Dims{1} ); // auto& ioMyDoubles = adios.DefineVariable<double>( "myDoubles", adios::Dims{Nx} ); // auto& ioMyCFloats = adios.DefineVariable<std::complex<float>>( "myCFloats", {3} ); //Define method for engine creation, it is basically straight-forward parameters adios::Method& datamanSettings = adios.DeclareMethod( "WAN", "DataManWriter" ); //default method type is Writer - datamanSettings.SetParameters( "real_time=yes", "method_type=stream", "method=dump", "local_ip=127.0.0.1", "remote_ip=127.0.0.1", "local_port=12306", "remote_port=12307" ); + datamanSettings.SetParameters( "real_time=yes", "method_type=stream", "method=dump", "monitoring=yes", "local_ip=127.0.0.1", "remote_ip=127.0.0.1", "local_port=12306", "remote_port=12307" ); // datamanSettings.AddTransport( "Mdtm", "localIP=128.0.0.0.1", "remoteIP=128.0.0.0.2", "tolerances=1,2,3" ); //datamanSettings.AddTransport( "ZeroMQ", "localIP=128.0.0.0.1.1", "remoteIP=128.0.0.0.2.1", "tolerances=1,2,3" ); not yet supported , will throw an exception diff --git a/include/engine/dataman/DataManWriter.h b/include/engine/dataman/DataManWriter.h index 2d85c1fb1ba00dcdb00219586366cf61e891a290..a5c4706c809e543e804ffca7bdabc7e65475560e 100644 --- a/include/engine/dataman/DataManWriter.h +++ b/include/engine/dataman/DataManWriter.h @@ -88,6 +88,7 @@ private: format::BP1Writer m_BP1Writer; ///< format object will provide the required BP functionality to be applied on m_Buffer and m_Transports bool m_DoRealTime = false; + bool m_DoMonitor = false; DataManager m_Man; std::function<void( const void*, std::string, std::string, std::string, Dims )> m_CallBack; ///< call back function @@ -118,36 +119,35 @@ private: jmsg["doid"] = m_Name; jmsg["var"] = variable.m_Name; jmsg["dtype"] = GetType<T>(); - std::cout << "variable.m_Dimensions.size() = " << variable.m_Dimensions.size() << endl; jmsg["putshape"] = variable.m_Dimensions; -// if(variable.m_GlobalDimensions.size() == 0) variable.m_GlobalDimensions = variable.m_Dimensions; + if(variable.m_GlobalDimensions.size() == 0) variable.m_GlobalDimensions = variable.m_Dimensions; jmsg["varshape"] = variable.m_GlobalDimensions; -// if(variable.m_GlobalOffsets.size() == 0) variable.m_GlobalOffsets.assign(variable.m_Dimensions.size(),0); + if(variable.m_GlobalOffsets.size() == 0) variable.m_GlobalOffsets.assign(variable.m_Dimensions.size(),0); jmsg["offset"] = variable.m_GlobalOffsets; jmsg["timestep"] = 0; m_Man.put(values, jmsg); - std::cout << "putshape " << variable.m_Dimensions.size() << endl; - std::cout << "varshape " << variable.m_GlobalDimensions.size() << endl; - std::cout << "offset " << variable.m_GlobalOffsets.size() << endl; - - std::cout << "I am hooked to the DataMan library\n"; - MPI_Barrier( m_MPIComm ); - - for( int i = 0; i < m_SizeMPI; ++i ) - { - if( i == m_RankMPI ) - { - std::cout << "Rank: " << m_RankMPI << "\n"; - variable.Monitor( std::cout ); - std::cout << std::endl; - } - else + if(m_DoMonitor){ + MPI_Barrier( m_MPIComm ); + std::cout << "I am hooked to the DataMan library\n"; + std::cout << "putshape " << variable.m_Dimensions.size() << endl; + std::cout << "varshape " << variable.m_GlobalDimensions.size() << endl; + std::cout << "offset " << variable.m_GlobalOffsets.size() << endl; + for( int i = 0; i < m_SizeMPI; ++i ) { - sleep( 1 ); + if( i == m_RankMPI ) + { + std::cout << "Rank: " << m_RankMPI << "\n"; + variable.Monitor( std::cout ); + std::cout << std::endl; + } + else + { + sleep( 1 ); + } } + MPI_Barrier( m_MPIComm ); } - MPI_Barrier( m_MPIComm ); } }; diff --git a/src/engine/dataman/DataManWriter.cpp b/src/engine/dataman/DataManWriter.cpp index 9152f6b15b924440ae9e09ea259a6226506861b0..87c54aa74a096713fe97722606aaa06c9f7f99fb 100644 --- a/src/engine/dataman/DataManWriter.cpp +++ b/src/engine/dataman/DataManWriter.cpp @@ -165,6 +165,13 @@ void DataManWriter::Init( ) m_DoRealTime = true; } + itRealTime = m_Method.m_Parameters.find( "monitoring" ); + if( itRealTime != m_Method.m_Parameters.end() ) + { + if( itRealTime->second == "yes" || itRealTime->second == "true" ) + m_DoMonitor = true; + } + if(m_DoRealTime) { /**