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

Method CompileStrict

tensorflow/compiler/jit/xla_compilation_cache.cc:247–301  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

245} // namespace
246
247Status XlaCompilationCache::CompileStrict(
248 Entry* entry, const XlaCompiler::Options& options,
249 const std::vector<XlaCompiler::Argument>& args,
250 const string &function_name,
251 const std::function<Status(XlaCompiler* compiler,
252 const std::vector<XlaCompiler::Argument>& args,
253 XlaCompiler::CompilationResult*)>& compile_fn) {
254 tensorflow::Env* env = tensorflow::Env::Default();
255 const uint64 compile_start_us = env->NowMicros();
256
257 XlaCompiler compiler(options);
258 entry->compile_state = CompileState::kCompiled;
259
260 entry->compilation_status =
261 compile_fn(&compiler, args, &entry->compilation_result);
262 TF_RETURN_IF_ERROR(entry->compilation_status);
263 CHECK_EQ(entry->executable.get(), nullptr);
264 entry->compilation_status =
265 BuildExecutable(options, entry->compilation_result, &entry->executable);
266
267 const uint64 compile_end_us = env->NowMicros();
268 const uint64 compile_time_us = compile_end_us - compile_start_us;
269 metrics::UpdateXlaCompilationTime(compile_time_us);
270 {
271 mutex_lock lock(cluster_compile_stats_mu_);
272 auto it = cluster_compile_stats_.find(function_name);
273 const uint64 compile_time_s = compile_time_us / 1.0e6;
274 it->second.compile_count++;
275 it->second.cumulative_compile_time_us += compile_time_us;
276 it->second.max_compile_time_s = std::max(it->second.max_compile_time_s,
277 compile_time_s);
278 LogOnceXlaCompiledFirstCluster();
279 VLOG(1) << "compiled " << function_name << " "
280 << it->second.compile_count
281 << " times, compile time: " << compile_time_us
282 << " us, cumulative: " << it->second.cumulative_compile_time_us
283 << " us ("
284 << tensorflow::strings::HumanReadableElapsedTime(compile_time_s)
285 << " / "
286 << tensorflow::strings::HumanReadableElapsedTime(
287 it->second.cumulative_compile_time_us / 1.0e6)
288 << ")";
289
290 XlaJitCompilationActivity jit_compilation_activity;
291 jit_compilation_activity.set_cluster_name(function_name);
292 jit_compilation_activity.set_compile_count(it->second.compile_count);
293 jit_compilation_activity.set_compile_time_us(compile_time_us);
294 jit_compilation_activity.set_cumulative_compile_time_us(
295 it->second.cumulative_compile_time_us);
296 TF_RETURN_IF_ERROR(
297 BroadcastXlaActivity(std::move(jit_compilation_activity)));
298 }
299
300 return Status::OK();
301}
302
303Status XlaCompilationCache::CompileAsynchronous(
304 Entry* entry, const XlaCompiler::Options& options,

Callers

nothing calls this directly

Calls 9

DefaultFunction · 0.85
UpdateXlaCompilationTimeFunction · 0.85
HumanReadableElapsedTimeFunction · 0.85
BroadcastXlaActivityFunction · 0.85
maxFunction · 0.50
NowMicrosMethod · 0.45
getMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected