14 #ifndef TENSORFLOW_COMPILER_XLA_SERVICE_LLVM_COMPILER_H_ 15 #define TENSORFLOW_COMPILER_XLA_SERVICE_LLVM_COMPILER_H_ 16 #include "llvm/IR/Module.h" 40 using ModuleHook = std::function<Status(const llvm::Module&)>;
41 void SetPreOptimizationHook(ModuleHook hook) {
42 CHECK(!user_pre_optimization_hook_)
43 <<
"Pre-optimization hook is already set";
44 CHECK(hook) <<
"hook cannot be null";
45 user_pre_optimization_hook_ = hook;
47 void RemovePreOptimizationHook() { user_pre_optimization_hook_ =
nullptr; }
48 void SetPostOptimizationHook(ModuleHook hook) {
49 CHECK(!user_post_optimization_hook_)
50 <<
"Post-optimization hook is already set";
51 CHECK(hook) <<
"hook cannot be null";
52 user_post_optimization_hook_ = hook;
54 void RemovePostOptimizationHook() { user_post_optimization_hook_ =
nullptr; }
64 using Compiler::RunBackend;
65 using Compiler::RunHloPasses;
66 StatusOr<std::vector<std::unique_ptr<Executable>>> Compile(
67 std::vector<std::unique_ptr<HloModule>> modules,
68 std::vector<std::vector<perftools::gputools::StreamExecutor*>>
70 DeviceMemoryAllocator* device_allocator)
override;
72 ModuleHook user_pre_optimization_hook_;
73 ModuleHook user_post_optimization_hook_;
76 #endif // TENSORFLOW_COMPILER_XLA_SERVICE_LLVM_COMPILER_H_ Definition: llvm_compiler.h:34
namespace for xla
Definition: client_library.cc:26
Definition: compiler.h:92