TensorFlow: Make horovod compilation work (#15692)
* TensorFlow: Clean up/simplify the installation, make sure the headers are installed so that horovod can find them successfully. Fix the 2.0.* builds. * Backport of 837c8b6b upstream "Remove contrib cloud bigtable and storage ops/kernels." Allows 2.0.* releases to build with '--config=nogcp' * comment regarding tensorflow issue #31187 Co-authored-by: Andrew W Elble <aweits@skl-a-00.rc.rit.edu>
This commit is contained in:
parent
7df7b65cec
commit
108a0c99f1
@ -0,0 +1,76 @@
|
|||||||
|
--- a/tensorflow/core/BUILD.orig 2020-01-22 18:43:57.000000000 -0500
|
||||||
|
+++ b/tensorflow/core/BUILD 2020-03-26 16:33:17.318229701 -0400
|
||||||
|
@@ -107,8 +107,6 @@
|
||||||
|
load(
|
||||||
|
"//tensorflow/core/platform:default/build_config.bzl",
|
||||||
|
"tf_additional_all_protos",
|
||||||
|
- "tf_additional_cloud_kernel_deps",
|
||||||
|
- "tf_additional_cloud_op_deps",
|
||||||
|
"tf_additional_core_deps",
|
||||||
|
"tf_additional_cupti_wrapper_deps",
|
||||||
|
"tf_additional_device_tracer_cuda_deps",
|
||||||
|
@@ -1427,7 +1425,7 @@
|
||||||
|
]) + if_tensorrt([
|
||||||
|
"//tensorflow/compiler/tf2tensorrt:trt_engine_resource_ops_op_lib",
|
||||||
|
"//tensorflow/compiler/tf2tensorrt:trt_op_libs",
|
||||||
|
- ]) + tf_additional_cloud_op_deps(),
|
||||||
|
+ ]),
|
||||||
|
alwayslink = 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
@@ -1590,7 +1588,7 @@
|
||||||
|
"//tensorflow/core/kernels:summary_kernels",
|
||||||
|
"//tensorflow/core/kernels:training_ops",
|
||||||
|
"//tensorflow/core/kernels:word2vec_kernels",
|
||||||
|
- ] + tf_additional_cloud_kernel_deps() + if_not_windows([
|
||||||
|
+ ] + if_not_windows([
|
||||||
|
"//tensorflow/core/kernels:fact_op",
|
||||||
|
"//tensorflow/core/kernels:array_not_windows",
|
||||||
|
"//tensorflow/core/kernels:math_not_windows",
|
||||||
|
|
||||||
|
diff --git a/tensorflow/core/platform/default/build_config.bzl b/tensorflow/core/platform/default/build_config.bzl
|
||||||
|
index b822effa14e5..61a19bdf128f 100644
|
||||||
|
--- a/tensorflow/core/platform/default/build_config.bzl
|
||||||
|
+++ b/tensorflow/core/platform/default/build_config.bzl
|
||||||
|
@@ -682,38 +682,6 @@ def tf_additional_core_deps():
|
||||||
|
],
|
||||||
|
})
|
||||||
|
|
||||||
|
-# TODO(jart, jhseu): Delete when GCP is default on.
|
||||||
|
-def tf_additional_cloud_op_deps():
|
||||||
|
- return select({
|
||||||
|
- "//tensorflow:android": [],
|
||||||
|
- "//tensorflow:ios": [],
|
||||||
|
- "//tensorflow:linux_s390x": [],
|
||||||
|
- "//tensorflow:windows": [],
|
||||||
|
- "//tensorflow:api_version_2": [],
|
||||||
|
- "//tensorflow:windows_and_api_version_2": [],
|
||||||
|
- "//tensorflow:no_gcp_support": [],
|
||||||
|
- "//conditions:default": [
|
||||||
|
- "//tensorflow/contrib/cloud:bigquery_reader_ops_op_lib",
|
||||||
|
- "//tensorflow/contrib/cloud:gcs_config_ops_op_lib",
|
||||||
|
- ],
|
||||||
|
- })
|
||||||
|
-
|
||||||
|
-# TODO(jhseu): Delete when GCP is default on.
|
||||||
|
-def tf_additional_cloud_kernel_deps():
|
||||||
|
- return select({
|
||||||
|
- "//tensorflow:android": [],
|
||||||
|
- "//tensorflow:ios": [],
|
||||||
|
- "//tensorflow:linux_s390x": [],
|
||||||
|
- "//tensorflow:windows": [],
|
||||||
|
- "//tensorflow:api_version_2": [],
|
||||||
|
- "//tensorflow:windows_and_api_version_2": [],
|
||||||
|
- "//tensorflow:no_gcp_support": [],
|
||||||
|
- "//conditions:default": [
|
||||||
|
- "//tensorflow/contrib/cloud/kernels:bigquery_reader_ops",
|
||||||
|
- "//tensorflow/contrib/cloud/kernels:gcs_config_ops",
|
||||||
|
- ],
|
||||||
|
- })
|
||||||
|
-
|
||||||
|
def tf_lib_proto_parsing_deps():
|
||||||
|
return [
|
||||||
|
":protos_all_cc",
|
||||||
|
--
|
||||||
|
2.19.1
|
||||||
|
|
@ -3,8 +3,7 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
import glob
|
from glob import glob
|
||||||
import os
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
@ -241,6 +240,11 @@ class PyTensorflow(Package, CudaPackage):
|
|||||||
patch('io_bazel_rules_docker2.patch', when='@1.15:2.0')
|
patch('io_bazel_rules_docker2.patch', when='@1.15:2.0')
|
||||||
# Avoide build error: "name 'new_http_archive' is not defined"
|
# Avoide build error: "name 'new_http_archive' is not defined"
|
||||||
patch('http_archive.patch', when='@1.12.3')
|
patch('http_archive.patch', when='@1.12.3')
|
||||||
|
# Backport of 837c8b6b upstream
|
||||||
|
# "Remove contrib cloud bigtable and storage ops/kernels."
|
||||||
|
# Allows 2.0.* releases to build with '--config=nogcp'
|
||||||
|
patch('0001-Remove-contrib-cloud-bigtable-and-storage-ops-kernel.patch',
|
||||||
|
when='@2.0.0:2.0.1')
|
||||||
|
|
||||||
phases = ['configure', 'build', 'install']
|
phases = ['configure', 'build', 'install']
|
||||||
|
|
||||||
@ -581,6 +585,12 @@ def post_configure_fixes(self):
|
|||||||
spec['nccl'].prefix.include + '"',
|
spec['nccl'].prefix.include + '"',
|
||||||
'.tf_configure.bazelrc')
|
'.tf_configure.bazelrc')
|
||||||
|
|
||||||
|
# see tensorflow issue #31187 on github
|
||||||
|
if spec.satisfies('@2.0.0:2.0.1'):
|
||||||
|
filter_file(r'\#define RUY_DONOTUSEDIRECTLY_AVX512 1',
|
||||||
|
'#define RUY_DONOTUSEDIRECTLY_AVX512 0',
|
||||||
|
'tensorflow/lite/experimental/ruy/platform.h')
|
||||||
|
|
||||||
if spec.satisfies('+cuda'):
|
if spec.satisfies('+cuda'):
|
||||||
libs = spec['cuda'].libs.directories
|
libs = spec['cuda'].libs.directories
|
||||||
libs.extend(spec['cudnn'].libs.directories)
|
libs.extend(spec['cudnn'].libs.directories)
|
||||||
@ -679,30 +689,24 @@ def build(self, spec, prefix):
|
|||||||
|
|
||||||
build_pip_package = Executable(
|
build_pip_package = Executable(
|
||||||
'bazel-bin/tensorflow/tools/pip_package/build_pip_package')
|
'bazel-bin/tensorflow/tools/pip_package/build_pip_package')
|
||||||
build_pip_package(tmp_path)
|
buildpath = join_path(self.stage.source_path, 'spack-build')
|
||||||
|
build_pip_package('--src', buildpath)
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
with working_dir('spack-build', create=True):
|
buildpath = join_path(self.stage.source_path, 'spack-build')
|
||||||
for fn in glob.iglob(join_path(
|
with working_dir(buildpath):
|
||||||
'../bazel-bin/tensorflow/tools/pip_package',
|
|
||||||
'build_pip_package.runfiles/org_tensorflow/*')):
|
|
||||||
dst = os.path.basename(fn)
|
|
||||||
if not os.path.exists(dst):
|
|
||||||
os.symlink(fn, dst)
|
|
||||||
for fn in glob.iglob('../tensorflow/tools/pip_package/*'):
|
|
||||||
dst = os.path.basename(fn)
|
|
||||||
if not os.path.exists(dst):
|
|
||||||
os.symlink(fn, dst)
|
|
||||||
|
|
||||||
# macOS is case-insensitive, and BUILD file in directory
|
|
||||||
# containing setup.py causes the following error message:
|
|
||||||
# error: could not create 'build': File exists
|
|
||||||
# Delete BUILD file to prevent this.
|
|
||||||
os.remove('BUILD')
|
|
||||||
|
|
||||||
setup_py('install', '--prefix={0}'.format(prefix),
|
setup_py('install', '--prefix={0}'.format(prefix),
|
||||||
'--single-version-externally-managed', '--root=/')
|
'--single-version-externally-managed', '--root=/')
|
||||||
|
|
||||||
|
site_packages_dir = join_path(
|
||||||
|
prefix.lib,
|
||||||
|
('python' + str(self.spec['python'].version.up_to(2))),
|
||||||
|
'site-packages')
|
||||||
|
fn = glob(join_path(site_packages_dir, "tensorflow-*"))
|
||||||
|
incpath = join_path(fn[0], "tensorflow/include")
|
||||||
|
setup_py('install_headers', '--install-dir={0}'.format(incpath))
|
||||||
|
|
||||||
@run_after('install')
|
@run_after('install')
|
||||||
@on_package_attributes(run_tests=True)
|
@on_package_attributes(run_tests=True)
|
||||||
def import_module_test(self):
|
def import_module_test(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user