Skip to content

Commit

Permalink
[stream_executor:host] Add HostExecutionEngine
Browse files Browse the repository at this point in the history
This is a part of the ongoing effort openxla/xla#7234
Add:
- RuntimeExecutionEngine class which compiles LLVM IR into kernel. This is a simplified copy-paste from runtime/execution_engine
- HostExecutionEngine virtual base class which contains JIT-compiled function.
- LlvmExecutionEngine, which uses two classes above to compile LLVM IR and store result.
- Dummy CppExecutionEngine for kernels written in C++ and precompiled together with XLA.
- HostKernelTest.LlvmAddition test which verifies only compilation (for now).
PiperOrigin-RevId: 631506020
  • Loading branch information
tvladyslav authored and tensorflower-gardener committed May 7, 2024
1 parent a01c5c6 commit 15f8f10
Show file tree
Hide file tree
Showing 8 changed files with 768 additions and 16 deletions.
63 changes: 62 additions & 1 deletion third_party/xla/xla/stream_executor/host/BUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
# Description:
# Host-platform specific StreamExecutor support code.

load(
"@local_tsl//tsl/platform:build_config_root.bzl",
"if_llvm_aarch32_available",
"if_llvm_aarch64_available",
"if_llvm_powerpc_available",
"if_llvm_system_z_available",
"if_llvm_x86_available",
)
load("@local_tsl//tsl/platform:rules_cc.bzl", "cc_library")
load("//xla:xla.bzl", "xla_cc_test")
load("//xla/stream_executor:build_defs.bzl", "stream_executor_friends")
Expand Down Expand Up @@ -81,15 +89,60 @@ cc_library(
hdrs = ["host_kernel_c_api.h"],
)

cc_library(
name = "host_execution_engine",
srcs = ["host_execution_engine.cc"],
hdrs = ["host_execution_engine.h"],
deps = [
":host_kernel_c_api",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/types:span",
"@llvm-project//llvm:Analysis",
"@llvm-project//llvm:AsmParser",
"@llvm-project//llvm:Core",
"@llvm-project//llvm:ExecutionEngine",
"@llvm-project//llvm:JITLink",
"@llvm-project//llvm:OrcJIT",
"@llvm-project//llvm:OrcShared",
"@llvm-project//llvm:Passes",
"@llvm-project//llvm:Support",
"@llvm-project//llvm:Target",
"@llvm-project//llvm:TargetParser",
"@llvm-project//llvm:TransformUtils",
"@llvm-project//llvm:ir_headers",
"@local_tsl//tsl/platform:statusor",
] + if_llvm_aarch32_available([
"@llvm-project//llvm:ARMAsmParser",
"@llvm-project//llvm:ARMCodeGen",
]) + if_llvm_aarch64_available([
"@llvm-project//llvm:AArch64AsmParser",
"@llvm-project//llvm:AArch64CodeGen",
]) + if_llvm_powerpc_available([
"@llvm-project//llvm:PowerPCAsmParser",
"@llvm-project//llvm:PowerPCCodeGen",
]) + if_llvm_system_z_available([
"@llvm-project//llvm:SystemZAsmParser",
"@llvm-project//llvm:SystemZCodeGen",
]) + if_llvm_x86_available([
"@llvm-project//llvm:X86AsmParser",
"@llvm-project//llvm:X86CodeGen",
]),
)

cc_library(
name = "host_kernel",
srcs = ["host_kernel.cc"],
hdrs = ["host_kernel.h"],
deps = [
":host_execution_engine",
":host_kernel_c_api",
"//xla/stream_executor",
"//xla/stream_executor:device_memory",
"//xla/stream_executor:stream_executor_interface",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/types:span",
Expand All @@ -102,9 +155,12 @@ xla_cc_test(
deps = [
":host_kernel",
":host_kernel_c_api",
":host_platform",
"//xla/stream_executor",
"//xla/stream_executor:device_memory",
"@com_google_absl//absl/types:span",
"@local_tsl//tsl/lib/core:status_test_util",
"@local_tsl//tsl/platform:statusor",
"@local_tsl//tsl/platform:test",
"@local_tsl//tsl/platform:test_main",
],
Expand All @@ -119,17 +175,22 @@ cc_library(
"host_executor.h",
],
deps = [
":host_execution_engine",
":host_kernel",
":host_stream",
"//xla/stream_executor",
"//xla/stream_executor:event_interface",
"//xla/stream_executor:stream_executor_interface",
"@com_google_absl//absl/functional:any_invocable",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/synchronization",
"@com_google_absl//absl/types:span",
"@local_tsl//tsl/platform:platform_port",
"@local_tsl//tsl/platform:statusor",
"@local_tsl//tsl/platform/profile_utils:profile_utils_cpu_utils",
],
alwayslink = True,
Expand Down
Loading

0 comments on commit 15f8f10

Please sign in to comment.