11 namespace frechet {
namespace reach {
28 mutable std::list<clmatrix_t*>
temps;
clmatrix_t * tempMatrix(int rows, int cols, MatrixPool *pool) const
allocate a temporary matrix
virtual void synchFromGpu() override
copy adjacancy matrix data back from GPU memory to CPU memory
GraphCL(const GraphModel::ptr model)
empty constructor
OpenCL boolean matrix data structure. Data is arranged in 32 bit words.
Reachability Graph with additional storage in GPU memory.
virtual void resetConditions() override
clmatrix_t * clmtx[2][2]
data stored on GPU memory
global definitions for all algorithms.
void copy(const GraphCL &that)
copy data
virtual void finalize() override
std::list< clmatrix_t * > temps
temporary matrixes
boost::shared_ptr< GraphModel > ptr
smart pointer to a GraphModel object
boost::shared_ptr< Graph > GraphPtr
virtual void combine(const Graph *P) override
apply the COMBINE operation, filtering edges with valid placements. Effectively performs a Boolean AN...
Manages OpenCL event dependencies; necessary when the queue is out-of-order; dependencies must be est...
virtual void merge2(const Graph *A, const Graph *B, MatrixPool *pool) override
apply the MERGE operation, computing the transitive closure of two graphs. Effectively performs a mat...
virtual void synchToGpu() override
copy adjacancy matrix data to GPU memory
GraphPtr newGraph(const GraphModel::ptr model)
virtual void release()
release memory for all parts of the adjacancy matrix
virtual void queryDiagonalElement() const override
find an edge on the diagonal of the adjacancy matrix. Does not return a result. To query the result o...
a range of node indices in a Reachability Graph
Orientation
Segment Orientation.
virtual ~GraphCL()
destructor; release all memory, including GPU memory
memory pool for matrix objects (M4RI matrices mzd_t* and OpenCL matrices clm4rm_t*)
Represents a Reachability Graph. Vertices correspond to intervals in the reachability structure,...
clm4rm_conditions cond
cl_events for out-of-order dependencies
cl_mem diagonalElementBuffer
result of searchDiagonalElement
void swap(GraphCL &that)
swap data
GraphCL & operator=(const GraphCL &that)
assginment operator
The Reachability Structure; maintains a list of intervals on the border of Free Space,...
const IndexRange & hmask() const
horizontal range covered by this graph
virtual int foundDiagonalElement() const override
virtual void merge3(const Graph *A, const Graph *B, MatrixPool *pool) override
apply the final MERGE operation, computing the transitive closure of two graphs. Effectively performs...