ug4
parallelization_util.h File Reference
#include <utility>
#include <vector>
#include <map>
#include "common/assert.h"
#include "algebra_id.h"
#include "communication_policies.h"
#include "algebra_layouts.h"
#include "common/profiler/profiler.h"
#include "parallelization_util_impl.h"

Go to the source code of this file.

Namespaces

 ug
 the ug namespace
 

Macros

#define PROFILE_PARALLELIZATION_UTIL
 
#define PU_PROFILE_BEGIN(name)   PROFILE_BEGIN(name)
 
#define PU_PROFILE_END(name)   PROFILE_END_(name)
 
#define PU_PROFILE_FUNC()   PROFILE_FUNC()
 

Functions

void ug::BuildDomainDecompositionLayouts (IndexLayout &subdomMastersOut, IndexLayout &subdomSlavesOut, IndexLayout &processMastersOut, IndexLayout &processSlavesOut, IndexLayout &deltaNbrMastersOut, IndexLayout &deltaNbrSlavesOut, IndexLayout &crossPointMastersOut, IndexLayout &crossPointSlavesOut, const IndexLayout &standardMasters, const IndexLayout &standardSlaves, int highestReferencedIndex, IDomainDecompositionInfo &ddinfo)
 
int ug::BuildOneToManyLayout (IndexLayout &masterLayoutOut, IndexLayout &slaveLayoutOut, int rootProcID, IndexLayout &masterLayout, IndexLayout &slaveLayout, pcl::ProcessCommunicator procComm, std::vector< int > *pNewMasterIDsOut)
 
SmartPtr< AlgebraLayoutsug::CreateLocalAlgebraLayouts ()
 
template<typename TLayout >
TLayout::iterator ug::find_pid (TLayout &layout, int pid)
 
template<class TIndVec >
void ug::GenerateGlobalConsecutiveIndices (TIndVec &indsOut, size_t numLocalInds, const AlgebraLayouts &layouts)
 Generates a set of global consecutive indices. More...
 
int ug::GetHighestReferencedIndex (IndexLayout &layout)
 
template<typename TAlgebra >
void ug::MatAdditiveToConsistentOnDiag (typename TAlgebra::matrix_type *pMat, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 changes parallel storage type from additive to consistent on diagonal of a matrix More...
 
template<typename TMatrix , typename TVector >
void ug::MatExtractDiagOnLayout (TVector *pDiagVector, const TMatrix *pMatrix, const IndexLayout &Layout)
 extracts diagonal of a matrix for interface indices More...
 
template<typename TMatrix , typename TVector >
void ug::MatWriteDiagOnLayout (TMatrix *pMatrix, const TVector *pDiagVector, const IndexLayout &Layout)
 writes diagonal of a matrix for interface indices More...
 
bool ug::PrintLayouts (const HorizontalAlgebraLayouts &layout)
 
template<class TMatrix >
void ug::TestHorizontalAlgebraLayouts (const TMatrix &mat, std::vector< AlgebraID > *algebraIDs=NULL, bool verbose=false)
 Tests layouts by matching master and slave interfaces and by comparing global id's. More...
 
template<typename TVector >
void ug::VecBroadcast (TVector *pVecDest, const TVector *pVecSrc, const IndexLayout &slaveLayoutDest, const IndexLayout &masterLayoutSrc, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 broadcasts all values from master indices to slave values in a second vector More...
 
template<typename TVector >
void ug::VecGather (TVector *pVecDest, const TVector *pVecSrc, const IndexLayout &masterLayoutDest, const IndexLayout &slaveLayoutSrc, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 gathers all values in master indices of a second vector More...
 
template<typename TVector >
void ug::AdditiveToConsistent (TVector *pVec, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 changes parallel storage type from additive to consistent More...
 
template<typename TVector >
void ug::AdditiveToUnique (TVector *pVec, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 changes parallel storage type from additive to unique More...
 
void ug::CommunicateConnections (std::vector< std::vector< int > > &connectionsToProcsOut, std::vector< std::vector< int > > &connectionsToSubDomsOut, IndexLayout &masterLayout, IndexLayout &slaveLayout, int highestReferencedIndex, pcl::IDomainDecompositionInfo &ddinfo)
 fills a connection list, which gives the connected processes to each interface. More...
 
template<typename TVector >
void ug::ConsistentToUnique (TVector *pVec, const IndexLayout &slaveLayout)
 changes parallel storage type from consistent to unique More...
 
template<typename TVector >
void ug::CopyValues (TVector *pVec, const IndexLayout &sourceLayout, const IndexLayout &targetLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 Copies values from the source to the target layout. More...
 
template<class TLayout >
void ug::GenerateGlobalAlgebraIDs (pcl::InterfaceCommunicator< TLayout > &communicator, std::vector< AlgebraID > &idsOut, size_t numIDs, const TLayout &masterLayout, const TLayout &slaveLayout)
 Generates a set of unique global algebra ids. More...
 
template<typename TMatrix >
void ug::MatAddSlaveRowsToMasterRowOverlap0 (TMatrix &mat)
 Generates a set of unique global algebra ids. More...
 
template<typename TMatrix >
void ug::MatMakeConsistentOverlap0 (TMatrix &mat)
 Generates a set of unique global algebra ids. More...
 
template<typename TVector >
void ug::ScaleLayoutValues (TVector *pVec, const IndexLayout &layout, number scale)
 scales the values of a vector by a given number only on the layout indices More...
 
template<typename TVector >
void ug::SetInterfaceValues (TVector *pVec, const IndexLayout::Interface &interface, typename TVector::value_type val)
 sets the values of a vector to a given number only on the interface indices More...
 
template<typename TVector >
void ug::SetLayoutValues (TVector *pVec, const IndexLayout &layout, typename TVector::value_type val)
 sets the values of a vector to a given number only on the layout indices More...
 
template<typename TVector >
void ug::UniqueToConsistent (TVector *pVec, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 changes parallel storage type from unique to consistent More...
 
template<typename TVector >
void ug::VecCopy (TVector *pVec, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 copy a vector only at a layout More...
 
template<typename TVector >
void ug::VecSubtractOneSlaveFromMaster (TVector *pVec, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 subtracts values of only one slave dof per master on layout More...
 
template<typename TVector >
void ug::VecSubtractOnLayout (TVector *pVec, const IndexLayout &masterLayout, const IndexLayout &slaveLayout, pcl::InterfaceCommunicator< IndexLayout > *pCom=NULL)
 subtracts values of slave layout from master layout and sets slave layouts to negative of difference More...
 

Macro Definition Documentation

◆ PROFILE_PARALLELIZATION_UTIL

#define PROFILE_PARALLELIZATION_UTIL

◆ PU_PROFILE_BEGIN

#define PU_PROFILE_BEGIN (   name)    PROFILE_BEGIN(name)

◆ PU_PROFILE_END

#define PU_PROFILE_END (   name)    PROFILE_END_(name)

◆ PU_PROFILE_FUNC

#define PU_PROFILE_FUNC ( )    PROFILE_FUNC()