Radix/runtimes/neuron/libpjrt_neuron.BUILD.bazel

99 lines
2.9 KiB
Plaintext
Raw Normal View History

load("@aspect_bazel_lib//lib:copy_to_directory.bzl", "copy_to_directory")
load("@zml//bazel:patchelf.bzl", "patchelf")
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
load("@bazel_skylib//rules:select_file.bzl", "select_file")
load("@rules_cc//cc:cc_shared_library.bzl", "cc_shared_library")
load("@zml//bazel:runfiles.bzl", "runfiles_to_default")
load("@rules_python//python:py_binary.bzl", "py_binary")
runfiles_to_default(
name = "libneuronxla_files",
deps = ["@neuron_py_deps//libneuronxla:pkg"],
)
select_file(
name = "libneuronpjrt_so_orig",
srcs = ":libneuronxla_files",
subpath = "site-packages/libneuronxla/libneuronpjrt.so",
)
patchelf(
name = "libneuronpjrt_so",
set_rpath = '$ORIGIN',
src = ":libneuronpjrt_so_orig",
soname = "libneuronpjrt.so",
)
patchelf(
name = "libpjrt_neuron_so",
set_rpath = '$ORIGIN',
src = "@zml//runtimes/neuron:libpjrt_neuron",
soname = "libpjrt_neuron.so",
)
copy_to_directory(
name = "sandbox",
srcs = [
":libneuronpjrt_so",
":libpjrt_neuron_so",
"@zml//runtimes/neuron:neuronx-cc_files",
"@zml//runtimes/neuron:libneuronxla",
"@rules_python//python:current_py_toolchain",
"@aws-neuronx-runtime-lib//:libnrt.patchelf",
"@aws-neuronx-runtime-lib//:libncfw.patchelf",
"@aws-neuronx-collectives//:libnccom",
"@zlib1g",
"@libgomp1",
],
replace_prefixes = {
"runtimes/neuron/neuronx-cc": "bin/neuronx-cc",
"runtimes/neuron/libneuronxla.so": "site-packages/libneuronxla.so",
"libneuronpjrt_so": "lib",
"libpjrt_neuron_so": "lib",
"libnrt.patchelf": "lib",
"libncfw.patchelf": "lib",
"lib/x86_64-linux-gnu": "lib",
"usr/lib/x86_64-linux-gnu": "lib",
"opt/neuron": "lib",
},
exclude_srcs_patterns = [
"**/tests/**",
"**/include/**",
"**/_solib_*/**",
],
include_srcs_patterns = [
"runtimes/neuron/neuronx-cc",
"**/lib**",
"lib/python*/**",
"site-packages/**",
],
allow_overwrites = True,
add_directory_to_runfiles = False,
include_external_repositories = ["**"],
hardlink = "on",
)
cc_library(
name = "libnrt_headers",
deps = [
"@aws-neuronx-runtime-lib//:libnrt_headers",
],
linkopts = [
# Defer function call resolution until the function is called
# (lazy loading) rather than at load time.
#
# This is required because we want to let downstream use weak NRT symbols.
#
# We force it here because -z,now (which resolve all symbols at load time),
# is the default in most bazel CC toolchains as well as in certain linkers.
"-Wl,-z,lazy",
],
visibility = ["@zml//runtimes/neuron:__subpackages__"],
)
cc_library(
name = "libpjrt_neuron",
data = [":sandbox"],
visibility = ["@zml//runtimes/neuron:__subpackages__"],
)