221 lines
4.8 KiB
Smarty
221 lines
4.8 KiB
Smarty
load(":build_defs.bzl", "cuda_header_library")
|
|
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
|
|
|
|
licenses(["restricted"]) # MPL2, portions GPL v3, LGPL v3, BSD-like
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
config_setting(
|
|
name = "using_nvcc",
|
|
values = {
|
|
"define": "using_cuda_nvcc=true",
|
|
},
|
|
)
|
|
|
|
config_setting(
|
|
name = "using_clang",
|
|
values = {
|
|
"define": "using_cuda_clang=true",
|
|
},
|
|
)
|
|
|
|
# Equivalent to using_clang && -c opt.
|
|
config_setting(
|
|
name = "using_clang_opt",
|
|
values = {
|
|
"define": "using_cuda_clang=true",
|
|
"compilation_mode": "opt",
|
|
},
|
|
)
|
|
|
|
config_setting(
|
|
name = "darwin",
|
|
values = {"cpu": "darwin"},
|
|
)
|
|
|
|
config_setting(
|
|
name = "freebsd",
|
|
values = {"cpu": "freebsd"},
|
|
)
|
|
|
|
# Provides CUDA headers for '#include "third_party/gpus/cuda/include/cuda.h"'
|
|
# All clients including TensorFlow should use these directives.
|
|
cuda_header_library(
|
|
name = "cuda_headers",
|
|
hdrs = [
|
|
"cuda/cuda_config.h",
|
|
":cuda-include"
|
|
],
|
|
include_prefix = "third_party/gpus",
|
|
includes = [
|
|
".", # required to include cuda/cuda/cuda_config.h as cuda/config.h
|
|
"cuda/include",
|
|
],
|
|
)
|
|
|
|
cc_import(
|
|
name = "cudart_static",
|
|
# /WHOLEARCHIVE:cudart_static.lib will cause a
|
|
# "Internal error during CImplib::EmitThunk" error.
|
|
# Treat this library as interface library to avoid being whole archived when
|
|
# linking a DLL that depends on this.
|
|
# TODO(pcloudy): Remove this rule after b/111278841 is resolved.
|
|
interface_library = "cuda/lib/%{cudart_static_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_import(
|
|
name = "cuda_driver",
|
|
interface_library = "cuda/lib/%{cuda_driver_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_import(
|
|
name = "cudart",
|
|
interface_library = "cuda/lib/%{cudart_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cuda_header_library(
|
|
name = "cublas_headers",
|
|
hdrs = [":cublas-include"],
|
|
include_prefix = "third_party/gpus/cuda/include",
|
|
includes = ["cublas/include"],
|
|
strip_include_prefix = "cublas/include",
|
|
deps = [":cuda_headers"],
|
|
)
|
|
|
|
cuda_header_library(
|
|
name = "cusolver_headers",
|
|
hdrs = [":cusolver-include"],
|
|
include_prefix = "third_party/gpus/cuda/include",
|
|
includes = ["cusolver/include"],
|
|
strip_include_prefix = "cusolver/include",
|
|
deps = [":cuda_headers"],
|
|
)
|
|
|
|
cuda_header_library(
|
|
name = "cufft_headers",
|
|
hdrs = [":cufft-include"],
|
|
include_prefix = "third_party/gpus/cuda/include",
|
|
includes = ["cufft/include"],
|
|
strip_include_prefix = "cufft/include",
|
|
deps = [":cuda_headers"],
|
|
)
|
|
|
|
cuda_header_library(
|
|
name = "cusparse_headers",
|
|
hdrs = [":cusparse-include"],
|
|
include_prefix = "third_party/gpus/cuda/include",
|
|
includes = ["cusparse/include"],
|
|
strip_include_prefix = "cusparse/include",
|
|
deps = [":cuda_headers"],
|
|
)
|
|
|
|
cuda_header_library(
|
|
name = "curand_headers",
|
|
hdrs = [":curand-include"],
|
|
include_prefix = "third_party/gpus/cuda/include",
|
|
includes = ["curand/include"],
|
|
strip_include_prefix = "curand/include",
|
|
deps = [":cuda_headers"],
|
|
)
|
|
|
|
cc_import(
|
|
name = "cublas",
|
|
interface_library = "cuda/lib/%{cublas_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_import(
|
|
name = "cusolver",
|
|
interface_library = "cuda/lib/%{cusolver_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_import(
|
|
name = "cudnn",
|
|
interface_library = "cuda/lib/%{cudnn_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_library(
|
|
name = "cudnn_header",
|
|
hdrs = [":cudnn-include"],
|
|
include_prefix = "third_party/gpus/cudnn",
|
|
strip_include_prefix = "cudnn/include",
|
|
deps = [":cuda_headers"],
|
|
)
|
|
|
|
cc_import(
|
|
name = "cufft",
|
|
interface_library = "cuda/lib/%{cufft_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_import(
|
|
name = "curand",
|
|
interface_library = "cuda/lib/%{curand_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_library(
|
|
name = "cuda",
|
|
deps = [
|
|
":cublas",
|
|
":cuda_headers",
|
|
":cudart",
|
|
":cudnn",
|
|
":cufft",
|
|
":curand",
|
|
],
|
|
)
|
|
|
|
cuda_header_library(
|
|
name = "cupti_headers",
|
|
hdrs = [":cuda-extras"],
|
|
include_prefix="third_party/gpus",
|
|
includes = ["cuda/extras/CUPTI/include/"],
|
|
deps = [":cuda_headers"],
|
|
)
|
|
|
|
cc_import(
|
|
name = "cupti_dsos",
|
|
interface_library = "cuda/lib/%{cupti_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_import(
|
|
name = "cusparse",
|
|
interface_library = "cuda/lib/%{cusparse_lib}",
|
|
system_provided = 1,
|
|
)
|
|
|
|
cc_library(
|
|
name = "libdevice_root",
|
|
data = [":cuda-nvvm"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "cuda_root",
|
|
srcs = [
|
|
"cuda/bin/fatbinary.exe",
|
|
"cuda/bin/bin2c.exe",
|
|
],
|
|
)
|
|
|
|
bzl_library(
|
|
name = "build_defs_bzl",
|
|
srcs = ["build_defs.bzl"],
|
|
deps = [
|
|
"@bazel_skylib//lib:selects",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "cuda_config_py",
|
|
srcs = ["cuda/cuda_config.py"]
|
|
)
|
|
|
|
%{copy_rules}
|