souffle
2.0.2-371-g6315b36
|
Go to the documentation of this file.
62 const std::string& name,
const std::vector<RamDomain>& args, std::vector<RamDomain>& ret);
70 void swapRelation(
const size_t ramRel1,
const size_t ramRel2);
84 const std::vector<void*>&
loadDLL();
99 template <
typename Rel>
102 template <
typename Rel>
105 template <
typename Rel>
108 template <
typename Rel>
112 template <
typename Rel>
115 template <
typename Rel>
119 template <
typename Rel>
122 template <
typename Rel>
126 template <
typename Rel>
129 template <
typename Rel>
133 template <
typename Aggregate,
typename Iter>
135 const Node& nestedOperation,
const Iter& ranges,
Context& ctxt);
137 template <
typename Rel>
141 template <
typename Rel>
145 template <
typename Rel>
148 template <
typename Rel>
166 std::map<std::string, std::deque<std::atomic<size_t>>>
frequencies;
168 std::map<std::string, std::atomic<size_t>>
reads;
std::vector< void * > dll
DLL.
size_t numOfThreads
Number of threads enabled for this program.
void executeSubroutine(const std::string &name, const std::vector< RamDomain > &args, std::vector< RamDomain > &ret)
Execute the subroutine program.
void dropRelation(const size_t relId)
Remove a relation from the environment.
VecOwn< RelationHandle > relations
Symbol table for relations.
int incCounter()
Increment the counter.
Search for tuples of a relation matching a criteria.
void createRelation(const ram::Relation &id, const size_t idx)
Create and add relation into the runtime environment.
std::atomic< RamDomain > counter
Profile counter.
RamDomain evalParallelScan(const Rel &rel, const ram::ParallelScan &cur, const ParallelScan &shadow, Context &ctxt)
RecordTable & getRecordTable()
Return the record table.
void executeMain()
Execute the main program.
RamDomain evalParallelIndexChoice(const Rel &rel, const ram::ParallelIndexChoice &cur, const ParallelIndexChoice &shadow, Context &ctxt)
This is a shadow node for a ram::Node that is enriched for with local information so that the interpr...
RamDomain evalExistenceCheck(const ExistenceCheck &shadow, Context &ctxt)
RamDomain evalAggregate(const Aggregate &aggregate, const Node &filter, const Node *expression, const Node &nestedOperation, const Iter &ranges, Context &ctxt)
const bool isProvenance
If running a provenance program.
Use an index to find a tuple in a relation such that a given condition holds in parallel.
Engine(ram::TranslationUnit &tUnit)
ram::analysis::IndexAnalysis * isa
IndexAnalysis.
const bool profileEnabled
If profile is enable in this program.
size_t iteration
Loop iteration counter.
void * getMethodHandle(const std::string &method)
Return method handler.
void swapRelation(const size_t ramRel1, const size_t ramRel2)
Swap the content of two relations.
ram::TranslationUnit & tUnit
Program.
RelationHandle & getRelationHandle(const size_t idx)
Return a reference to the relation on the given index.
RamDomain evalParallelChoice(const Rel &rel, const ram::ParallelChoice &cur, const ParallelChoice &shadow, Context &ctxt)
Translating a RAM program.
RecordTable recordTable
Record Table.
RamDomain evalScan(const Rel &rel, const ram::Scan &cur, const Scan &shadow, Context &ctxt)
std::vector< A > filter(std::vector< A > xs, F &&f)
Filter a vector to include certain elements.
Aggregate over values of a relation using an index in parallel.
An abstract class for performing indexed operations.
RamDomain evalProvenanceExistenceCheck(const ProvenanceExistenceCheck &shadow, Context &ctxt)
Parallel Aggregation function applied on some relation.
void resetIterationNumber()
Reset iteration number.
VecOwn< RelationHandle > & getRelationMap()
Return the relation map.
Use an index to find a tuple in a relation such that a given condition holds.
Indexed aggregation on a relation. The index allows us to iterate over a restricted range.
Iterate all tuples of a relation in parallel.
RamDomain evalParallelIndexScan(const Rel &rel, const ram::ParallelIndexScan &cur, const ParallelIndexScan &shadow, Context &ctxt)
RamDomain execute(const Node *, Context &)
Execute the program.
RamDomain evalProject(Rel &rel, const Project &shadow, Context &ctxt)
VecOwn< Node > subroutine
subroutines
size_t getIterationNumber() const
Return current iteration number for loop operation.
RamDomain evalIndexScan(const ram::IndexScan &cur, const IndexScan &shadow, Context &ctxt)
Find a tuple in a relation such that a given condition holds.
Iterate all tuples of a relation.
Search for tuples of a relation matching a criteria.
ram::TranslationUnit & getTranslationUnit()
Return the ram::TranslationUnit.
Own< RelationWrapper > RelationHandle
RamDomain evalIndexChoice(const ram::IndexChoice &cur, const IndexChoice &shadow, Context &ctxt)
RamDomain evalParallelIndexAggregate(const ram::ParallelIndexAggregate &cur, const ParallelIndexAggregate &shadow, Context &ctxt)
Own< Node > main
main program
std::map< std::string, std::atomic< size_t > > reads
Profile for relation reads.
RamDomain evalParallelAggregate(const Rel &rel, const ram::ParallelAggregate &cur, const ParallelAggregate &shadow, Context &ctxt)
RamDomain evalIndexAggregate(const ram::IndexAggregate &cur, const IndexAggregate &shadow, Context &ctxt)
void rel(size_t limit, bool showLimit=true)
void incIterationNumber()
Increase iteration number by one.
void generateIR()
Generate intermediate representation from RAM.
std::vector< Own< A > > VecOwn
RamDomain evalChoice(const Rel &rel, const ram::Choice &cur, const Choice &shadow, Context &ctxt)
const std::vector< void * > & loadDLL()
Load DLL.
Evaluation context for Interpreter operations.
std::map< std::string, std::deque< std::atomic< size_t > > > frequencies
Profile for rule frequencies.
Find a tuple in a relation such that a given condition holds in parallel.
SymbolTable & getSymbolTable()
Return the string symbol table.