14 #ifndef TENSORFLOW_COMPILER_XLA_SERVICE_CPU_CPU_COMPILER_H_ 15 #define TENSORFLOW_COMPILER_XLA_SERVICE_CPU_CPU_COMPILER_H_ 17 #include "tensorflow/compiler/xla/service/executable.h" 20 #include "tensorflow/compiler/xla/statusor.h" 21 #include "tensorflow/core/lib/gtl/array_slice.h" 22 #include "tensorflow/core/platform/macros.h" 23 #include "tensorflow/core/platform/stream_executor_no_cuda.h" 32 class CpuAotCompilationOptions :
public AotCompilationOptions {
35 enum class RelocationModel {
47 CpuAotCompilationOptions(
string triple,
string cpu_name,
string features,
48 string entry_point_name,
49 RelocationModel relocation_model);
50 ~CpuAotCompilationOptions()
override;
51 perftools::gputools::Platform::Id PlatformId()
const override;
53 const string& triple()
const {
return triple_; }
55 const string& cpu_name()
const {
return cpu_name_; }
57 const string& features()
const {
return features_; }
59 const string& entry_point_name()
const {
return entry_point_name_; }
61 RelocationModel relocation_model()
const {
return relocation_model_; }
64 const string cpu_name_;
65 const string features_;
66 const string entry_point_name_;
67 const RelocationModel relocation_model_;
69 class CpuAotCompilationResult :
public AotCompilationResult {
71 CpuAotCompilationResult(ObjectFileData object_file_data,
72 BufferSizes buffer_sizes, int64 result_buffer_index);
73 ~CpuAotCompilationResult();
74 const ObjectFileData& object_file_data()
const {
return object_file_data_; }
75 const BufferSizes& buffer_sizes()
const {
return buffer_sizes_; }
76 int64 result_buffer_index()
const {
return result_buffer_index_; }
79 const ObjectFileData object_file_data_;
83 const BufferSizes buffer_sizes_;
87 const int64 result_buffer_index_;
106 using LLVMCompiler::Compile;
107 StatusOr<std::unique_ptr<HloModule>> RunHloPasses(
108 std::unique_ptr<HloModule> module,
109 perftools::gputools::StreamExecutor* stream_exec,
110 DeviceMemoryAllocator* device_allocator)
override;
111 StatusOr<std::unique_ptr<Executable>> RunBackend(
112 std::unique_ptr<HloModule> module,
113 perftools::gputools::StreamExecutor* stream_exec,
114 DeviceMemoryAllocator* device_allocator)
override;
115 StatusOr<std::vector<std::unique_ptr<AotCompilationResult>>>
117 const AotCompilationOptions& options)
override;
118 perftools::gputools::Platform::Id PlatformId()
const override;
119 HloCostAnalysis::ShapeSizeFunction ShapeSizeBytesFunction()
const override;
122 static void InitializeLLVMTarget();
125 Status RunHloPasses(
HloModule* module,
bool is_aot_compile);
130 #endif // TENSORFLOW_COMPILER_XLA_SERVICE_CPU_CPU_COMPILER_H_ StatusOr< std::vector< std::unique_ptr< AotCompilationResult > > > CompileAheadOfTime(std::vector< std::unique_ptr< HloModule >> modules, const AotCompilationOptions &options) override
Definition: cpu_compiler.cc:726
Definition: llvm_compiler.h:34
Definition: cpu_compiler.h:97
namespace for xla
Definition: client_library.cc:26
Definition: hlo_module.h:52