1#ifndef FREE_TENSOR_TAPE_STRATEGY_H
2#define FREE_TENSOR_TAPE_STRATEGY_H
4#include <unordered_set>
24 std::unordered_set<std::variant<ID, std::string, Ref<Selector>>>
25 alwaysTape_, neverTape_;
32 : alwaysTape_(tape) {}
34 std::unordered_set<std::variant<
ID, std::string,
Ref<Selector>>> &&tape)
35 : alwaysTape_(
std::move(tape)) {}
38 : alwaysTape_(
std::ranges::begin(r),
std::ranges::end(r)) {}
44 ret.alwaysTape_.insert(std::ranges::begin(r), std::ranges::end(r));
50 ret.neverTape_.insert(std::ranges::begin(r), std::ranges::end(r));
Definition: tape_strategy.h:23
std::unordered_set< ID > getIdsToTape(const Stmt &ast) const
Definition: tape_strategy.cc:9
TapeStrategy(const std::ranges::range auto &r)
Definition: tape_strategy.h:37
TapeStrategy alwaysTape(const std::ranges::range auto &r)
Definition: tape_strategy.h:42
TapeStrategy neverTape(const std::ranges::range auto &r)
Definition: tape_strategy.h:48
TapeStrategy(GradTapeMode mode)
Definition: tape_strategy.h:40
TapeStrategy(std::unordered_set< std::variant< ID, std::string, Ref< Selector > > > &&tape)
Definition: tape_strategy.h:33
TapeStrategy(const std::unordered_set< std::variant< ID, std::string, Ref< Selector > > > &tape)
Definition: tape_strategy.h:29
Definition: allocator.h:9
GradTapeMode
Definition: tape_strategy.h:15
@ NoReuseOnly
Store nothing.
@ Nothing
Store all variables including local scalars.