Radix/runtimes/neuron/BUILD.bazel

133 lines
3.1 KiB
Python

load("@com_google_protobuf//bazel:upb_proto_library.bzl", "upb_c_proto_library")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_python//python/uv:lock.bzl", uv_lock = "lock")
load("@rules_zig//zig:defs.bzl", "zig_binary", "zig_library", "zig_shared_library")
load("@zml//bazel:runfiles.bzl", "runfiles_to_default")
# A proxy PJRT Plugin that loads the Neuron PJRT Plugin
# and returns the instance from nested GetPjrtApi.
#
# Additionally, it provides a way to load implicit transitive dependencies
# of neuronx-cc (see add_needed of the patchelf target below).
zig_shared_library(
name = "libpjrt_neuron",
zigopts = ["-fno-stack-check"],
main = "libpjrt_neuron.zig",
visibility = ["@libpjrt_neuron//:__subpackages__"],
deps = [
":libpython",
"//stdx",
"@rules_zig//zig/runfiles",
"@xla//xla/pjrt/c:pjrt_c_api_hdrs",
],
)
zig_binary(
name = "neuronx-cc",
data = ["@neuron_py_deps//neuronx_cc"],
linkopts = ["-Wl,-rpath,$$ORIGIN/../lib"],
main = "neuronx-cc.zig",
tags = ["manual"],
deps = [":libpython"],
)
runfiles_to_default(
name = "neuronx-cc_files",
visibility = ["@libpjrt_neuron//:__subpackages__"],
deps = [":neuronx-cc"],
)
cc_library(
name = "libpython",
hdrs = ["libpython.h"],
deps = [
"@rules_python//python/cc:current_py_cc_headers",
"@rules_python//python/cc:current_py_cc_libs",
],
)
cc_library(
name = "empty",
defines = ["ZML_RUNTIME_NEURON_DISABLED"],
)
cc_library(
name = "zmlxneuron",
defines = ["ZML_RUNTIME_NEURON"],
)
cc_library(
name = "libnrt_headers",
hdrs = ["nrt.h"],
deps = ["@libpjrt_neuron//:libnrt_headers"],
)
filegroup(
name = "layers",
srcs = [],
visibility = ["//visibility:public"],
)
upb_c_proto_library(
name = "xla_data_upb",
deps = ["@xla//xla:xla_data_proto"],
)
upb_c_proto_library(
name = "hlo_proto_upb",
deps = ["@xla//xla/service:hlo_proto"],
)
zig_shared_library(
name = "libneuronxla",
zigopts = [
"-fno-stack-check",
"-fPIC",
],
main = "libneuronxla.zig",
shared_lib_name = "libneuronxla.so",
visibility = ["@libpjrt_neuron//:__subpackages__"],
deps = [
":hlo_proto_upb",
":libpython",
":xla_data_upb",
"//stdx",
"//upb",
],
)
uv_lock(
name = "requirements",
srcs = ["requirements.in"],
out = "requirements.lock.txt",
args = [
"--emit-index-url",
"--emit-find-links",
"--index-strategy=unsafe-best-match",
"--upgrade",
],
python_version = "3.11",
tags = ["manual"],
)
zig_library(
name = "neuron",
import_name = "runtimes/neuron",
main = "neuron.zig",
visibility = ["//visibility:public"],
deps = [
"//pjrt",
] + select({
"//runtimes:neuron.enabled": [
":libnrt_headers",
":libpython",
":zmlxneuron",
"//async",
"//stdx",
"@libpjrt_neuron",
"@rules_zig//zig/runfiles",
],
"//conditions:default": [":empty"],
}),
)