STT-tensorflow/third_party/libxsmm.BUILD

120 lines
3.3 KiB
Plaintext

# Description:
# LIBXSMM: Library for small matrix-matrix multiplications targeting Intel Architecture (x86).
licenses(["notice"]) # BSD 3-clause
exports_files(["LICENSE.md"])
# Arguments to ./scripts/libxsmm_interface.py, see that file for detailed description.
# precision: SP & DP
# prefetch: 1 (auto)
libxsmm_interface_arguments = "0 1"
# Arguments to ./scripts/libxsmm_config.py, see that file for detailed description.
# rely on default arguments
libxsmm_config_arguments = ""
# Arguments to ./scripts/libxsmm_dispatch.py, see that file for detailed description.
# (dummy argument)
libxsmm_dispatch_arguments = "0"
genrule(
name = "libxsmm_headers",
srcs = [
"src/template/libxsmm.h",
"src/template/libxsmm_config.h",
],
outs = [
"include/libxsmm.h",
"include/libxsmm_config.h",
"include/libxsmm_dispatch.h",
],
cmd = "$(location :libxsmm_interface) $(location src/template/libxsmm.h) " + libxsmm_interface_arguments + " > $(location include/libxsmm.h);" +
"$(location :libxsmm_config) $(location src/template/libxsmm_config.h) " + libxsmm_config_arguments + " > $(location include/libxsmm_config.h);" +
"$(location :libxsmm_dispatch) " + libxsmm_dispatch_arguments + " > $(location include/libxsmm_dispatch.h)",
tools = [
":libxsmm_config",
":libxsmm_dispatch",
":libxsmm_interface",
],
visibility = [
"//tensorflow/core/kernels:__pkg__",
"//third_party/eigen3:__pkg__",
],
)
cc_library(
name = "xsmm_avx",
srcs = glob(
[
# general source files (translation units)
"src/generator_*.c",
"src/libxsmm_*.c",
],
exclude = [
# exclude generators (with main functions)
"src/libxsmm_generator_*.c",
],
),
hdrs = glob(
[
# general header files
"include/libxsmm_*.h",
# trigger rebuild if template changed
"src/template/*.c",
],
exclude = [
# exclude existing/generated headers
"include/libxsmm.h",
"include/libxsmm_config.h",
"include/libxsmm_dispatch.h",
],
) + [
# source files included internally
"src/libxsmm_hash.c",
# generated header files
"include/libxsmm.h",
"include/libxsmm_config.h",
"include/libxsmm_dispatch.h",
],
#copts = [
# "-mavx", # JIT does not work without avx anyway, and this silences some CRC32 warnings.
# "-Wno-vla", # Libxsmm convolutions heavily use VLA.
#],
defines = [
"LIBXSMM_BUILD",
"LIBXSMM_CTOR",
"__BLAS=0",
],
includes = [
"include",
"src",
"src/template",
],
visibility = ["//visibility:public"],
)
py_library(
name = "libxsmm_scripts",
srcs = glob(["scripts/*.py"]),
data = ["version.txt"],
)
py_binary(
name = "libxsmm_interface",
srcs = ["scripts/libxsmm_interface.py"],
deps = [":libxsmm_scripts"],
)
py_binary(
name = "libxsmm_config",
srcs = ["scripts/libxsmm_config.py"],
deps = [":libxsmm_scripts"],
)
py_binary(
name = "libxsmm_dispatch",
srcs = ["scripts/libxsmm_dispatch.py"],
deps = [":libxsmm_scripts"],
)