diff options
author | A. Unique TensorFlower <gardener@tensorflow.org> | 2017-07-04 08:04:25 -0700 |
---|---|---|
committer | TensorFlower Gardener <gardener@tensorflow.org> | 2017-07-04 08:10:41 -0700 |
commit | 9ec810573bd3666e36f960923a8aff7cb72df1dc (patch) | |
tree | b385c0665a81621dbe7eae69e4e9ec45e47f6418 | |
parent | a7032f21d72dd051f09b94733ed890dcd7ceaac8 (diff) |
Symlink files for cuda configuration one level below the BUILD file (i.e., one level under local_config_cuda/cuda).
END_PUBLIC
BEGIN_PUBLIC
Automated g4 rollback of changelist 159643278
PiperOrigin-RevId: 160894669
-rw-r--r-- | third_party/gpus/cuda/BUILD.tpl | 82 | ||||
-rw-r--r-- | third_party/gpus/cuda_configure.bzl | 50 |
2 files changed, 84 insertions, 48 deletions
diff --git a/third_party/gpus/cuda/BUILD.tpl b/third_party/gpus/cuda/BUILD.tpl index 87c8678714..51d9e4e994 100644 --- a/third_party/gpus/cuda/BUILD.tpl +++ b/third_party/gpus/cuda/BUILD.tpl @@ -40,20 +40,23 @@ config_setting( cc_library( name = "cuda_headers", hdrs = [ - "cuda_config.h", + "cuda/cuda_config.h", %{cuda_headers} ], includes = [ ".", - "include", + "cuda/include", ], visibility = ["//visibility:public"], ) cc_library( name = "cudart_static", - srcs = ["lib/%{cudart_static_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{cudart_static_lib}"], + includes = [ + ".", + "cuda/include", + ], linkopts = select({ ":freebsd": [], "//conditions:default": ["-ldl"], @@ -66,34 +69,46 @@ cc_library( cc_library( name = "cuda_driver", - srcs = ["lib/%{cuda_driver_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{cuda_driver_lib}"], + includes = [ + ".", + "cuda/include", + ], visibility = ["//visibility:public"], ) cc_library( name = "cudart", - srcs = ["lib/%{cudart_lib}"], - data = ["lib/%{cudart_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{cudart_lib}"], + data = ["cuda/lib/%{cudart_lib}"], + includes = [ + ".", + "cuda/include", + ], linkstatic = 1, visibility = ["//visibility:public"], ) cc_library( name = "cublas", - srcs = ["lib/%{cublas_lib}"], - data = ["lib/%{cublas_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{cublas_lib}"], + data = ["cuda/lib/%{cublas_lib}"], + includes = [ + ".", + "cuda/include", + ], linkstatic = 1, visibility = ["//visibility:public"], ) cc_library( name = "cusolver", - srcs = ["lib/%{cusolver_lib}"], - data = ["lib/%{cusolver_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{cusolver_lib}"], + data = ["cuda/lib/%{cusolver_lib}"], + includes = [ + ".", + "cuda/include", + ], linkopts = ["-lgomp"], linkstatic = 1, visibility = ["//visibility:public"], @@ -101,27 +116,36 @@ cc_library( cc_library( name = "cudnn", - srcs = ["lib/%{cudnn_lib}"], - data = ["lib/%{cudnn_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{cudnn_lib}"], + data = ["cuda/lib/%{cudnn_lib}"], + includes = [ + ".", + "cuda/include", + ], linkstatic = 1, visibility = ["//visibility:public"], ) cc_library( name = "cufft", - srcs = ["lib/%{cufft_lib}"], - data = ["lib/%{cufft_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{cufft_lib}"], + data = ["cuda/lib/%{cufft_lib}"], + includes = [ + ".", + "cuda/include", + ], linkstatic = 1, visibility = ["//visibility:public"], ) cc_library( name = "curand", - srcs = ["lib/%{curand_lib}"], - data = ["lib/%{curand_lib}"], - includes = ["include"], + srcs = ["cuda/lib/%{curand_lib}"], + data = ["cuda/lib/%{curand_lib}"], + includes = [ + ".", + "cuda/include", + ], linkstatic = 1, visibility = ["//visibility:public"], ) @@ -142,19 +166,23 @@ cc_library( cc_library( name = "cupti_headers", hdrs = [ - "cuda_config.h", + "cuda/cuda_config.h", ":cuda-extras", ], includes = [ ".", - "extras/CUPTI/include/", + "cuda/extras/CUPTI/include/", ], visibility = ["//visibility:public"], ) cc_library( name = "cupti_dsos", - data = ["lib/%{cupti_lib}"], + data = ["cuda/lib/%{cupti_lib}"], + includes = [ + ".", + "cuda/include", + ], visibility = ["//visibility:public"], ) diff --git a/third_party/gpus/cuda_configure.bzl b/third_party/gpus/cuda_configure.bzl index cc445eb0ae..4dd3169d41 100644 --- a/third_party/gpus/cuda_configure.bzl +++ b/third_party/gpus/cuda_configure.bzl @@ -740,19 +740,19 @@ def _create_dummy_repository(repository_ctx): # Create dummy files for the CUDA toolkit since they are still required by # tensorflow/core/platform/default/build_config:cuda. - repository_ctx.file("cuda/include/cuda.h", "") - repository_ctx.file("cuda/include/cublas.h", "") - repository_ctx.file("cuda/include/cudnn.h", "") - repository_ctx.file("cuda/extras/CUPTI/include/cupti.h", "") - repository_ctx.file("cuda/lib/%s" % _lib_name("cuda", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("cudart", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("cudart_static", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("cublas", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("cusolver", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("cudnn", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("curand", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("cufft", cpu_value)) - repository_ctx.file("cuda/lib/%s" % _lib_name("cupti", cpu_value)) + repository_ctx.file("cuda/cuda/include/cuda.h", "") + repository_ctx.file("cuda/cuda/include/cublas.h", "") + repository_ctx.file("cuda/cuda/include/cudnn.h", "") + repository_ctx.file("cuda/cuda/extras/CUPTI/include/cupti.h", "") + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cuda", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cudart", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cudart_static", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cublas", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cusolver", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cudnn", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("curand", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cufft", cpu_value)) + repository_ctx.file("cuda/cuda/lib/%s" % _lib_name("cupti", cpu_value)) # Set up cuda_config.h, which is used by # tensorflow/stream_executor/dso_loader.cc. @@ -764,7 +764,7 @@ def _create_dummy_repository(repository_ctx): "CudaVersion(\"%s\")" % c for c in _DEFAULT_CUDA_COMPUTE_CAPABILITIES]), "%{cuda_toolkit_path}": _DEFAULT_CUDA_TOOLKIT_PATH, - }) + }, "cuda/cuda/cuda_config.h") # If cuda_configure is not configured to build with GPU support, and the user # attempts to build with --config=cuda, add a dummy build rule to intercept @@ -821,6 +821,13 @@ def _symlink_genrule_for_dir(repository_ctx, src_dir, dest_dir, genrule_name, dest_files = files.replace(src_dir, '').splitlines() src_files = files.splitlines() command = [] + if not _is_windows(repository_ctx): + # We clear folders that might have been generated previously to avoid + # undesired inclusions + command.append('if [ -d "$(@D)/extras" ]; then rm $(@D)/extras -drf; fi') + command.append('if [ -d "$(@D)/include" ]; then rm $(@D)/include -drf; fi') + command.append('if [ -d "$(@D)/lib" ]; then rm $(@D)/lib -drf; fi') + command.append('if [ -d "$(@D)/nvvm" ]; then rm $(@D)/nvvm -drf; fi') outs = [] for i in range(len(dest_files)): if dest_files[i] != "": @@ -906,19 +913,19 @@ def _create_local_cuda_repository(repository_ctx): cuda_toolkit_path = cuda_config.cuda_toolkit_path cuda_include_path = cuda_toolkit_path + "/include" genrules = [_symlink_genrule_for_dir(repository_ctx, - cuda_include_path, "include", "cuda-include")] + cuda_include_path, "cuda/include", "cuda-include")] genrules.append(_symlink_genrule_for_dir(repository_ctx, - cuda_toolkit_path + "/nvvm", "nvvm", "cuda-nvvm")) + cuda_toolkit_path + "/nvvm", "cuda/nvvm", "cuda-nvvm")) genrules.append(_symlink_genrule_for_dir(repository_ctx, cuda_toolkit_path + "/extras/CUPTI/include", - "extras/CUPTI/include", "cuda-extras")) + "cuda/extras/CUPTI/include", "cuda-extras")) cuda_libs = _find_libs(repository_ctx, cuda_config) cuda_lib_src = [] cuda_lib_dest = [] for lib in cuda_libs.values(): cuda_lib_src.append(lib.path) - cuda_lib_dest.append("lib/" + lib.file_name) + cuda_lib_dest.append("cuda/lib/" + lib.file_name) genrules.append(_symlink_genrule_for_dir(repository_ctx, None, "", "cuda-lib", cuda_lib_src, cuda_lib_dest)) @@ -927,8 +934,9 @@ def _create_local_cuda_repository(repository_ctx): included_files = _read_dir(repository_ctx, cuda_include_path).replace( cuda_include_path, '').splitlines() if '/cudnn.h' not in included_files: - genrules.append(_symlink_genrule_for_dir(repository_ctx, None, "include/", - "cudnn-include", [cudnn_header_dir + "/cudnn.h"], ["cudnn.h"])) + genrules.append(_symlink_genrule_for_dir(repository_ctx, None, + "cuda/include/", "cudnn-include", [cudnn_header_dir + "/cudnn.h"], + ["cudnn.h"])) else: genrules.append( 'filegroup(\n' + @@ -1000,7 +1008,7 @@ def _create_local_cuda_repository(repository_ctx): ["CudaVersion(\"%s\")" % c for c in cuda_config.compute_capabilities]), "%{cuda_toolkit_path}": cuda_config.cuda_toolkit_path, - }) + }, "cuda/cuda/cuda_config.h") def _create_remote_cuda_repository(repository_ctx, remote_config_repo): """Creates pointers to a remotely configured repo set up to build with CUDA.""" |