46 cached_estimated_cost(0) {}
51 void get_outputs(std::set<Idx_Tensor*, CTF_int::tensor_name_less >* outputs_set)
const;
57 void get_inputs(std::set<Idx_Tensor*, CTF_int::tensor_name_less >* inputs_set)
const;
63 void execute(std::map<CTF_int::tensor*, CTF_int::tensor*>* remap = NULL);
68 double estimate_time();
81 std::vector<TensorOperation* >
reads;
92 return lhs->parent->name;
122 imbalance_wall_time(0),
123 imbalance_acuum_time(0),
182 partitions = in_partitions;
a term is an abstract object representing some expression of tensors
virtual ~TensorOperationBase()
void operator+=(ScheduleTimer const &B)
A tensor operation, containing all the data (op, lhs, rhs) required to run it. Also provides methods ...
an instance of the CTF library (world) on a MPI communicator
std::deque< TensorOperation * > root_tasks
const CTF_int::Term * rhs
std::deque< TensorOperation * > steps_original
TensorOperation(TensorOperationTypes op, Idx_Tensor *lhs, const CTF_int::Term *rhs)
Constructor, create the tensor operation lhs op= rhs.
std::vector< TensorOperation * > successors
std::map< CTF_int::tensor *, TensorOperation * > latest_write
Schedule(World *world=NULL)
Constructor, optionally specifying a world to restrict processor allocations to.
Provides a untemplated base class for tensor operations.
double imbalance_acuum_time
std::vector< TensorOperation * > reads
double cached_estimated_cost
double imbalance_wall_time
ScheduleBase * global_schedule
void set_max_partitions(int in_partitions)
std::deque< TensorOperation * > ready_tasks
a tensor with an index map associated with it (necessary for overloaded operators) ...