From acc4a58232f1cb7783a7ee1648aa9f65c72ddafd Mon Sep 17 00:00:00 2001 From: wfg <wfg@mbpwfg.ornl.gov> Date: Thu, 16 Feb 2017 16:09:27 -0500 Subject: [PATCH] Corrected sleep bug in DataMan.h --- include/engine/dataman/DataMan.h | 2 +- include/engine/vis/Vis.h | 96 --------- include/engine/vis/VisTemplates.h | 131 ------------- src/engine/vis/Vis.cpp | 312 ------------------------------ 4 files changed, 1 insertion(+), 540 deletions(-) delete mode 100644 include/engine/vis/Vis.h delete mode 100644 include/engine/vis/VisTemplates.h delete mode 100644 src/engine/vis/Vis.cpp diff --git a/include/engine/dataman/DataMan.h b/include/engine/dataman/DataMan.h index 348522ec3..10d13a120 100644 --- a/include/engine/dataman/DataMan.h +++ b/include/engine/dataman/DataMan.h @@ -105,7 +105,7 @@ private: } else { - sleep( 0.1 ); + sleep( 1 ); } } MPI_Barrier( m_MPIComm ); diff --git a/include/engine/vis/Vis.h b/include/engine/vis/Vis.h deleted file mode 100644 index ecdc21688..000000000 --- a/include/engine/vis/Vis.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * DataMan.h - * - * Created on: Jan 10, 2017 - * Author: wfg - */ - -#ifndef VIS_H_ -#define VIS_H_ - - -#include "core/Engine.h" -#include "capsule/Heap.h" -#include "format/BP1Writer.h" - - -namespace adios -{ -namespace engine -{ - - -class Vis : public Engine -{ - -public: - - /** - * Constructor for single BP capsule engine, writes in BP format into a single heap capsule - * @param name unique name given to the engine - * @param accessMode "w" or "write", "r" or "read", "a" or "append" - * @param mpiComm communicator used for MPI operations - * @param method contains Engine metadata options provide by the user, Vis can make decisions based on these "knobs" - * @param debugMode true: handle exceptions, false: skip extra exceptions checks - * @param hostLanguage for Fortran users (due to array index), most of the time will be set with C++ - */ - Vis( const std::string name, const std::string accessMode, MPI_Comm mpiComm, - const Method& method, const bool debugMode = false, const unsigned int cores = 1, - const std::string hostLanguage = "C++" ); - - ~Vis( ); - - void Write( Group& group, const std::string variableName, const char* values ); - void Write( Group& group, const std::string variableName, const unsigned char* values ); - void Write( Group& group, const std::string variableName, const short* values ); - void Write( Group& group, const std::string variableName, const unsigned short* values ); - void Write( Group& group, const std::string variableName, const int* values ); - void Write( Group& group, const std::string variableName, const unsigned int* values ); - void Write( Group& group, const std::string variableName, const long int* values ); - void Write( Group& group, const std::string variableName, const unsigned long int* values ); - void Write( Group& group, const std::string variableName, const long long int* values ); - void Write( Group& group, const std::string variableName, const unsigned long long int* values ); - void Write( Group& group, const std::string variableName, const float* values ); - void Write( Group& group, const std::string variableName, const double* values ); - void Write( Group& group, const std::string variableName, const long double* values ); - - void Write( const std::string variableName, const char* values ); - void Write( const std::string variableName, const unsigned char* values ); - void Write( const std::string variableName, const short* values ); - void Write( const std::string variableName, const unsigned short* values ); - void Write( const std::string variableName, const int* values ); - void Write( const std::string variableName, const unsigned int* values ); - void Write( const std::string variableName, const long int* values ); - void Write( const std::string variableName, const unsigned long int* values ); - void Write( const std::string variableName, const long long int* values ); - void Write( const std::string variableName, const unsigned long long int* values ); - void Write( const std::string variableName, const float* values ); - void Write( const std::string variableName, const double* values ); - void Write( const std::string variableName, const long double* values ); - - void Close( const int transportID = -1 ); - -private: - - std::vector< std::shared_ptr<Capsule> > m_Capsules; ///< it can be any derived class from Capsule: Heap, Shmem, RDMA ? - std::size_t m_MaxBufferSize; ///< maximum buffer size - float m_GrowthFactor = 1.5; ///< buffer growth factor if using a Heap capsule. New_size = f * Previous_size - - //optional if BP format is required - format::BP1Writer m_BP1Writer; ///< format object will provide the required BP functionality to be applied on m_Buffer and m_Transports - format::BP1MetadataSet m_MetadataSet; ///< metadata set accompanying the heap buffer data in bp format. Needed by m_BP1Writer - - void Init( ); ///< calls InitTransports based on Method and can extend other Init functions, called from constructor - void InitTransports( ); ///< from Transports - -}; - - -} //end namespace engine -} //end namespace adios - - - - - -#endif /* VIS_H_ */ diff --git a/include/engine/vis/VisTemplates.h b/include/engine/vis/VisTemplates.h deleted file mode 100644 index 0450bed88..000000000 --- a/include/engine/vis/VisTemplates.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * DataManTemplates.h - * - * Created on: Jan 18, 2017 - * Author: wfg - */ - -#ifndef VISTEMPLATES_H_ -#define VISTEMPLATES_H_ - -#include <vector> -#include <iostream> - - -#include "core/Group.h" -#include "core/Variable.h" -#include "capsule/Heap.h" -#include "core/Transport.h" -#include "format/BP1Writer.h" - - -namespace adios -{ - -template<class T> -void VisReadVariable( Transport& transport, const char* rawDataBuffer, const Var variableName ) -{ - //Here make decisions on what to do with a certain variable in a rawDataBuffer (BP Format?) -} - - -template<class T> -void VisReadVariables( Transport& transport, const char* rawDataBuffer, const std::vector<Var>& variableName ) -{ - //Here make decisions on what to do with many variables in a rawDataBuffer (BP Format?) -} - -template<class T> -void VisReadAllVariables( Transport& transport, const char* rawDataBuffer ) -{ - //Here make decisions on what to do with all variables in a rawDataBuffer (BP Format?) -} - - - -/** - * - * @param group variable owner - * @param variableName string type - * @param variable - * @param buffer heap buffer to writer variables to for disk I/O - * @param transports - * @param bp1Writer - */ -template<class T> -void VisWriteVariable( const Group& group, const Var variableName, Variable<T>& variable, - std::vector< std::shared_ptr<Capsule> >& capsules, - std::vector< std::shared_ptr<Transport> >& transports, - format::BP1Writer& bp1Writer, - const int rank ) - -{ - //here write your magic, this template replaces C MACROS in ADIOS 1.0 - std::cout << "Hello from Vis engine, writing variable " << variableName << " of typeid(T).name() = " << typeid(T).name() << "\n"; - if( variable.IsDimension ) - { - std::cout << "Which is a dimension variable\n"; - } - - auto localDimensions = group.GetDimensions( variable.DimensionsCSV ); - unsigned long long int totalDimensions = GetTotalSize( localDimensions ); - - std::cout << "Values: "; - for( unsigned int i = 0; i < totalDimensions; ++i ) - { - std::cout << variable.Values[i] << " "; - } - std::cout << "\nfrom RANK = " << rank << "\n\n"; - - - // This is just pseudo-code telling potential scenarios the engine can execute - //if( story = "simple task" ) - //{ - //Could be private functions -// RunSimpleTask( group, variableName, variable ); // e.g. Write to POSIX file -// - //} -// else if( story == "simple task + VisIt" ) -// { -// ///Could be private functions -// RunSimpleTask( group, variableName, variable ); // e.g. Write to POSIX file -// SendToVisIt( group, variableName, variable ); -// -// -// } -// else if( story == "Send to Service Flow Velocity and Potential" ) -// { - - -// if( m_IsPotentialWritten = true && m_IsVelocityWritten == true && m_IsSameGroup == true ) -// { -// SendToService( ); will send a buffer -// } -// else -// { -// if( variableName == "velocity" ) -// { -// -// WriteVariableToBuffer( group, variableName, variable, ... ); ///here -// m_WrittenVariables.push_back( std::make_pair( group, variableName ) ); // <Group*, variableName> keeps track of Written Variables -// m_IsVelocityWritten = true; -// } -// else if( variableName == "potential" ) -// { -// WriteVariableToBuffer( group, variableName, variable, ... ); ///here -// m_WrittenVariables.push_back( std::make_pair( group, variableName ) ); // <Group*, variableName> keeps track of Written Variables -// m_IsPotentialWritten = true; -// } -// } -// -// } -// -// -} - - -} //end namespace - - - -#endif /* VISTEMPLATES_H_ */ diff --git a/src/engine/vis/Vis.cpp b/src/engine/vis/Vis.cpp deleted file mode 100644 index 93bb598d1..000000000 --- a/src/engine/vis/Vis.cpp +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Vis.cpp - * - * Created on: Jan 10, 2017 - * Author: wfg - */ - -#include <iostream> - - -#include "engine/vis/Vis.h" -#include "engine/vis/VisTemplates.h" -#include "core/Support.h" -#include "functions/adiosFunctions.h" //CSVToVector - -//supported capsules -#include "capsule/Heap.h" -#include "capsule/ShmSystemV.h" - -//supported transports -#include "transport/POSIX.h" -#include "transport/FStream.h" -#include "transport/File.h" - - -namespace adios -{ -namespace engine -{ - -Vis::Vis( const std::string streamName, const std::string accessMode, const MPI_Comm mpiComm, - const Method& method, const bool debugMode, const unsigned int cores, - const std::string hostLanguage ): - Engine( "Vis", streamName, accessMode, mpiComm, method, debugMode, cores, - " Vis constructor (or call to ADIOS Open).\n", hostLanguage ) -{ - Init( ); -} - - -Vis::~Vis( ) -{ } - - -void Vis::Init( ) -{ - InitTransports( ); -} - - -void Vis::Write( Group& group, const std::string variableName, const char* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write char*" ); - Variable<char>& variable = group.m_Char[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const unsigned char* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write unsigned char*" ); - Variable<unsigned char>& variable = group.m_UChar[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const short* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write short*" ); - Variable<short>& variable = group.m_Short[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const unsigned short* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write unsigned short*" ); - Variable<unsigned short>& variable = group.m_UShort[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const int* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write int*" ); - Variable<int>& variable = group.m_Int[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const unsigned int* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write unsigned int*" ); - Variable<unsigned int>& variable = group.m_UInt[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const long int* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write long int*" ); - Variable<long int>& variable = group.m_LInt[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const unsigned long int* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write unsigned long int*" ); - Variable<unsigned long int>& variable = group.m_ULInt[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const long long int* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write long long int*" ); - Variable<long long int>& variable = group.m_LLInt[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const unsigned long long int* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write unsigned long long int*" ); - Variable<unsigned long long int>& variable = group.m_ULLInt[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const float* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write float*" ); - Variable<float>& variable = group.m_Float[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - -void Vis::Write( Group& group, const std::string variableName, const double* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write double*" ); - Variable<double>& variable = group.m_Double[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - - -void Vis::Write( Group& group, const std::string variableName, const long double* values ) -{ - auto index = PreSetVariable( group, variableName, " from call to Write long double*" ); - Variable<long double>& variable = group.m_LDouble[index]; //must be a reference - variable.Values = values; - VisWriteVariable( group, variableName, variable, m_Capsules, m_Transports, m_BP1Writer, m_RankMPI ); -} - -//USING Preset Group -void Vis::Write( const std::string variableName, const char* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const unsigned char* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const short* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const unsigned short* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const int* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const unsigned int* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const long int* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const unsigned long int* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const long long int* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const unsigned long long int* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const float* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const double* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - -void Vis::Write( const std::string variableName, const long double* values ) -{ - CheckDefaultGroup( ); - Write( *m_Group, variableName, values ); -} - - -void Vis::InitTransports( ) //maybe move this? -{ - TransportNamesUniqueness( ); - - for( const auto& parameters : m_Method.m_TransportParameters ) - { - auto itTransport = parameters.find( "transport" ); - - if( itTransport->second == "POSIX" ) - { - m_Transports.push_back( std::make_shared<POSIX>( m_MPIComm, m_DebugMode ) ); - m_Transports.back()->Open( m_Name, m_AccessMode ); - } - else if( itTransport->second == "ShMem" ) - { - //m_Transports.push_back( std::make_shared<ShMemTransport>( m_MPIComm, m_DebugMode ) ); - } - else if( itTransport->second == "VisIt" ) - { - //m_Transports.push_back( std::make_shared<SomeStagingTransport>( m_MPIComm, m_DebugMode ) ); //not yet supported - // - } - else - { - if( m_DebugMode == true ) - throw std::invalid_argument( "ERROR: transport " + itTransport->second + " not supported, in " + - m_Name + m_EndMessage ); - } - } -} - - - -void Vis::Close( const int transportIndex ) -{ - //do some preliminary work here - // (e.g. process metadata ) - //flush the last piece of data or do more writes - - if( transportIndex == -1 ) // all transports - { - for( auto& transport : m_Transports ) - transport->Close( ); - } - else - { - if( m_DebugMode == true ) - { - if( transportIndex >= static_cast<int>( m_Transports.size() ) ) - throw std::invalid_argument( "ERROR: transportIndex " + std::to_string( transportIndex ) + " is out of range\n" ); - } - - m_Transports[ transportIndex ]->Close( ); - } - - std::cout << "I own many Capsules (buffers: heap, shared memory, RDMA ) and \n" - " many Transports ( POSIX, in-situ vis, staging, shared memory, RDMA )\n" - " and I can do whatever I need to do with them\n"; -} - - - -} //end namespace engine -} //end namespace adios - - - -- GitLab