MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / RunWithArgs

Method RunWithArgs

tensorflow/core/common_runtime/kernel_benchmark_testlib.cc:135–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

133}
134
135void Benchmark::RunWithArgs(
136 const std::vector<std::pair<const Node*, Tensor>>& inputs,
137 const std::vector<const Node*>& outputs, int iters) {
138 if (!device_ || iters == 0) {
139 return;
140 }
141 // Gets inputs' and outputs' rendezvous keys.
142 std::vector<std::pair<string, Tensor>> in;
143 in.reserve(inputs.size());
144 for (const auto& p : inputs) {
145 in.push_back({GetRendezvousKey(p.first), p.second});
146 }
147 std::vector<string> out;
148 out.reserve(outputs.size());
149 for (const auto& n : outputs) {
150 out.push_back(GetRendezvousKey(n));
151 }
152 Tensor unused; // In benchmark, we don't care the return value.
153 bool is_dead;
154
155 // Warm up
156 Executor::Args args;
157 args.rendezvous = rendez_;
158 args.runner = [this](std::function<void()> closure) {
159 pool_->Schedule(closure);
160 };
161 args.cost_runner = [this](std::function<void()> closure, int64 cost) {
162 pool_->CostSchedule(closure, cost);
163 };
164 static const int kWarmupRuns = 3;
165 for (int i = 0; i < kWarmupRuns; ++i) {
166 for (const auto& p : in) {
167 Rendezvous::ParsedKey parsed;
168 TF_CHECK_OK(Rendezvous::ParseKey(p.first, &parsed));
169 TF_CHECK_OK(rendez_->Send(parsed, Rendezvous::Args(), p.second, false));
170 }
171 TF_CHECK_OK(exec_->Run(args));
172 for (const string& key : out) {
173 Rendezvous::ParsedKey parsed;
174 TF_CHECK_OK(Rendezvous::ParseKey(key, &parsed));
175 TF_CHECK_OK(rendez_->Recv(parsed, Rendezvous::Args(), &unused, &is_dead));
176 }
177 }
178 TF_CHECK_OK(device_->Sync());
179 VLOG(3) << kWarmupRuns << " warmup runs done.";
180
181 testing::StartTiming();
182 while (iters-- > 0) {
183 for (const auto& p : in) {
184 Rendezvous::ParsedKey parsed;
185 TF_CHECK_OK(Rendezvous::ParseKey(p.first, &parsed));
186 TF_CHECK_OK(rendez_->Send(parsed, Rendezvous::Args(), p.second, false));
187 }
188 TF_CHECK_OK(exec_->Run(args));
189 for (const string& key : out) {
190 Rendezvous::ParsedKey parsed;
191 TF_CHECK_OK(Rendezvous::ParseKey(key, &parsed));
192 TF_CHECK_OK(rendez_->Recv(parsed, Rendezvous::Args(), &unused, &is_dead));

Callers 2

BM_FeedInputFetchOutputFunction · 0.80
BM_FeedInputFetchOutputFunction · 0.80

Calls 13

StartTimingFunction · 0.85
StopTimingFunction · 0.85
CostScheduleMethod · 0.80
GetRendezvousKeyFunction · 0.70
ArgsClass · 0.70
reserveMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45
ScheduleMethod · 0.45
SendMethod · 0.45
RunMethod · 0.45
RecvMethod · 0.45

Tested by

no test coverage detected