CGRA-ME
Functions
OpGraph.cpp File Reference
#include <CGRA/OpGraph.h>
#include <CGRA/Exception.h>
#include <CGRA/GraphAlgorithms.h>
#include <CGRA/utility/ConfigGraph.h>
#include <CGRA/MRRGProcedures.h>
#include <CGRA/dotparse.h>
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <limits>
#include <fstream>

Go to the source code of this file.

Functions

std::ostream & operator<< (std::ostream &os, const OpGraphOpCode &opcode)
 
const std::string & to_string (const OpGraphOpCode &opcode)
 
OpGraphOpCode opcode_from_string (const std::string &str)
 
std::istream & operator>> (std::istream &is, OpGraphOpCode &opcode)
 
std::ostream & operator<< (std::ostream &output, const OpGraphOp &op)
 
std::ostream & operator<< (std::ostream &output, const OpGraphVal &val)
 
OpSchedule computeASAP (const OpGraph &op_graph)
 
OpSchedule computeALAP (const OpGraph &op_graph, unsigned int max_cycles)
 
bool verifyAndPrintReport (const OpGraph &opgraph, std::ostream &os, bool silent_on_no_errors, bool throw_if_errors)
 
bool analyzeOpgraphVerifyResults (std::ostream &os, const std::vector< OpGraph::VerifyMessage > &messages, const bool silent_on_no_errors)
 
static void dfs_visit (int time, int &longest_cycle, std::map< OpGraphOp *, int > &dfs_colour, std::map< OpGraphOp *, int > &dfs_timestamp, OpGraphOp *op)
 
bool operator== (const OpGraph &lhs, const OpGraph &rhs)
 
OpGraphTransformResult filter (const OpGraph &src, const std::set< OpGraph::OpDescriptor > &allowed_ops)
 
std::set< OpGraph::OpDescriptor > findNDownstreamOps (const OpGraph &opgraph, const std::vector< OpGraphOp * > &starting_points, const std::ptrdiff_t n_ops)
 
std::ostream & operator<< (std::ostream &os, const OpGraph::EdgeDescriptor &ed)
 
std::ostream & operator<< (std::ostream &os, const OpGraph::VerifyMessage::Type &vm_type)
 

Function Documentation

◆ analyzeOpgraphVerifyResults()

bool analyzeOpgraphVerifyResults ( std::ostream &  os,
const std::vector< OpGraph::VerifyMessage > &  messages,
const bool  silent_on_no_errors 
)

A helper for the verifyAndPrintReport function

Definition at line 800 of file OpGraph.cpp.

◆ computeALAP()

OpSchedule computeALAP ( const OpGraph &  op_graph,
unsigned int  max_cycles 
)

Definition at line 629 of file OpGraph.cpp.

◆ computeASAP()

OpSchedule computeASAP ( const OpGraph &  op_graph)

Definition at line 572 of file OpGraph.cpp.

◆ dfs_visit()

static void dfs_visit ( int  time,
int &  longest_cycle,
std::map< OpGraphOp *, int > &  dfs_colour,
std::map< OpGraphOp *, int > &  dfs_timestamp,
OpGraphOp *  op 
)
static

Definition at line 834 of file OpGraph.cpp.

◆ filter()

OpGraphTransformResult filter ( const OpGraph &  src,
const std::set< OpGraph::OpDescriptor > &  allowed_ops 
)

Return a new graph with only the allowed_ops present

Definition at line 1212 of file OpGraph.cpp.

◆ findNDownstreamOps()

std::set<OpGraph::OpDescriptor> findNDownstreamOps ( const OpGraph &  opgraph,
const std::vector< OpGraphOp * > &  starting_points,
const std::ptrdiff_t  n_ops 
)

Starting from starting_points, does a fanout BFS to find at least the given number of ops, including the starting points. If this function must return an op to find enough ops, then it will return all ops at that distance from the starting points. This way, it is independent of OpGraph's implementation details.

Definition at line 1246 of file OpGraph.cpp.

◆ opcode_from_string()

OpGraphOpCode opcode_from_string ( const std::string &  str)

Definition at line 113 of file OpGraph.cpp.

◆ operator<<() [1/5]

std::ostream& operator<< ( std::ostream &  os,
const OpGraph::EdgeDescriptor &  ed 
)

Definition at line 1278 of file OpGraph.cpp.

◆ operator<<() [2/5]

std::ostream& operator<< ( std::ostream &  os,
const OpGraph::VerifyMessage::Type &  vm_type 
)
inline

Definition at line 1282 of file OpGraph.cpp.

◆ operator<<() [3/5]

std::ostream& operator<< ( std::ostream &  os,
const OpGraphOpCode &  opcode 
)

Definition at line 100 of file OpGraph.cpp.

◆ operator<<() [4/5]

std::ostream& operator<< ( std::ostream &  output,
const OpGraphOp &  op 
)

Definition at line 559 of file OpGraph.cpp.

◆ operator<<() [5/5]

std::ostream& operator<< ( std::ostream &  output,
const OpGraphVal &  val 
)

Definition at line 565 of file OpGraph.cpp.

◆ operator==()

bool operator== ( const OpGraph &  lhs,
const OpGraph &  rhs 
)

Definition at line 1159 of file OpGraph.cpp.

◆ operator>>()

std::istream& operator>> ( std::istream &  is,
OpGraphOpCode &  opcode 
)

Definition at line 140 of file OpGraph.cpp.

◆ to_string()

const std::string& to_string ( const OpGraphOpCode &  opcode)

Definition at line 111 of file OpGraph.cpp.

◆ verifyAndPrintReport()

bool verifyAndPrintReport ( const OpGraph &  opgraph,
std::ostream &  os,
bool  silent_on_no_errors,
bool  throw_if_errors 
)

A routine for verifying the OpGraph. Prints out a success message, unless told not to. Can throw if errors are found. Returns true if no errors found

Definition at line 790 of file OpGraph.cpp.