diff options
34 files changed, 1925 insertions, 1801 deletions
diff --git a/.mention-bot b/.mention-bot new file mode 100644 index 0000000000..9e4858977f --- /dev/null +++ b/.mention-bot @@ -0,0 +1,11 @@ +{ + "maxReviewers": 2, + "numFilesToCheck": 10, + "userBlacklist": ["tensorflower-gardener"], + "requiredOrgs": ["tensorflow"], + "skipAlreadyAssignedPR": true, + "skipAlreadyMentionedPR": true, + "skipTitle": "Branch", + "delayed": true, + "delayedUntil": "10m" +} @@ -33,10 +33,10 @@ and discussion.** People who are a little more adventurous can also try our nightly binaries: -* Linux CPU-only: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc1-cp27-none-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave)) / [Python 3.4](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc1-cp34-cp34m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/)) / [Python 3.5](https://ci.tensorflow.org/view/Nightly/job/nightly-python35-linux-cpu/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc1-cp35-cp35m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-python35-linux-cpu/)) -* Linux GPU: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-linux/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc1-cp27-none-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-linux/)) / [Python 3.4](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-linux/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc1-cp34-cp34m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-linux/)) / [Python 3.5](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3.5,label=gpu-linux/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc1-cp35-cp35m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3.5,label=gpu-linux/)) -* Mac CPU-only: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc1-py2-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/)) / [Python 3](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc1-py3-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/)) -* Mac GPU: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-mac/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc1-py2-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-mac/)) / [Python 3](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-mac/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc1-py3-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-mac/)) +* Linux CPU-only: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc2-cp27-none-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=cpu-slave)) / [Python 3.4](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc2-cp34-cp34m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=cpu-slave/)) / [Python 3.5](https://ci.tensorflow.org/view/Nightly/job/nightly-python35-linux-cpu/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc2-cp35-cp35m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-python35-linux-cpu/)) +* Linux GPU: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-linux/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc2-cp27-none-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-linux/)) / [Python 3.4](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-linux/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc2-cp34-cp34m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-linux/)) / [Python 3.5](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3.5,label=gpu-linux/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc2-cp35-cp35m-linux_x86_64.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-linux-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3.5,label=gpu-linux/)) +* Mac CPU-only: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc2-py2-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=mac-slave/)) / [Python 3](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow-1.0.0rc2-py3-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-cpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=mac-slave/)) +* Mac GPU: [Python 2](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-mac/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc2-py2-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=gpu-mac/)) / [Python 3](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-mac/lastSuccessfulBuild/artifact/pip_test/whl/tensorflow_gpu-1.0.0rc2-py3-none-any.whl) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-mac-gpu/TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=PIP,TF_BUILD_PYTHON_VERSION=PYTHON3,label=gpu-mac/)) * [Android](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-android/TF_BUILD_CONTAINER_TYPE=ANDROID,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=NO_PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=android-slave/lastSuccessfulBuild/artifact/bazel-out/local_linux/bin/tensorflow/examples/android/tensorflow_demo.apk) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-matrix-android/TF_BUILD_CONTAINER_TYPE=ANDROID,TF_BUILD_IS_OPT=OPT,TF_BUILD_IS_PIP=NO_PIP,TF_BUILD_PYTHON_VERSION=PYTHON2,label=android-slave/)) * Android: [demo APK](https://ci.tensorflow.org/view/Nightly/job/nightly-android/lastSuccessfulBuild/artifact/out/tensorflow_demo.apk), [native libs](http://ci.tensorflow.org/view/Nightly/job/nightly-android/lastSuccessfulBuild/artifact/out/native/) ([build history](https://ci.tensorflow.org/view/Nightly/job/nightly-android/)) diff --git a/tensorflow/BUILD b/tensorflow/BUILD index 5e5f40e27a..a568aa50d4 100644 --- a/tensorflow/BUILD +++ b/tensorflow/BUILD @@ -104,6 +104,14 @@ filegroup( visibility = ["//tensorflow:__subpackages__"], ) +py_library( + name = "tensorflow_py", + srcs = ["__init__.py"], + srcs_version = "PY2AND3", + visibility = ["//visibility:public"], + deps = ["//tensorflow/python"], +) + filegroup( name = "all_opensource_files", data = [ @@ -291,11 +299,3 @@ cc_binary( "//tensorflow/core:tensorflow", ], ) - -py_library( - name = "tensorflow_py", - srcs = ["__init__.py"], - srcs_version = "PY2AND3", - visibility = ["//visibility:public"], - deps = ["//tensorflow/python"], -) diff --git a/tensorflow/contrib/makefile/compile_android_protobuf.sh b/tensorflow/contrib/makefile/compile_android_protobuf.sh index 286109b923..50d72d6093 100755 --- a/tensorflow/contrib/makefile/compile_android_protobuf.sh +++ b/tensorflow/contrib/makefile/compile_android_protobuf.sh @@ -165,7 +165,7 @@ CXXFLAGS="-frtti -fexceptions ${march_option} \ -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/include \ -I${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/libs/${ARCHITECTURE}/include" \ LDFLAGS="-L${NDK_ROOT}/sources/cxx-stl/gnu-libstdc++/4.9/libs/${ARCHITECTURE}" \ -LIBS="-lz -lgnustl_static" +LIBS="-llog -lz -lgnustl_static" if [ $? -ne 0 ] then diff --git a/tensorflow/contrib/rnn/BUILD b/tensorflow/contrib/rnn/BUILD index 0f056dc1ca..dc6d56e0b4 100644 --- a/tensorflow/contrib/rnn/BUILD +++ b/tensorflow/contrib/rnn/BUILD @@ -115,7 +115,7 @@ cuda_py_tests( cuda_py_tests( name = "core_rnn_test", - size = "medium", + size = "large", srcs = ["python/kernel_tests/core_rnn_test.py"], additional_deps = [ ":rnn_py", diff --git a/tensorflow/contrib/sparsemax/python/ops/sparsemax.py b/tensorflow/contrib/sparsemax/python/ops/sparsemax.py index 07ac24add4..73a5cf1e92 100644 --- a/tensorflow/contrib/sparsemax/python/ops/sparsemax.py +++ b/tensorflow/contrib/sparsemax/python/ops/sparsemax.py @@ -18,7 +18,6 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function -from tensorflow.contrib.util import loader from tensorflow.python.framework import dtypes from tensorflow.python.framework import ops from tensorflow.python.ops import array_ops diff --git a/tensorflow/core/BUILD b/tensorflow/core/BUILD index cc89944c13..89b64a2d8d 100644 --- a/tensorflow/core/BUILD +++ b/tensorflow/core/BUILD @@ -1892,7 +1892,7 @@ if_mkl( ":lib", ":lib_internal", ":ops", - ":protos_all_cc", # under if_mkl + ":protos_all_cc", ":test", ":test_main", ":testlib", diff --git a/tensorflow/core/ops/ops.pbtxt b/tensorflow/core/ops/ops.pbtxt index 84a44d24c6..6212048f82 100644 --- a/tensorflow/core/ops/ops.pbtxt +++ b/tensorflow/core/ops/ops.pbtxt @@ -25312,6 +25312,59 @@ op { description: "Read [the section on\nSegmentation](../../api_docs/python/math_ops.md#segmentation) for an explanation\nof segments.\n\nComputes a tensor such that\n`(output[i] = sum_{j...} data[j...]` where the sum is over tuples `j...` such\nthat `segment_ids[j...] == i`. Unlike `SegmentSum`, `segment_ids`\nneed not be sorted and need not cover all values in the full\nrange of valid values.\n\nIf the sum is empty for a given segment ID `i`, `output[i] = 0`.\n\n`num_segments` should equal the number of distinct segment IDs.\n\n<div style=\"width:70%; margin:auto; margin-bottom:10px; margin-top:20px;\">\n<img style=\"width:100%\" src=\"../../images/UnsortedSegmentSum.png\" alt>\n</div>" } op { + name: "UnsortedSegmentSum" + input_arg { + name: "data" + type_attr: "T" + } + input_arg { + name: "segment_ids" + description: "A tensor whose shape is a prefix of `data.shape`." + type_attr: "Tindices" + } + input_arg { + name: "num_segments" + type: DT_INT32 + } + output_arg { + name: "output" + description: "Has same shape as data, except for the first `segment_ids.rank`\ndimensions, which are replaced with a single dimension which has size\n`num_segments`." + type_attr: "T" + } + attr { + name: "T" + type: "type" + allowed_values { + list { + type: DT_FLOAT + type: DT_DOUBLE + type: DT_INT64 + type: DT_INT32 + type: DT_UINT8 + type: DT_UINT16 + type: DT_INT16 + type: DT_INT8 + type: DT_QINT8 + type: DT_QUINT8 + type: DT_QINT32 + type: DT_HALF + } + } + } + attr { + name: "Tindices" + type: "type" + allowed_values { + list { + type: DT_INT32 + type: DT_INT64 + } + } + } + summary: "Computes the max along segments of a tensor." + description: "Read [the section on\nSegmentation](../../api_docs/python/math_ops.md#segmentation) for an explanation\nof segments.\n\nComputes a tensor such that\n\\\\(output_i = \\sum_j data_j\\\\) where sum is over `j` such\nthat `segment_ids[j] == i`. Unlike `SegmentSum`, `segment_ids`\nneed not be sorted and need not cover all values in the full\n range of valid values.\n\nIf the sum is empty for a given segment ID `i`, `output[i] = 0`.\n\n`num_segments` should equal the number of distinct segment IDs.\n\n<div style=\"width:70%; margin:auto; margin-bottom:10px; margin-top:20px;\">\n<img style=\"width:100%\" src=\"../../images/UnsortedSegmentSum.png\" alt>\n</div>" +} +op { name: "Unstage" output_arg { name: "values" diff --git a/tensorflow/core/public/version.h b/tensorflow/core/public/version.h index 37e5dc81b2..a9d984993e 100644 --- a/tensorflow/core/public/version.h +++ b/tensorflow/core/public/version.h @@ -20,7 +20,7 @@ limitations under the License. #define TF_MAJOR_VERSION 1 #define TF_MINOR_VERSION 0 -#define TF_PATCH_VERSION 0-rc1 +#define TF_PATCH_VERSION 0-rc2 // TF_VERSION_SUFFIX is non-empty for pre-releases (e.g. "-alpha", "-alpha.1", // "-beta", "-rc", "-rc.1") diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard0/tf.summary.TaggedRunMetadata.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard0/tf.summary.TaggedRunMetadata.md index 788d2066ad..8dc62c4c18 100644 --- a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard0/tf.summary.TaggedRunMetadata.md +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard0/tf.summary.TaggedRunMetadata.md @@ -1,8 +1,252 @@ - - - +#### `tf.summary.TaggedRunMetadata.ByteSize()` {#TaggedRunMetadata.ByteSize} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.Clear()` {#TaggedRunMetadata.Clear} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.ClearExtension(extension_handle)` {#TaggedRunMetadata.ClearExtension} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.ClearField(field_name)` {#TaggedRunMetadata.ClearField} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.CopyFrom(other_msg)` {#TaggedRunMetadata.CopyFrom} + +Copies the content of the specified message into the current message. + +The method clears the current message and then merges the specified +message using MergeFrom. + +##### Args: + + +* <b>`other_msg`</b>: Message to copy into the current one. + + +- - - + +#### `tf.summary.TaggedRunMetadata.DiscardUnknownFields()` {#TaggedRunMetadata.DiscardUnknownFields} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.FindInitializationErrors()` {#TaggedRunMetadata.FindInitializationErrors} + +Finds required fields which are not initialized. + +##### Returns: + + A list of strings. Each string is a path to an uninitialized field from + the top-level message, e.g. "foo.bar[5].baz". + + +- - - + +#### `tf.summary.TaggedRunMetadata.FromString(s)` {#TaggedRunMetadata.FromString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.HasExtension(extension_handle)` {#TaggedRunMetadata.HasExtension} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.HasField(field_name)` {#TaggedRunMetadata.HasField} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.IsInitialized(errors=None)` {#TaggedRunMetadata.IsInitialized} + +Checks if all required fields of a message are set. + +##### Args: + + +* <b>`errors`</b>: A list which, if provided, will be populated with the field + paths of all missing required fields. + +##### Returns: + + True iff the specified message has all required fields set. + + +- - - + +#### `tf.summary.TaggedRunMetadata.ListFields()` {#TaggedRunMetadata.ListFields} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.MergeFrom(msg)` {#TaggedRunMetadata.MergeFrom} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.MergeFromString(serialized)` {#TaggedRunMetadata.MergeFromString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.ParseFromString(serialized)` {#TaggedRunMetadata.ParseFromString} + +Parse serialized protocol buffer data into this message. + +Like MergeFromString(), except we clear the object first and +do not return the value that MergeFromString returns. + + +- - - + +#### `tf.summary.TaggedRunMetadata.RegisterExtension(extension_handle)` {#TaggedRunMetadata.RegisterExtension} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.SerializePartialToString()` {#TaggedRunMetadata.SerializePartialToString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.SerializeToString()` {#TaggedRunMetadata.SerializeToString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.SetInParent()` {#TaggedRunMetadata.SetInParent} + +Sets the _cached_byte_size_dirty bit to true, +and propagates this to our listener iff this was a state change. + + +- - - + +#### `tf.summary.TaggedRunMetadata.WhichOneof(oneof_name)` {#TaggedRunMetadata.WhichOneof} + +Returns the name of the currently set field inside a oneof, or None. + + +- - - + +#### `tf.summary.TaggedRunMetadata.__deepcopy__(memo=None)` {#TaggedRunMetadata.__deepcopy__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__eq__(other)` {#TaggedRunMetadata.__eq__} + + + + +- - - + #### `tf.summary.TaggedRunMetadata.__getstate__()` {#TaggedRunMetadata.__getstate__} Support the pickle protocol. +- - - + +#### `tf.summary.TaggedRunMetadata.__hash__()` {#TaggedRunMetadata.__hash__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__init__(**kwargs)` {#TaggedRunMetadata.__init__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__ne__(other_msg)` {#TaggedRunMetadata.__ne__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__repr__()` {#TaggedRunMetadata.__repr__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__setstate__(state)` {#TaggedRunMetadata.__setstate__} + +Support the pickle protocol. + + +- - - + +#### `tf.summary.TaggedRunMetadata.__str__()` {#TaggedRunMetadata.__str__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__unicode__()` {#TaggedRunMetadata.__unicode__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.run_metadata` {#TaggedRunMetadata.run_metadata} + +Magic attribute generated for "run_metadata" proto field. + + +- - - + +#### `tf.summary.TaggedRunMetadata.tag` {#TaggedRunMetadata.tag} + +Magic attribute generated for "tag" proto field. + + diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.summary.SummaryDescription.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.summary.SummaryDescription.md index 19532f7cc3..bce704ef4f 100644 --- a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.summary.SummaryDescription.md +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.summary.SummaryDescription.md @@ -1,8 +1,245 @@ - - - +#### `tf.summary.SummaryDescription.ByteSize()` {#SummaryDescription.ByteSize} + + + + +- - - + +#### `tf.summary.SummaryDescription.Clear()` {#SummaryDescription.Clear} + + + + +- - - + +#### `tf.summary.SummaryDescription.ClearExtension(extension_handle)` {#SummaryDescription.ClearExtension} + + + + +- - - + +#### `tf.summary.SummaryDescription.ClearField(field_name)` {#SummaryDescription.ClearField} + + + + +- - - + +#### `tf.summary.SummaryDescription.CopyFrom(other_msg)` {#SummaryDescription.CopyFrom} + +Copies the content of the specified message into the current message. + +The method clears the current message and then merges the specified +message using MergeFrom. + +##### Args: + + +* <b>`other_msg`</b>: Message to copy into the current one. + + +- - - + +#### `tf.summary.SummaryDescription.DiscardUnknownFields()` {#SummaryDescription.DiscardUnknownFields} + + + + +- - - + +#### `tf.summary.SummaryDescription.FindInitializationErrors()` {#SummaryDescription.FindInitializationErrors} + +Finds required fields which are not initialized. + +##### Returns: + + A list of strings. Each string is a path to an uninitialized field from + the top-level message, e.g. "foo.bar[5].baz". + + +- - - + +#### `tf.summary.SummaryDescription.FromString(s)` {#SummaryDescription.FromString} + + + + +- - - + +#### `tf.summary.SummaryDescription.HasExtension(extension_handle)` {#SummaryDescription.HasExtension} + + + + +- - - + +#### `tf.summary.SummaryDescription.HasField(field_name)` {#SummaryDescription.HasField} + + + + +- - - + +#### `tf.summary.SummaryDescription.IsInitialized(errors=None)` {#SummaryDescription.IsInitialized} + +Checks if all required fields of a message are set. + +##### Args: + + +* <b>`errors`</b>: A list which, if provided, will be populated with the field + paths of all missing required fields. + +##### Returns: + + True iff the specified message has all required fields set. + + +- - - + +#### `tf.summary.SummaryDescription.ListFields()` {#SummaryDescription.ListFields} + + + + +- - - + +#### `tf.summary.SummaryDescription.MergeFrom(msg)` {#SummaryDescription.MergeFrom} + + + + +- - - + +#### `tf.summary.SummaryDescription.MergeFromString(serialized)` {#SummaryDescription.MergeFromString} + + + + +- - - + +#### `tf.summary.SummaryDescription.ParseFromString(serialized)` {#SummaryDescription.ParseFromString} + +Parse serialized protocol buffer data into this message. + +Like MergeFromString(), except we clear the object first and +do not return the value that MergeFromString returns. + + +- - - + +#### `tf.summary.SummaryDescription.RegisterExtension(extension_handle)` {#SummaryDescription.RegisterExtension} + + + + +- - - + +#### `tf.summary.SummaryDescription.SerializePartialToString()` {#SummaryDescription.SerializePartialToString} + + + + +- - - + +#### `tf.summary.SummaryDescription.SerializeToString()` {#SummaryDescription.SerializeToString} + + + + +- - - + +#### `tf.summary.SummaryDescription.SetInParent()` {#SummaryDescription.SetInParent} + +Sets the _cached_byte_size_dirty bit to true, +and propagates this to our listener iff this was a state change. + + +- - - + +#### `tf.summary.SummaryDescription.WhichOneof(oneof_name)` {#SummaryDescription.WhichOneof} + +Returns the name of the currently set field inside a oneof, or None. + + +- - - + +#### `tf.summary.SummaryDescription.__deepcopy__(memo=None)` {#SummaryDescription.__deepcopy__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__eq__(other)` {#SummaryDescription.__eq__} + + + + +- - - + #### `tf.summary.SummaryDescription.__getstate__()` {#SummaryDescription.__getstate__} Support the pickle protocol. +- - - + +#### `tf.summary.SummaryDescription.__hash__()` {#SummaryDescription.__hash__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__init__(**kwargs)` {#SummaryDescription.__init__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__ne__(other_msg)` {#SummaryDescription.__ne__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__repr__()` {#SummaryDescription.__repr__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__setstate__(state)` {#SummaryDescription.__setstate__} + +Support the pickle protocol. + + +- - - + +#### `tf.summary.SummaryDescription.__str__()` {#SummaryDescription.__str__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__unicode__()` {#SummaryDescription.__unicode__} + + + + +- - - + +#### `tf.summary.SummaryDescription.type_hint` {#SummaryDescription.type_hint} + +Magic attribute generated for "type_hint" proto field. + + diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.test.TestCase.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.test.TestCase.md index 277b75565a..0e63e0d708 100644 --- a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.test.TestCase.md +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard2/tf.test.TestCase.md @@ -179,125 +179,6 @@ Checks that for all elements of farray1 and farray2 - - - -#### `tf.test.TestCase.assertBetween(value, minv, maxv, msg=None)` {#TestCase.assertBetween} - -Asserts that value is between minv and maxv (inclusive). - - -- - - - -#### `tf.test.TestCase.assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)` {#TestCase.assertCommandFails} - -Asserts a shell command fails and the error matches a regex in a list. - -##### Args: - - -* <b>`command`</b>: List or string representing the command to run. -* <b>`regexes`</b>: the list of regular expression strings. -* <b>`env`</b>: Dictionary of environment variable settings. -* <b>`close_fds`</b>: Whether or not to close all open fd's in the child after - forking. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertCommandSucceeds(command, regexes=('',), env=None, close_fds=True, msg=None)` {#TestCase.assertCommandSucceeds} - -Asserts that a shell command succeeds (i.e. exits with code 0). - -##### Args: - - -* <b>`command`</b>: List or string representing the command to run. -* <b>`regexes`</b>: List of regular expression byte strings that match success. -* <b>`env`</b>: Dictionary of environment variable settings. -* <b>`close_fds`</b>: Whether or not to close all open fd's in the child after - forking. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsExactSubsequence(container, subsequence, msg=None)` {#TestCase.assertContainsExactSubsequence} - -Assert that "container" contains "subsequence" as an exact subsequence. - -Asserts that "container" contains all the elements of "subsequence", in -order, and without other elements interspersed. For example, [1, 2, 3] is an -exact subsequence of [0, 0, 1, 2, 3, 0] but not of [0, 0, 1, 2, 0, 3, 0]. - -##### Args: - - -* <b>`container`</b>: the list we're testing for subsequence inclusion. -* <b>`subsequence`</b>: the list we hope will be an exact subsequence of container. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsInOrder(strings, target, msg=None)` {#TestCase.assertContainsInOrder} - -Asserts that the strings provided are found in the target in order. - -This may be useful for checking HTML output. - -##### Args: - - -* <b>`strings`</b>: A list of strings, such as [ 'fox', 'dog' ] -* <b>`target`</b>: A target string in which to look for the strings, such as - 'The quick brown fox jumped over the lazy dog'. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsSubsequence(container, subsequence, msg=None)` {#TestCase.assertContainsSubsequence} - -Assert that "container" contains "subsequence" as a subsequence. - -Asserts that "container" contains all the elements of "subsequence", in -order, but possibly with other elements interspersed. For example, [1, 2, 3] -is a subsequence of [0, 0, 1, 2, 0, 3, 0] but not of [0, 0, 1, 3, 0, 2, 0]. - -##### Args: - - -* <b>`container`</b>: the list we're testing for subsequence inclusion. -* <b>`subsequence`</b>: the list we hope will be a subsequence of container. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsSubset(expected_subset, actual_set, msg=None)` {#TestCase.assertContainsSubset} - -Checks whether actual iterable is a superset of expected iterable. - - -- - - - -#### `tf.test.TestCase.assertCountEqual(*args, **kwargs)` {#TestCase.assertCountEqual} - -An unordered sequence specific comparison. - -Equivalent to assertItemsEqual(). This method is a compatibility layer -for Python 3k, since 2to3 does not convert assertItemsEqual() calls into -assertCountEqual() calls. - -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`msg`</b>: The message to be printed if the test fails. - - -- - - - #### `tf.test.TestCase.assertDeviceEqual(device1, device2)` {#TestCase.assertDeviceEqual} Asserts that the two given devices are the same. @@ -318,49 +199,10 @@ Checks whether actual is a superset of expected. - - - -#### `tf.test.TestCase.assertDictEqual(a, b, msg=None)` {#TestCase.assertDictEqual} +#### `tf.test.TestCase.assertDictEqual(d1, d2, msg=None)` {#TestCase.assertDictEqual} -Raises AssertionError if a and b are not equal dictionaries. - -##### Args: - - -* <b>`a`</b>: A dict, the expected value. -* <b>`b`</b>: A dict, the actual value. -* <b>`msg`</b>: An optional str, the associated message. - -##### Raises: - - -* <b>`AssertionError`</b>: if the dictionaries are not equal. - - -- - - - -#### `tf.test.TestCase.assertEmpty(container, msg=None)` {#TestCase.assertEmpty} - -Assert that an object has zero length. - -##### Args: - - -* <b>`container`</b>: Anything that implements the collections.Sized interface. -* <b>`msg`</b>: Optional message to report on failure. -- - - - -#### `tf.test.TestCase.assertEndsWith(actual, expected_end, msg=None)` {#TestCase.assertEndsWith} - -Assert that actual.endswith(expected_end) is True. - -##### Args: - - -* <b>`actual`</b>: str -* <b>`expected_end`</b>: str -* <b>`msg`</b>: Optional message to report on failure. - - - - @@ -444,11 +286,10 @@ Included for symmetry with assertIsNone. - - - -#### `tf.test.TestCase.assertItemsEqual(*args, **kwargs)` {#TestCase.assertItemsEqual} - -An unordered sequence specific comparison. +#### `tf.test.TestCase.assertItemsEqual(expected_seq, actual_seq, msg=None)` {#TestCase.assertItemsEqual} -It asserts that actual_seq and expected_seq have the same element counts. +An unordered sequence specific comparison. It asserts that +actual_seq and expected_seq have the same element counts. Equivalent to:: self.assertEqual(Counter(iter(actual_seq)), @@ -461,30 +302,6 @@ Asserts that each element has the same count in both sequences. - [0, 1, 1] and [1, 0, 1] compare equal. - [0, 0, 1] and [0, 1] compare unequal. -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`msg`</b>: The message to be printed if the test fails. - - -- - - - -#### `tf.test.TestCase.assertJsonEqual(first, second, msg=None)` {#TestCase.assertJsonEqual} - -Asserts that the JSON objects defined in two strings are equal. - -A summary of the differences will be included in the failure message -using assertSameStructure. - -##### Args: - - -* <b>`first`</b>: A string contining JSON to decode and compare to second. -* <b>`second`</b>: A string contining JSON to decode and compare to first. -* <b>`msg`</b>: Additional text to include in the failure message. - - - - @@ -556,13 +373,6 @@ if not. - - - -#### `tf.test.TestCase.assertNoCommonElements(expected_seq, actual_seq, msg=None)` {#TestCase.assertNoCommonElements} - -Checks whether actual iterable and expected iterable are disjoint. - - -- - - - #### `tf.test.TestCase.assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)` {#TestCase.assertNotAlmostEqual} Fail if the two objects are equal as determined by their @@ -593,33 +403,6 @@ Objects that are equal automatically fail. - - - -#### `tf.test.TestCase.assertNotEmpty(container, msg=None)` {#TestCase.assertNotEmpty} - -Assert that an object has non-zero length. - -##### Args: - - -* <b>`container`</b>: Anything that implements the collections.Sized interface. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertNotEndsWith(actual, unexpected_end, msg=None)` {#TestCase.assertNotEndsWith} - -Assert that actual.endswith(unexpected_end) is False. - -##### Args: - - -* <b>`actual`</b>: str -* <b>`unexpected_end`</b>: str -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - #### `tf.test.TestCase.assertNotEqual(first, second, msg=None)` {#TestCase.assertNotEqual} Fail if the two objects are equal as determined by the '!=' @@ -657,20 +440,6 @@ Fail the test if the text matches the regular expression. - - - -#### `tf.test.TestCase.assertNotStartsWith(actual, unexpected_start, msg=None)` {#TestCase.assertNotStartsWith} - -Assert that actual.startswith(unexpected_start) is False. - -##### Args: - - -* <b>`actual`</b>: str -* <b>`unexpected_start`</b>: str -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - #### `tf.test.TestCase.assertProtoEquals(expected_message_maybe_ascii, message)` {#TestCase.assertProtoEquals} Asserts that message is same as parsed expected_message_ascii. @@ -745,38 +514,6 @@ Asserts that the message in a raised exception matches a regexp. - - - -#### `tf.test.TestCase.assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)` {#TestCase.assertRaisesWithLiteralMatch} - -Asserts that the message in a raised exception equals the given string. - -Unlike assertRaisesRegexp, this method takes a literal string, not -a regular expression. - -with self.assertRaisesWithLiteralMatch(ExType, 'message'): - DoSomething() - -##### Args: - - -* <b>`expected_exception`</b>: Exception class expected to be raised. -* <b>`expected_exception_message`</b>: String message expected in the raised - exception. For a raise exception e, expected_exception_message must - equal str(e). -* <b>`callable_obj`</b>: Function to be called, or None to return a context. -* <b>`args`</b>: Extra args. -* <b>`kwargs`</b>: Extra kwargs. - -##### Returns: - - A context manager if callable_obj is None. Otherwise, None. - -##### Raises: - - self.failureException if callable_obj does not raise a macthing exception. - - -- - - - #### `tf.test.TestCase.assertRaisesWithPredicateMatch(exception_type, expected_err_re_or_predicate)` {#TestCase.assertRaisesWithPredicateMatch} Returns a context manager to enclose code expected to raise an exception. @@ -801,71 +538,6 @@ predicate search. - - - -#### `tf.test.TestCase.assertRaisesWithRegexpMatch(expected_exception, expected_regexp, callable_obj=None, *args, **kwargs)` {#TestCase.assertRaisesWithRegexpMatch} - -Asserts that the message in a raised exception matches the given regexp. - -This is just a wrapper around assertRaisesRegexp. Please use -assertRaisesRegexp instead of assertRaisesWithRegexpMatch. - -##### Args: - - -* <b>`expected_exception`</b>: Exception class expected to be raised. -* <b>`expected_regexp`</b>: Regexp (re pattern object or string) expected to be - found in error message. -* <b>`callable_obj`</b>: Function to be called, or None to return a context. -* <b>`args`</b>: Extra args. -* <b>`kwargs`</b>: Extra keyword args. - -##### Returns: - - A context manager if callable_obj is None. Otherwise, None. - -##### Raises: - - self.failureException if callable_obj does not raise a macthing exception. - - -- - - - -#### `tf.test.TestCase.assertRegexMatch(actual_str, regexes, message=None)` {#TestCase.assertRegexMatch} - -Asserts that at least one regex in regexes matches str. - - If possible you should use assertRegexpMatches, which is a simpler - version of this method. assertRegexpMatches takes a single regular - expression (a string or re compiled object) instead of a list. - - Notes: - 1. This function uses substring matching, i.e. the matching - succeeds if *any* substring of the error message matches *any* - regex in the list. This is more convenient for the user than - full-string matching. - - 2. If regexes is the empty list, the matching will always fail. - - 3. Use regexes=[''] for a regex that will always pass. - - 4. '.' matches any single character *except* the newline. To - match any character, use '(.| -)'. - - 5. '^' matches the beginning of each line, not just the beginning - of the string. Similarly, '$' matches the end of each line. - - 6. An exception will be thrown if regexes contains an invalid - regex. - - Args: - actual_str: The string we try to match with the items in regexes. - regexes: The regular expressions we want to match against str. - See "Notes" above for detailed notes on how this is interpreted. - message: The message to be printed if the test fails. - - -- - - - #### `tf.test.TestCase.assertRegexpMatches(text, expected_regexp, msg=None)` {#TestCase.assertRegexpMatches} Fail the test unless the text matches the regular expression. @@ -873,79 +545,6 @@ Fail the test unless the text matches the regular expression. - - - -#### `tf.test.TestCase.assertSameElements(expected_seq, actual_seq, msg=None)` {#TestCase.assertSameElements} - -Assert that two sequences have the same elements (in any order). - -This method, unlike assertItemsEqual, doesn't care about any -duplicates in the expected and actual sequences. - - >> assertSameElements([1, 1, 1, 0, 0, 0], [0, 1]) - # Doesn't raise an AssertionError - -If possible, you should use assertItemsEqual instead of -assertSameElements. - -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`msg`</b>: The message to be printed if the test fails. - - -- - - - -#### `tf.test.TestCase.assertSameStructure(a, b, aname='a', bname='b', msg=None)` {#TestCase.assertSameStructure} - -Asserts that two values contain the same structural content. - -The two arguments should be data trees consisting of trees of dicts and -lists. They will be deeply compared by walking into the contents of dicts -and lists; other items will be compared using the == operator. -If the two structures differ in content, the failure message will indicate -the location within the structures where the first difference is found. -This may be helpful when comparing large structures. - -##### Args: - - -* <b>`a`</b>: The first structure to compare. -* <b>`b`</b>: The second structure to compare. -* <b>`aname`</b>: Variable name to use for the first structure in assertion messages. -* <b>`bname`</b>: Variable name to use for the second structure. -* <b>`msg`</b>: Additional text to include in the failure message. - - -- - - - -#### `tf.test.TestCase.assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)` {#TestCase.assertSequenceAlmostEqual} - -An approximate equality assertion for ordered sequences. - -Fail if the two sequences are unequal as determined by their value -differences rounded to the given number of decimal places (default 7) and -comparing to zero, or by comparing that the difference between each value -in the two sequences is more than the given delta. - -Note that decimal places (from zero) are usually not the same as significant -digits (measured from the most signficant digit). - -If the two sequences compare equal then they will automatically compare -almost equal. - -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`places`</b>: The number of decimal places to compare. -* <b>`msg`</b>: The message to be printed if the test fails. -* <b>`delta`</b>: The OK difference between compared values. - - -- - - - #### `tf.test.TestCase.assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)` {#TestCase.assertSequenceEqual} An equality assertion for ordered sequences (like lists and tuples). @@ -966,26 +565,6 @@ which can be indexed, has a length, and has an equality operator. - - - -#### `tf.test.TestCase.assertSequenceStartsWith(prefix, whole, msg=None)` {#TestCase.assertSequenceStartsWith} - -An equality assertion for the beginning of ordered sequences. - -If prefix is an empty sequence, it will raise an error unless whole is also -an empty sequence. - -If prefix is not a sequence, it will raise an error if the first element of -whole does not match. - -##### Args: - - -* <b>`prefix`</b>: A sequence expected at the beginning of the whole parameter. -* <b>`whole`</b>: The sequence in which to look for prefix. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - #### `tf.test.TestCase.assertSetEqual(set1, set2, msg=None)` {#TestCase.assertSetEqual} A set-specific equality assertion. @@ -1037,51 +616,6 @@ Assert that actual.startswith(expected_start) is True. - - - -#### `tf.test.TestCase.assertTotallyOrdered(*groups, **kwargs)` {#TestCase.assertTotallyOrdered} - -Asserts that total ordering has been implemented correctly. - -For example, say you have a class A that compares only on its attribute x. -Comparators other than __lt__ are omitted for brevity. - -class A(object): - def __init__(self, x, y): - self.x = x - self.y = y - - def __hash__(self): - return hash(self.x) - - def __lt__(self, other): - try: - return self.x < other.x - except AttributeError: - return NotImplemented - -assertTotallyOrdered will check that instances can be ordered correctly. -For example, - -self.assertTotallyOrdered( - [None], # None should come before everything else. - [1], # Integers sort earlier. - [A(1, 'a')], - [A(2, 'b')], # 2 is after 1. - [A(3, 'c'), A(3, 'd')], # The second argument is irrelevant. - [A(4, 'z')], - ['foo']) # Strings sort last. - -##### Args: - - -* <b>`*groups`</b>: A list of groups of elements. Each group of elements is a list - of objects that are equal. The elements in each group must be less than - the elements in the group after it. For example, these groups are - totally ordered: [None], [1], [2, 2], [3]. -* <b>`**kwargs`</b>: optional msg keyword argument can be passed. - - -- - - - #### `tf.test.TestCase.assertTrue(expr, msg=None)` {#TestCase.assertTrue} Check that the expression is true. @@ -1104,13 +638,6 @@ A tuple-specific equality assertion. - - - -#### `tf.test.TestCase.assertUrlEqual(a, b, msg=None)` {#TestCase.assertUrlEqual} - -Asserts that urls are equal, ignoring ordering of query params. - - -- - - - #### `tf.test.TestCase.assert_(expr, msg=None)` {#TestCase.assert_} Check that the expression is true. @@ -1170,9 +697,9 @@ tearDown. - - - -#### `tf.test.TestCase.fail(msg=None, prefix=None)` {#TestCase.fail} +#### `tf.test.TestCase.fail(msg=None)` {#TestCase.fail} -Fail immediately with the given message, optionally prefixed. +Fail immediately, with the given message. - - - @@ -1226,13 +753,6 @@ Fail immediately with the given message, optionally prefixed. - - - -#### `tf.test.TestCase.getRecordedProperties()` {#TestCase.getRecordedProperties} - -Return any properties that the user has recorded. - - -- - - - #### `tf.test.TestCase.get_temp_dir()` {#TestCase.get_temp_dir} Returns a unique temporary directory for the test to use. @@ -1255,20 +775,6 @@ pollute each others environment. - - - -#### `tf.test.TestCase.recordProperty(property_name, property_value)` {#TestCase.recordProperty} - -Record an arbitrary property for later use. - -##### Args: - - -* <b>`property_name`</b>: str, name of property to record; must be a valid XML - attribute name -* <b>`property_value`</b>: value of property; must be valid XML attribute value - - -- - - - #### `tf.test.TestCase.run(result=None)` {#TestCase.run} @@ -1292,18 +798,11 @@ Hook method for setting up class fixture before running tests in the class. #### `tf.test.TestCase.shortDescription()` {#TestCase.shortDescription} -Format both the test method name and the first line of its docstring. - -If no docstring is given, only returns the method name. - -This method overrides unittest.TestCase.shortDescription(), which -only returns the first line of the docstring, obscuring the name -of the test upon failure. - -##### Returns: - +Returns a one-line description of the test, or None if no +description has been provided. -* <b>`desc`</b>: A short description of a test method. +The default implementation of this method returns the first line of +the specified test method's docstring. - - - diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard4/tf.summary.SummaryDescription.RegisterExtension.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard4/tf.summary.SummaryDescription.RegisterExtension.md new file mode 100644 index 0000000000..3cfd7103d7 --- /dev/null +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard4/tf.summary.SummaryDescription.RegisterExtension.md @@ -0,0 +1,4 @@ +#### `tf.summary.SummaryDescription.RegisterExtension(extension_handle)` {#SummaryDescription.RegisterExtension} + + + diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard5/tf.summary.SummaryDescription.FromString.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard5/tf.summary.SummaryDescription.FromString.md new file mode 100644 index 0000000000..24a3b3f10c --- /dev/null +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard5/tf.summary.SummaryDescription.FromString.md @@ -0,0 +1,4 @@ +#### `tf.summary.SummaryDescription.FromString(s)` {#SummaryDescription.FromString} + + + diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard6/tf.summary.TaggedRunMetadata.RegisterExtension.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard6/tf.summary.TaggedRunMetadata.RegisterExtension.md new file mode 100644 index 0000000000..f2d0c042d7 --- /dev/null +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard6/tf.summary.TaggedRunMetadata.RegisterExtension.md @@ -0,0 +1,4 @@ +#### `tf.summary.TaggedRunMetadata.RegisterExtension(extension_handle)` {#TaggedRunMetadata.RegisterExtension} + + + diff --git a/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.summary.TaggedRunMetadata.FromString.md b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.summary.TaggedRunMetadata.FromString.md new file mode 100644 index 0000000000..613f4ebd73 --- /dev/null +++ b/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.summary.TaggedRunMetadata.FromString.md @@ -0,0 +1,4 @@ +#### `tf.summary.TaggedRunMetadata.FromString(s)` {#TaggedRunMetadata.FromString} + + + diff --git a/tensorflow/g3doc/api_docs/python/summary.md b/tensorflow/g3doc/api_docs/python/summary.md index 8d344036db..be029f4290 100644 --- a/tensorflow/g3doc/api_docs/python/summary.md +++ b/tensorflow/g3doc/api_docs/python/summary.md @@ -487,11 +487,248 @@ metadata is stored in its NodeDef. This method retrieves the description. - - - +#### `tf.summary.SummaryDescription.ByteSize()` {#SummaryDescription.ByteSize} + + + + +- - - + +#### `tf.summary.SummaryDescription.Clear()` {#SummaryDescription.Clear} + + + + +- - - + +#### `tf.summary.SummaryDescription.ClearExtension(extension_handle)` {#SummaryDescription.ClearExtension} + + + + +- - - + +#### `tf.summary.SummaryDescription.ClearField(field_name)` {#SummaryDescription.ClearField} + + + + +- - - + +#### `tf.summary.SummaryDescription.CopyFrom(other_msg)` {#SummaryDescription.CopyFrom} + +Copies the content of the specified message into the current message. + +The method clears the current message and then merges the specified +message using MergeFrom. + +##### Args: + + +* <b>`other_msg`</b>: Message to copy into the current one. + + +- - - + +#### `tf.summary.SummaryDescription.DiscardUnknownFields()` {#SummaryDescription.DiscardUnknownFields} + + + + +- - - + +#### `tf.summary.SummaryDescription.FindInitializationErrors()` {#SummaryDescription.FindInitializationErrors} + +Finds required fields which are not initialized. + +##### Returns: + + A list of strings. Each string is a path to an uninitialized field from + the top-level message, e.g. "foo.bar[5].baz". + + +- - - + +#### `tf.summary.SummaryDescription.FromString(s)` {#SummaryDescription.FromString} + + + + +- - - + +#### `tf.summary.SummaryDescription.HasExtension(extension_handle)` {#SummaryDescription.HasExtension} + + + + +- - - + +#### `tf.summary.SummaryDescription.HasField(field_name)` {#SummaryDescription.HasField} + + + + +- - - + +#### `tf.summary.SummaryDescription.IsInitialized(errors=None)` {#SummaryDescription.IsInitialized} + +Checks if all required fields of a message are set. + +##### Args: + + +* <b>`errors`</b>: A list which, if provided, will be populated with the field + paths of all missing required fields. + +##### Returns: + + True iff the specified message has all required fields set. + + +- - - + +#### `tf.summary.SummaryDescription.ListFields()` {#SummaryDescription.ListFields} + + + + +- - - + +#### `tf.summary.SummaryDescription.MergeFrom(msg)` {#SummaryDescription.MergeFrom} + + + + +- - - + +#### `tf.summary.SummaryDescription.MergeFromString(serialized)` {#SummaryDescription.MergeFromString} + + + + +- - - + +#### `tf.summary.SummaryDescription.ParseFromString(serialized)` {#SummaryDescription.ParseFromString} + +Parse serialized protocol buffer data into this message. + +Like MergeFromString(), except we clear the object first and +do not return the value that MergeFromString returns. + + +- - - + +#### `tf.summary.SummaryDescription.RegisterExtension(extension_handle)` {#SummaryDescription.RegisterExtension} + + + + +- - - + +#### `tf.summary.SummaryDescription.SerializePartialToString()` {#SummaryDescription.SerializePartialToString} + + + + +- - - + +#### `tf.summary.SummaryDescription.SerializeToString()` {#SummaryDescription.SerializeToString} + + + + +- - - + +#### `tf.summary.SummaryDescription.SetInParent()` {#SummaryDescription.SetInParent} + +Sets the _cached_byte_size_dirty bit to true, +and propagates this to our listener iff this was a state change. + + +- - - + +#### `tf.summary.SummaryDescription.WhichOneof(oneof_name)` {#SummaryDescription.WhichOneof} + +Returns the name of the currently set field inside a oneof, or None. + + +- - - + +#### `tf.summary.SummaryDescription.__deepcopy__(memo=None)` {#SummaryDescription.__deepcopy__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__eq__(other)` {#SummaryDescription.__eq__} + + + + +- - - + #### `tf.summary.SummaryDescription.__getstate__()` {#SummaryDescription.__getstate__} Support the pickle protocol. +- - - + +#### `tf.summary.SummaryDescription.__hash__()` {#SummaryDescription.__hash__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__init__(**kwargs)` {#SummaryDescription.__init__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__ne__(other_msg)` {#SummaryDescription.__ne__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__repr__()` {#SummaryDescription.__repr__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__setstate__(state)` {#SummaryDescription.__setstate__} + +Support the pickle protocol. + + +- - - + +#### `tf.summary.SummaryDescription.__str__()` {#SummaryDescription.__str__} + + + + +- - - + +#### `tf.summary.SummaryDescription.__unicode__()` {#SummaryDescription.__unicode__} + + + + +- - - + +#### `tf.summary.SummaryDescription.type_hint` {#SummaryDescription.type_hint} + +Magic attribute generated for "type_hint" proto field. + + - - - @@ -500,9 +737,253 @@ Support the pickle protocol. - - - +#### `tf.summary.TaggedRunMetadata.ByteSize()` {#TaggedRunMetadata.ByteSize} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.Clear()` {#TaggedRunMetadata.Clear} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.ClearExtension(extension_handle)` {#TaggedRunMetadata.ClearExtension} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.ClearField(field_name)` {#TaggedRunMetadata.ClearField} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.CopyFrom(other_msg)` {#TaggedRunMetadata.CopyFrom} + +Copies the content of the specified message into the current message. + +The method clears the current message and then merges the specified +message using MergeFrom. + +##### Args: + + +* <b>`other_msg`</b>: Message to copy into the current one. + + +- - - + +#### `tf.summary.TaggedRunMetadata.DiscardUnknownFields()` {#TaggedRunMetadata.DiscardUnknownFields} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.FindInitializationErrors()` {#TaggedRunMetadata.FindInitializationErrors} + +Finds required fields which are not initialized. + +##### Returns: + + A list of strings. Each string is a path to an uninitialized field from + the top-level message, e.g. "foo.bar[5].baz". + + +- - - + +#### `tf.summary.TaggedRunMetadata.FromString(s)` {#TaggedRunMetadata.FromString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.HasExtension(extension_handle)` {#TaggedRunMetadata.HasExtension} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.HasField(field_name)` {#TaggedRunMetadata.HasField} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.IsInitialized(errors=None)` {#TaggedRunMetadata.IsInitialized} + +Checks if all required fields of a message are set. + +##### Args: + + +* <b>`errors`</b>: A list which, if provided, will be populated with the field + paths of all missing required fields. + +##### Returns: + + True iff the specified message has all required fields set. + + +- - - + +#### `tf.summary.TaggedRunMetadata.ListFields()` {#TaggedRunMetadata.ListFields} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.MergeFrom(msg)` {#TaggedRunMetadata.MergeFrom} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.MergeFromString(serialized)` {#TaggedRunMetadata.MergeFromString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.ParseFromString(serialized)` {#TaggedRunMetadata.ParseFromString} + +Parse serialized protocol buffer data into this message. + +Like MergeFromString(), except we clear the object first and +do not return the value that MergeFromString returns. + + +- - - + +#### `tf.summary.TaggedRunMetadata.RegisterExtension(extension_handle)` {#TaggedRunMetadata.RegisterExtension} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.SerializePartialToString()` {#TaggedRunMetadata.SerializePartialToString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.SerializeToString()` {#TaggedRunMetadata.SerializeToString} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.SetInParent()` {#TaggedRunMetadata.SetInParent} + +Sets the _cached_byte_size_dirty bit to true, +and propagates this to our listener iff this was a state change. + + +- - - + +#### `tf.summary.TaggedRunMetadata.WhichOneof(oneof_name)` {#TaggedRunMetadata.WhichOneof} + +Returns the name of the currently set field inside a oneof, or None. + + +- - - + +#### `tf.summary.TaggedRunMetadata.__deepcopy__(memo=None)` {#TaggedRunMetadata.__deepcopy__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__eq__(other)` {#TaggedRunMetadata.__eq__} + + + + +- - - + #### `tf.summary.TaggedRunMetadata.__getstate__()` {#TaggedRunMetadata.__getstate__} Support the pickle protocol. +- - - + +#### `tf.summary.TaggedRunMetadata.__hash__()` {#TaggedRunMetadata.__hash__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__init__(**kwargs)` {#TaggedRunMetadata.__init__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__ne__(other_msg)` {#TaggedRunMetadata.__ne__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__repr__()` {#TaggedRunMetadata.__repr__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__setstate__(state)` {#TaggedRunMetadata.__setstate__} + +Support the pickle protocol. + + +- - - + +#### `tf.summary.TaggedRunMetadata.__str__()` {#TaggedRunMetadata.__str__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.__unicode__()` {#TaggedRunMetadata.__unicode__} + + + + +- - - + +#### `tf.summary.TaggedRunMetadata.run_metadata` {#TaggedRunMetadata.run_metadata} + +Magic attribute generated for "run_metadata" proto field. + + +- - - + +#### `tf.summary.TaggedRunMetadata.tag` {#TaggedRunMetadata.tag} + +Magic attribute generated for "tag" proto field. + + diff --git a/tensorflow/g3doc/api_docs/python/test.md b/tensorflow/g3doc/api_docs/python/test.md index d86e7379df..f3276b77c1 100644 --- a/tensorflow/g3doc/api_docs/python/test.md +++ b/tensorflow/g3doc/api_docs/python/test.md @@ -219,125 +219,6 @@ Checks that for all elements of farray1 and farray2 - - - -#### `tf.test.TestCase.assertBetween(value, minv, maxv, msg=None)` {#TestCase.assertBetween} - -Asserts that value is between minv and maxv (inclusive). - - -- - - - -#### `tf.test.TestCase.assertCommandFails(command, regexes, env=None, close_fds=True, msg=None)` {#TestCase.assertCommandFails} - -Asserts a shell command fails and the error matches a regex in a list. - -##### Args: - - -* <b>`command`</b>: List or string representing the command to run. -* <b>`regexes`</b>: the list of regular expression strings. -* <b>`env`</b>: Dictionary of environment variable settings. -* <b>`close_fds`</b>: Whether or not to close all open fd's in the child after - forking. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertCommandSucceeds(command, regexes=('',), env=None, close_fds=True, msg=None)` {#TestCase.assertCommandSucceeds} - -Asserts that a shell command succeeds (i.e. exits with code 0). - -##### Args: - - -* <b>`command`</b>: List or string representing the command to run. -* <b>`regexes`</b>: List of regular expression byte strings that match success. -* <b>`env`</b>: Dictionary of environment variable settings. -* <b>`close_fds`</b>: Whether or not to close all open fd's in the child after - forking. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsExactSubsequence(container, subsequence, msg=None)` {#TestCase.assertContainsExactSubsequence} - -Assert that "container" contains "subsequence" as an exact subsequence. - -Asserts that "container" contains all the elements of "subsequence", in -order, and without other elements interspersed. For example, [1, 2, 3] is an -exact subsequence of [0, 0, 1, 2, 3, 0] but not of [0, 0, 1, 2, 0, 3, 0]. - -##### Args: - - -* <b>`container`</b>: the list we're testing for subsequence inclusion. -* <b>`subsequence`</b>: the list we hope will be an exact subsequence of container. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsInOrder(strings, target, msg=None)` {#TestCase.assertContainsInOrder} - -Asserts that the strings provided are found in the target in order. - -This may be useful for checking HTML output. - -##### Args: - - -* <b>`strings`</b>: A list of strings, such as [ 'fox', 'dog' ] -* <b>`target`</b>: A target string in which to look for the strings, such as - 'The quick brown fox jumped over the lazy dog'. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsSubsequence(container, subsequence, msg=None)` {#TestCase.assertContainsSubsequence} - -Assert that "container" contains "subsequence" as a subsequence. - -Asserts that "container" contains all the elements of "subsequence", in -order, but possibly with other elements interspersed. For example, [1, 2, 3] -is a subsequence of [0, 0, 1, 2, 0, 3, 0] but not of [0, 0, 1, 3, 0, 2, 0]. - -##### Args: - - -* <b>`container`</b>: the list we're testing for subsequence inclusion. -* <b>`subsequence`</b>: the list we hope will be a subsequence of container. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertContainsSubset(expected_subset, actual_set, msg=None)` {#TestCase.assertContainsSubset} - -Checks whether actual iterable is a superset of expected iterable. - - -- - - - -#### `tf.test.TestCase.assertCountEqual(*args, **kwargs)` {#TestCase.assertCountEqual} - -An unordered sequence specific comparison. - -Equivalent to assertItemsEqual(). This method is a compatibility layer -for Python 3k, since 2to3 does not convert assertItemsEqual() calls into -assertCountEqual() calls. - -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`msg`</b>: The message to be printed if the test fails. - - -- - - - #### `tf.test.TestCase.assertDeviceEqual(device1, device2)` {#TestCase.assertDeviceEqual} Asserts that the two given devices are the same. @@ -358,49 +239,10 @@ Checks whether actual is a superset of expected. - - - -#### `tf.test.TestCase.assertDictEqual(a, b, msg=None)` {#TestCase.assertDictEqual} +#### `tf.test.TestCase.assertDictEqual(d1, d2, msg=None)` {#TestCase.assertDictEqual} -Raises AssertionError if a and b are not equal dictionaries. - -##### Args: - - -* <b>`a`</b>: A dict, the expected value. -* <b>`b`</b>: A dict, the actual value. -* <b>`msg`</b>: An optional str, the associated message. - -##### Raises: - - -* <b>`AssertionError`</b>: if the dictionaries are not equal. - - -- - - - -#### `tf.test.TestCase.assertEmpty(container, msg=None)` {#TestCase.assertEmpty} - -Assert that an object has zero length. - -##### Args: - - -* <b>`container`</b>: Anything that implements the collections.Sized interface. -* <b>`msg`</b>: Optional message to report on failure. -- - - - -#### `tf.test.TestCase.assertEndsWith(actual, expected_end, msg=None)` {#TestCase.assertEndsWith} - -Assert that actual.endswith(expected_end) is True. - -##### Args: - - -* <b>`actual`</b>: str -* <b>`expected_end`</b>: str -* <b>`msg`</b>: Optional message to report on failure. - - - - @@ -484,11 +326,10 @@ Included for symmetry with assertIsNone. - - - -#### `tf.test.TestCase.assertItemsEqual(*args, **kwargs)` {#TestCase.assertItemsEqual} - -An unordered sequence specific comparison. +#### `tf.test.TestCase.assertItemsEqual(expected_seq, actual_seq, msg=None)` {#TestCase.assertItemsEqual} -It asserts that actual_seq and expected_seq have the same element counts. +An unordered sequence specific comparison. It asserts that +actual_seq and expected_seq have the same element counts. Equivalent to:: self.assertEqual(Counter(iter(actual_seq)), @@ -501,30 +342,6 @@ Asserts that each element has the same count in both sequences. - [0, 1, 1] and [1, 0, 1] compare equal. - [0, 0, 1] and [0, 1] compare unequal. -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`msg`</b>: The message to be printed if the test fails. - - -- - - - -#### `tf.test.TestCase.assertJsonEqual(first, second, msg=None)` {#TestCase.assertJsonEqual} - -Asserts that the JSON objects defined in two strings are equal. - -A summary of the differences will be included in the failure message -using assertSameStructure. - -##### Args: - - -* <b>`first`</b>: A string contining JSON to decode and compare to second. -* <b>`second`</b>: A string contining JSON to decode and compare to first. -* <b>`msg`</b>: Additional text to include in the failure message. - - - - @@ -596,13 +413,6 @@ if not. - - - -#### `tf.test.TestCase.assertNoCommonElements(expected_seq, actual_seq, msg=None)` {#TestCase.assertNoCommonElements} - -Checks whether actual iterable and expected iterable are disjoint. - - -- - - - #### `tf.test.TestCase.assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)` {#TestCase.assertNotAlmostEqual} Fail if the two objects are equal as determined by their @@ -633,33 +443,6 @@ Objects that are equal automatically fail. - - - -#### `tf.test.TestCase.assertNotEmpty(container, msg=None)` {#TestCase.assertNotEmpty} - -Assert that an object has non-zero length. - -##### Args: - - -* <b>`container`</b>: Anything that implements the collections.Sized interface. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - -#### `tf.test.TestCase.assertNotEndsWith(actual, unexpected_end, msg=None)` {#TestCase.assertNotEndsWith} - -Assert that actual.endswith(unexpected_end) is False. - -##### Args: - - -* <b>`actual`</b>: str -* <b>`unexpected_end`</b>: str -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - #### `tf.test.TestCase.assertNotEqual(first, second, msg=None)` {#TestCase.assertNotEqual} Fail if the two objects are equal as determined by the '!=' @@ -697,20 +480,6 @@ Fail the test if the text matches the regular expression. - - - -#### `tf.test.TestCase.assertNotStartsWith(actual, unexpected_start, msg=None)` {#TestCase.assertNotStartsWith} - -Assert that actual.startswith(unexpected_start) is False. - -##### Args: - - -* <b>`actual`</b>: str -* <b>`unexpected_start`</b>: str -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - #### `tf.test.TestCase.assertProtoEquals(expected_message_maybe_ascii, message)` {#TestCase.assertProtoEquals} Asserts that message is same as parsed expected_message_ascii. @@ -785,38 +554,6 @@ Asserts that the message in a raised exception matches a regexp. - - - -#### `tf.test.TestCase.assertRaisesWithLiteralMatch(expected_exception, expected_exception_message, callable_obj=None, *args, **kwargs)` {#TestCase.assertRaisesWithLiteralMatch} - -Asserts that the message in a raised exception equals the given string. - -Unlike assertRaisesRegexp, this method takes a literal string, not -a regular expression. - -with self.assertRaisesWithLiteralMatch(ExType, 'message'): - DoSomething() - -##### Args: - - -* <b>`expected_exception`</b>: Exception class expected to be raised. -* <b>`expected_exception_message`</b>: String message expected in the raised - exception. For a raise exception e, expected_exception_message must - equal str(e). -* <b>`callable_obj`</b>: Function to be called, or None to return a context. -* <b>`args`</b>: Extra args. -* <b>`kwargs`</b>: Extra kwargs. - -##### Returns: - - A context manager if callable_obj is None. Otherwise, None. - -##### Raises: - - self.failureException if callable_obj does not raise a macthing exception. - - -- - - - #### `tf.test.TestCase.assertRaisesWithPredicateMatch(exception_type, expected_err_re_or_predicate)` {#TestCase.assertRaisesWithPredicateMatch} Returns a context manager to enclose code expected to raise an exception. @@ -841,71 +578,6 @@ predicate search. - - - -#### `tf.test.TestCase.assertRaisesWithRegexpMatch(expected_exception, expected_regexp, callable_obj=None, *args, **kwargs)` {#TestCase.assertRaisesWithRegexpMatch} - -Asserts that the message in a raised exception matches the given regexp. - -This is just a wrapper around assertRaisesRegexp. Please use -assertRaisesRegexp instead of assertRaisesWithRegexpMatch. - -##### Args: - - -* <b>`expected_exception`</b>: Exception class expected to be raised. -* <b>`expected_regexp`</b>: Regexp (re pattern object or string) expected to be - found in error message. -* <b>`callable_obj`</b>: Function to be called, or None to return a context. -* <b>`args`</b>: Extra args. -* <b>`kwargs`</b>: Extra keyword args. - -##### Returns: - - A context manager if callable_obj is None. Otherwise, None. - -##### Raises: - - self.failureException if callable_obj does not raise a macthing exception. - - -- - - - -#### `tf.test.TestCase.assertRegexMatch(actual_str, regexes, message=None)` {#TestCase.assertRegexMatch} - -Asserts that at least one regex in regexes matches str. - - If possible you should use assertRegexpMatches, which is a simpler - version of this method. assertRegexpMatches takes a single regular - expression (a string or re compiled object) instead of a list. - - Notes: - 1. This function uses substring matching, i.e. the matching - succeeds if *any* substring of the error message matches *any* - regex in the list. This is more convenient for the user than - full-string matching. - - 2. If regexes is the empty list, the matching will always fail. - - 3. Use regexes=[''] for a regex that will always pass. - - 4. '.' matches any single character *except* the newline. To - match any character, use '(.| -)'. - - 5. '^' matches the beginning of each line, not just the beginning - of the string. Similarly, '$' matches the end of each line. - - 6. An exception will be thrown if regexes contains an invalid - regex. - - Args: - actual_str: The string we try to match with the items in regexes. - regexes: The regular expressions we want to match against str. - See "Notes" above for detailed notes on how this is interpreted. - message: The message to be printed if the test fails. - - -- - - - #### `tf.test.TestCase.assertRegexpMatches(text, expected_regexp, msg=None)` {#TestCase.assertRegexpMatches} Fail the test unless the text matches the regular expression. @@ -913,79 +585,6 @@ Fail the test unless the text matches the regular expression. - - - -#### `tf.test.TestCase.assertSameElements(expected_seq, actual_seq, msg=None)` {#TestCase.assertSameElements} - -Assert that two sequences have the same elements (in any order). - -This method, unlike assertItemsEqual, doesn't care about any -duplicates in the expected and actual sequences. - - >> assertSameElements([1, 1, 1, 0, 0, 0], [0, 1]) - # Doesn't raise an AssertionError - -If possible, you should use assertItemsEqual instead of -assertSameElements. - -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`msg`</b>: The message to be printed if the test fails. - - -- - - - -#### `tf.test.TestCase.assertSameStructure(a, b, aname='a', bname='b', msg=None)` {#TestCase.assertSameStructure} - -Asserts that two values contain the same structural content. - -The two arguments should be data trees consisting of trees of dicts and -lists. They will be deeply compared by walking into the contents of dicts -and lists; other items will be compared using the == operator. -If the two structures differ in content, the failure message will indicate -the location within the structures where the first difference is found. -This may be helpful when comparing large structures. - -##### Args: - - -* <b>`a`</b>: The first structure to compare. -* <b>`b`</b>: The second structure to compare. -* <b>`aname`</b>: Variable name to use for the first structure in assertion messages. -* <b>`bname`</b>: Variable name to use for the second structure. -* <b>`msg`</b>: Additional text to include in the failure message. - - -- - - - -#### `tf.test.TestCase.assertSequenceAlmostEqual(expected_seq, actual_seq, places=None, msg=None, delta=None)` {#TestCase.assertSequenceAlmostEqual} - -An approximate equality assertion for ordered sequences. - -Fail if the two sequences are unequal as determined by their value -differences rounded to the given number of decimal places (default 7) and -comparing to zero, or by comparing that the difference between each value -in the two sequences is more than the given delta. - -Note that decimal places (from zero) are usually not the same as significant -digits (measured from the most signficant digit). - -If the two sequences compare equal then they will automatically compare -almost equal. - -##### Args: - - -* <b>`expected_seq`</b>: A sequence containing elements we are expecting. -* <b>`actual_seq`</b>: The sequence that we are testing. -* <b>`places`</b>: The number of decimal places to compare. -* <b>`msg`</b>: The message to be printed if the test fails. -* <b>`delta`</b>: The OK difference between compared values. - - -- - - - #### `tf.test.TestCase.assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)` {#TestCase.assertSequenceEqual} An equality assertion for ordered sequences (like lists and tuples). @@ -1006,26 +605,6 @@ which can be indexed, has a length, and has an equality operator. - - - -#### `tf.test.TestCase.assertSequenceStartsWith(prefix, whole, msg=None)` {#TestCase.assertSequenceStartsWith} - -An equality assertion for the beginning of ordered sequences. - -If prefix is an empty sequence, it will raise an error unless whole is also -an empty sequence. - -If prefix is not a sequence, it will raise an error if the first element of -whole does not match. - -##### Args: - - -* <b>`prefix`</b>: A sequence expected at the beginning of the whole parameter. -* <b>`whole`</b>: The sequence in which to look for prefix. -* <b>`msg`</b>: Optional message to report on failure. - - -- - - - #### `tf.test.TestCase.assertSetEqual(set1, set2, msg=None)` {#TestCase.assertSetEqual} A set-specific equality assertion. @@ -1077,51 +656,6 @@ Assert that actual.startswith(expected_start) is True. - - - -#### `tf.test.TestCase.assertTotallyOrdered(*groups, **kwargs)` {#TestCase.assertTotallyOrdered} - -Asserts that total ordering has been implemented correctly. - -For example, say you have a class A that compares only on its attribute x. -Comparators other than __lt__ are omitted for brevity. - -class A(object): - def __init__(self, x, y): - self.x = x - self.y = y - - def __hash__(self): - return hash(self.x) - - def __lt__(self, other): - try: - return self.x < other.x - except AttributeError: - return NotImplemented - -assertTotallyOrdered will check that instances can be ordered correctly. -For example, - -self.assertTotallyOrdered( - [None], # None should come before everything else. - [1], # Integers sort earlier. - [A(1, 'a')], - [A(2, 'b')], # 2 is after 1. - [A(3, 'c'), A(3, 'd')], # The second argument is irrelevant. - [A(4, 'z')], - ['foo']) # Strings sort last. - -##### Args: - - -* <b>`*groups`</b>: A list of groups of elements. Each group of elements is a list - of objects that are equal. The elements in each group must be less than - the elements in the group after it. For example, these groups are - totally ordered: [None], [1], [2, 2], [3]. -* <b>`**kwargs`</b>: optional msg keyword argument can be passed. - - -- - - - #### `tf.test.TestCase.assertTrue(expr, msg=None)` {#TestCase.assertTrue} Check that the expression is true. @@ -1144,13 +678,6 @@ A tuple-specific equality assertion. - - - -#### `tf.test.TestCase.assertUrlEqual(a, b, msg=None)` {#TestCase.assertUrlEqual} - -Asserts that urls are equal, ignoring ordering of query params. - - -- - - - #### `tf.test.TestCase.assert_(expr, msg=None)` {#TestCase.assert_} Check that the expression is true. @@ -1210,9 +737,9 @@ tearDown. - - - -#### `tf.test.TestCase.fail(msg=None, prefix=None)` {#TestCase.fail} +#### `tf.test.TestCase.fail(msg=None)` {#TestCase.fail} -Fail immediately with the given message, optionally prefixed. +Fail immediately, with the given message. - - - @@ -1266,13 +793,6 @@ Fail immediately with the given message, optionally prefixed. - - - -#### `tf.test.TestCase.getRecordedProperties()` {#TestCase.getRecordedProperties} - -Return any properties that the user has recorded. - - -- - - - #### `tf.test.TestCase.get_temp_dir()` {#TestCase.get_temp_dir} Returns a unique temporary directory for the test to use. @@ -1295,20 +815,6 @@ pollute each others environment. - - - -#### `tf.test.TestCase.recordProperty(property_name, property_value)` {#TestCase.recordProperty} - -Record an arbitrary property for later use. - -##### Args: - - -* <b>`property_name`</b>: str, name of property to record; must be a valid XML - attribute name -* <b>`property_value`</b>: value of property; must be valid XML attribute value - - -- - - - #### `tf.test.TestCase.run(result=None)` {#TestCase.run} @@ -1332,18 +838,11 @@ Hook method for setting up class fixture before running tests in the class. #### `tf.test.TestCase.shortDescription()` {#TestCase.shortDescription} -Format both the test method name and the first line of its docstring. - -If no docstring is given, only returns the method name. - -This method overrides unittest.TestCase.shortDescription(), which -only returns the first line of the docstring, obscuring the name -of the test upon failure. - -##### Returns: - +Returns a one-line description of the test, or None if no +description has been provided. -* <b>`desc`</b>: A short description of a test method. +The default implementation of this method returns the first line of +the specified test method's docstring. - - - diff --git a/tensorflow/g3doc/get_started/os_setup.md b/tensorflow/g3doc/get_started/os_setup.md index 7c968a5468..66c106d2c8 100644 --- a/tensorflow/g3doc/get_started/os_setup.md +++ b/tensorflow/g3doc/get_started/os_setup.md @@ -78,51 +78,51 @@ If the above commands do not work on your system, you can follow these instructi ```bash # Ubuntu/Linux 64-bit, CPU only, Python 2.7 -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp27-none-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp27-none-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp27-none-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp27-none-linux_x86_64.whl # Mac OS X, CPU only, Python 2.7: -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc1-py2-none-any.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py2-none-any.whl # Mac OS X, GPU enabled, Python 2.7: -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc1-py2-none-any.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py2-none-any.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.3 -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp33-cp33m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.3 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp33-cp33m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.4 -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp34-cp34m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.4 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp34-cp34m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.5 -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp35-cp35m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.5 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp35-cp35m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.6 -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp36-cp36m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.6 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp36-cp36m-linux_x86_64.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Mac OS X, CPU only, Python 3.4 or 3.5: -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc1-py3-none-any.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py3-none-any.whl # Mac OS X, GPU enabled, Python 3.4 or 3.5: -$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc1-py3-none-any.whl +$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py3-none-any.whl ``` Install TensorFlow: @@ -164,14 +164,14 @@ Both distributions include pip. To install the CPU-only version of TensorFlow, enter the following command at a command prompt: ```bat -C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0rc1-cp35-cp35m-win_amd64.whl +C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-1.0.0rc2-cp35-cp35m-win_amd64.whl ``` To install the GPU version of TensorFlow, enter the following command at a command prompt: ```bat -C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0rc1-cp35-cp35m-win_amd64.whl +C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-1.0.0rc2-cp35-cp35m-win_amd64.whl ``` You can now [test your installation](#test-the-tensorflow-installation). @@ -226,51 +226,51 @@ Now, install TensorFlow just as you would for a regular Pip installation. First ```bash # Ubuntu/Linux 64-bit, CPU only, Python 2.7 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp27-none-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp27-none-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp27-none-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp27-none-linux_x86_64.whl # Mac OS X, CPU only, Python 2.7: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc1-py2-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py2-none-any.whl # Mac OS X, GPU enabled, Python 2.7: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc1-py2-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py2-none-any.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.3 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp33-cp33m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.3 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp33-cp33m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.4 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp34-cp34m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.4 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp34-cp34m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.5 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp35-cp35m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.5 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp35-cp35m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.6 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp36-cp36m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.6 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp36-cp36m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Mac OS X, CPU only, Python 3.4 or 3.5: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc1-py3-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py3-none-any.whl # Mac OS X, GPU enabled, Python 3.4 or 3.5: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc1-py3-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py3-none-any.whl ``` Finally install TensorFlow: @@ -392,51 +392,51 @@ select the correct binary to install: ```bash # Ubuntu/Linux 64-bit, CPU only, Python 2.7 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp27-none-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp27-none-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 2.7 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp27-none-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp27-none-linux_x86_64.whl # Mac OS X, CPU only, Python 2.7: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc1-py2-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py2-none-any.whl # Mac OS X, GPU enabled, Python 2.7: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc1-py2-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py2-none-any.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.3 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp33-cp33m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.3 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp33-cp33m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp33-cp33m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.4 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp34-cp34m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.4 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp34-cp34m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp34-cp34m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.5 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp35-cp35m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.5 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp35-cp35m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp35-cp35m-linux_x86_64.whl # Ubuntu/Linux 64-bit, CPU only, Python 3.6 -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc1-cp36-cp36m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Ubuntu/Linux 64-bit, GPU enabled, Python 3.6 # Requires CUDA toolkit 8.0 and CuDNN v5. For other versions, see "Installing from sources" below. -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc1-cp36-cp36m-linux_x86_64.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.0rc2-cp36-cp36m-linux_x86_64.whl # Mac OS X, CPU only, Python 3.4 or 3.5: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc1-py3-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0rc2-py3-none-any.whl # Mac OS X, GPU enabled, Python 3.4 or 3.5: -(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc1-py3-none-any.whl +(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow_gpu-1.0.0rc2-py3-none-any.whl ``` Finally install TensorFlow: @@ -504,7 +504,7 @@ code. code. We also have tags with `latest` replaced by a released version (e.g., -`1.0.0-rc1-gpu`). +`1.0.0-rc2-gpu`). With Docker the installation is as follows: @@ -909,7 +909,7 @@ $ bazel build --config opt --config=sycl //tensorflow/tools/pip_package:build_pi $ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg # The name of the .whl file will depend on your platform. -$ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.0.0rc1-py2-none-any.whl +$ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.0.0rc2-py2-none-any.whl ``` ## Optimizing CPU performance @@ -1254,6 +1254,12 @@ installed, such as: $ pip install --upgrade protobuf ``` +Or (if you have protobuf installed with Homebrew): + +```bash +$ brew upgrade protobuf +``` + ### Mac OS X: Segmentation Fault when import tensorflow On Mac OS X, you might get the following error when importing tensorflow in python: diff --git a/tensorflow/python/BUILD b/tensorflow/python/BUILD index 6c89875255..9dbb9f0d9a 100644 --- a/tensorflow/python/BUILD +++ b/tensorflow/python/BUILD @@ -2635,7 +2635,6 @@ cuda_py_tests( "training/proximal_gradient_descent_test.py", "training/queue_runner_test.py", "training/rmsprop_test.py", - "training/saver_test.py", "training/slot_creator_test.py", "training/tensorboard_logging_test.py", "training/training_ops_test.py", @@ -2677,6 +2676,41 @@ cuda_py_tests( ], ) +cuda_py_test( + name = "saver_test", + size = "medium", + srcs = [ + "training/saver_test.py", + ], + additional_deps = [ + ":array_ops", + ":client_testlib", + ":control_flow_ops", + ":data_flow_ops", + ":data_flow_ops_gen", + ":errors", + ":gradients", + ":math_ops", + ":nn_grad", + ":nn_ops", + ":partitioned_variables", + ":platform", + ":platform_test", + ":pywrap_tensorflow", + ":random_ops", + ":resource_variable_ops", + ":sparse_ops", + ":summary", + ":training", + ":util", + ":variable_scope", + ":variables", + "//third_party/py/numpy", + "@six_archive//:six", + "//tensorflow/core:protos_all_py", + ], +) + py_test( name = "saver_large_variable_test", size = "small", diff --git a/tensorflow/python/framework/errors_impl.py b/tensorflow/python/framework/errors_impl.py index 79e0b5f069..e557772dd4 100644 --- a/tensorflow/python/framework/errors_impl.py +++ b/tensorflow/python/framework/errors_impl.py @@ -459,8 +459,8 @@ def _make_specific_exception(node_def, op, message, error_code): @contextlib.contextmanager def raise_exception_on_not_ok_status(): + status = pywrap_tensorflow.TF_NewStatus() try: - status = pywrap_tensorflow.TF_NewStatus() yield status if pywrap_tensorflow.TF_GetCode(status) != 0: raise _make_specific_exception( diff --git a/tensorflow/tensorboard/backend/BUILD b/tensorflow/tensorboard/backend/BUILD index fe7c0e08cc..d1557e0eca 100644 --- a/tensorflow/tensorboard/backend/BUILD +++ b/tensorflow/tensorboard/backend/BUILD @@ -24,7 +24,7 @@ py_library( py_test( name = "application_test", - size = "small", + size = "medium", srcs = ["application_test.py"], srcs_version = "PY2AND3", deps = [ diff --git a/tensorflow/tensorflow.bzl b/tensorflow/tensorflow.bzl index e8ffcf2b3d..cc8afca511 100644 --- a/tensorflow/tensorflow.bzl +++ b/tensorflow/tensorflow.bzl @@ -102,8 +102,9 @@ def tf_copts(): "-Wno-sign-compare", "-fno-exceptions",] + if_cuda(["-DGOOGLE_CUDA=1"]) + + if_mkl(["-DINTEL_MKL=1"]) + if_android_arm(["-mfpu=neon"]) + - if_x86(["-msse4.1"]) + + if_x86(["-msse3"]) + select({ "//tensorflow:android": [ "-std=c++11", @@ -117,7 +118,7 @@ def tf_copts(): "/DPLATFORM_WINDOWS", "/DEIGEN_HAS_C99_MATH", "/DTENSORFLOW_USE_EIGEN_THREADPOOL", - "/DEIGEN_VECTORIZE_SSE3", # To flush denormals without __SSE3__ set. + "/DEIGEN_VECTORIZE_SSE3", # To flush denormals without __SSE3__ set. ], "//tensorflow:ios": ["-std=c++11"], "//conditions:default": ["-pthread"]})) @@ -474,7 +475,7 @@ def tf_cuda_library(deps=None, cuda_deps=None, copts=None, **kwargs): "//tensorflow/core:cuda", "@local_config_cuda//cuda:cuda_headers" ]), - copts = copts + if_cuda(["-DGOOGLE_CUDA=1"]), + copts = copts + if_cuda(["-DGOOGLE_CUDA=1"]) + if_mkl(["-DINTEL_MKL=1"]), **kwargs) def tf_kernel_library(name, prefix=None, srcs=None, gpu_srcs=None, hdrs=None, diff --git a/tensorflow/tools/ci_build/install/install_pip_packages.sh b/tensorflow/tools/ci_build/install/install_pip_packages.sh index 8e374df632..f93e29af97 100755 --- a/tensorflow/tools/ci_build/install/install_pip_packages.sh +++ b/tensorflow/tools/ci_build/install/install_pip_packages.sh @@ -31,8 +31,8 @@ pip install --upgrade werkzeug==0.11.10 pip3 install --upgrade werkzeug==0.11.10 # Install protobuf. -pip install --upgrade protobuf==3.0.0 -pip3 install --upgrade protobuf==3.0.0 +pip install --upgrade protobuf==3.2.0 +pip3 install --upgrade protobuf==3.2.0 # Remove obsolete version of six, which can sometimes confuse virtualenv. rm -rf /usr/lib/python3/dist-packages/six* @@ -40,7 +40,7 @@ rm -rf /usr/lib/python3/dist-packages/six* set +e # Use pip to install numpy to a modern version, instead of 1.8.2 that comes # with apt-get in ubuntu:14.04. -NUMPY_VERSION="1.11.0" +NUMPY_VERSION="1.12.0" numpy_ver_flat=$(echo $NUMPY_VERSION | sed 's/\.//g' | sed 's/^0*//g') local_numpy_ver=$(python -c "import numpy; print(numpy.__version__)") local_numpy_ver_flat=$(echo $local_numpy_ver | sed 's/\.//g' | sed 's/^0*//g') @@ -48,12 +48,9 @@ if [[ -z $local_numpy_ver_flat ]]; then local_numpy_ver_flat=0 fi if (( $local_numpy_ver_flat < $numpy_ver_flat )); then - set -e - wget -q https://pypi.python.org/packages/06/92/3c786303889e6246971ad4c48ac2b4e37a1b1c67c0dc2106dc85cb15c18e/numpy-1.11.0-cp27-cp27mu-manylinux1_x86_64.whl#md5=6ffb66ff78c28c55bfa09a2ceee487df - mv numpy-1.11.0-cp27-cp27mu-manylinux1_x86_64.whl \ - numpy-1.11.0-cp27-none-linux_x86_64.whl - pip install numpy-1.11.0-cp27-none-linux_x86_64.whl - rm numpy-1.11.0-cp27-none-linux_x86_64.whl + # We must pip install numpy to compile it from source due to subtle issues + # around the pypi package and Ubuntu 14.04. + pip install --upgrade numpy==$NUMPY_VERSION fi set +e @@ -63,12 +60,9 @@ if [[ -z $local_numpy_ver_flat ]]; then local_numpy_ver_flat=0 fi if (( $local_numpy_ver_flat < $numpy_ver_flat )); then - set -e - wget -q https://pypi.python.org/packages/ea/ca/5e48a68be496e6f79c3c8d90f7c03ea09bbb154ea4511f5b3d6c825cefe5/numpy-1.11.0-cp34-cp34m-manylinux1_x86_64.whl#md5=08a002aeffa20354aa5045eadb549361 - mv numpy-1.11.0-cp34-cp34m-manylinux1_x86_64.whl \ - numpy-1.11.0-cp34-none-linux_x86_64.whl - pip3 install numpy-1.11.0-cp34-none-linux_x86_64.whl - rm numpy-1.11.0-cp34-none-linux_x86_64.whl + # We must pip install numpy to compile it from source due to subtle issues + # around the pypi package and Ubuntu 14.04. + pip3 install --upgrade numpy==$NUMPY_VERSION fi # Use pip to install scipy to get the latest version, instead of 0.13 through @@ -144,8 +138,8 @@ fi set -e # pandas required by tf.learn/inflow -pip install pandas==0.18.1 -pip3 install pandas==0.18.1 +pip install pandas==0.19.2 +pip3 install pandas==0.19.2 # Benchmark tests require the following: pip install psutil diff --git a/tensorflow/tools/ci_build/install/install_python3.5_pip_packages.sh b/tensorflow/tools/ci_build/install/install_python3.5_pip_packages.sh index 0c86db7119..bb9ec8e68a 100755 --- a/tensorflow/tools/ci_build/install/install_python3.5_pip_packages.sh +++ b/tensorflow/tools/ci_build/install/install_python3.5_pip_packages.sh @@ -64,7 +64,7 @@ set -e pip3.5 install --upgrade six==1.10.0 # Install protobuf. -pip3.5 install --upgrade protobuf==3.0.0 +pip3.5 install --upgrade protobuf==3.2.0 # Remove obsolete version of six, which can sometimes confuse virtualenv. rm -rf /usr/lib/python3/dist-packages/six* diff --git a/tensorflow/tools/pip_package/setup.py b/tensorflow/tools/pip_package/setup.py index 893afb1b48..b07915aaf5 100644 --- a/tensorflow/tools/pip_package/setup.py +++ b/tensorflow/tools/pip_package/setup.py @@ -29,7 +29,7 @@ from setuptools.dist import Distribution # This version string is semver compatible, but incompatible with pip. # For pip, we will remove all '-' characters from this string, and use the # result for pip. -_VERSION = '1.0.0-rc1' +_VERSION = '1.0.0-rc2' REQUIRED_PACKAGES = [ 'numpy >= 1.11.0', diff --git a/tensorflow/workspace.bzl b/tensorflow/workspace.bzl index 38fc144d52..25b3252aef 100644 --- a/tensorflow/workspace.bzl +++ b/tensorflow/workspace.bzl @@ -214,11 +214,11 @@ def tf_workspace(path_prefix = "", tf_repo_name = ""): native.http_archive( name = "protobuf", urls = [ - "http://bazel-mirror.storage.googleapis.com/github.com/google/protobuf/archive/008b5a228b37c054f46ba478ccafa5e855cb16db.tar.gz", - "https://github.com/google/protobuf/archive/008b5a228b37c054f46ba478ccafa5e855cb16db.tar.gz", + "http://bazel-mirror.storage.googleapis.com/github.com/google/protobuf/archive/9d3288e651700f3d52e6b4ead2a9f9ab02da53f4.tar.gz", + "https://github.com/google/protobuf/archive/9d3288e651700f3d52e6b4ead2a9f9ab02da53f4.tar.gz", ], - sha256 = "2737ad055eb8a9bc63ed068e32c4ea280b62d8236578cb4d4120eb5543f759ab", - strip_prefix = "protobuf-008b5a228b37c054f46ba478ccafa5e855cb16db", + sha256 = "4663e886f9bbea0121ce424e1620997a37d38c6299dc82183223a0401bbf70ed", + strip_prefix = "protobuf-9d3288e651700f3d52e6b4ead2a9f9ab02da53f4", ) native.new_http_archive( @@ -401,9 +401,9 @@ def tf_workspace(path_prefix = "", tf_repo_name = ""): native.new_http_archive( name = "nccl_archive", - url = "https://github.com/NVIDIA/nccl/archive/2a974f5ca2aa12b178046b2206b43f1fd69d9fae.tar.gz", - sha256 = "d6aa1a3f20ae85358890d9a96f49c51a75baa1d3af3598501f29ff9ef8a3107d", - strip_prefix = "nccl-2a974f5ca2aa12b178046b2206b43f1fd69d9fae", + url = "https://github.com/nvidia/nccl/archive/024d1e267845f2ed06f3e2e42476d50f04a00ee6.tar.gz", + sha256 = "6787f0eed88d52ee8e32956fa4947d92c139da469f1d8e311c307f27d641118e", + strip_prefix = "nccl-024d1e267845f2ed06f3e2e42476d50f04a00ee6", build_file = str(Label("//third_party:nccl.BUILD")), ) diff --git a/third_party/eigen3/BUILD b/third_party/eigen3/BUILD index 19d7a71639..08808115ad 100644 --- a/third_party/eigen3/BUILD +++ b/third_party/eigen3/BUILD @@ -10,6 +10,9 @@ licenses([ ]) exports_files(["LICENSE"]) +# INTEL_MKL start +load("//tensorflow:tensorflow.bzl", "if_mkl") +# INTEL_MKL end load("//tensorflow:tensorflow.bzl", "if_mkl") @@ -29,6 +32,9 @@ cc_library( ], includes = if_mkl(["./mkl_include"]), visibility = ["//visibility:public"], +# INTEL_MKL start + includes = if_mkl(["./mkl_include"]), +# INTEL_MKL end deps = [ "@eigen_archive//:eigen", "@local_config_sycl//sycl:sycl", diff --git a/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/PacketMathAVX512.h b/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/PacketMathAVX512.h new file mode 100644 index 0000000000..b754bbf009 --- /dev/null +++ b/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/PacketMathAVX512.h @@ -0,0 +1,545 @@ +#ifndef THIRD_PARTY_EIGEN3_UNSUPPORTED_EIGEN_CXX11_SRC_FIXEDPOINT_PACKETMATHAVX512_H_ +#define THIRD_PARTY_EIGEN3_UNSUPPORTED_EIGEN_CXX11_SRC_FIXEDPOINT_PACKETMATHAVX512_H_ + +#include "PacketMathAVX2.h" + +namespace Eigen { +namespace internal { + +typedef struct Packet64q8i { + __m512i val; + operator __m512i() const { return val; } + Packet64q8i(); + Packet64q8i(__m512i val) : val(val) {} +} Packet64q8i; + +typedef struct Packet32q16i { + __m512i val; + operator __m512i() const { return val; } + Packet32q16i(); + Packet32q16i(__m512i val) : val(val) {} +} Packet32q16i; + +typedef struct Packet64q8u { + __m512i val; + operator __m512i() const { return val; } + Packet64q8u(); + Packet64q8u(__m512i val) : val(val) {} +} Packet64q8u; + +typedef struct Packet16q32i { + __m512i val; + operator __m512i() const { return val; } + Packet16q32i(); + Packet16q32i(__m512i val) : val(val) {} +} Packet16q32i; + +template <> +struct packet_traits<QInt8> : default_packet_traits { + typedef Packet64q8i type; + typedef Packet32q8i half; + enum { + Vectorizable = 1, + AlignedOnScalar = 1, + size = 64, + }; + enum { + HasAdd = 0, + HasSub = 0, + HasMul = 0, + HasNegate = 0, + HasAbs = 0, + HasAbs2 = 0, + HasMin = 1, + HasMax = 1, + HasConj = 0, + HasSetLinear = 0 + }; +}; +template <> +struct packet_traits<QUInt8> : default_packet_traits { + typedef Packet64q8u type; + typedef Packet32q8u half; + enum { + Vectorizable = 1, + AlignedOnScalar = 1, + size = 64, + }; + enum { + HasAdd = 0, + HasSub = 0, + HasMul = 0, + HasNegate = 0, + HasAbs = 0, + HasAbs2 = 0, + HasMin = 1, + HasMax = 1, + HasConj = 0, + HasSetLinear = 0 + }; +}; +template <> +struct packet_traits<QInt16> : default_packet_traits { + typedef Packet32q16i type; + typedef Packet16q16i half; + enum { + Vectorizable = 1, + AlignedOnScalar = 1, + size = 32, + }; + enum { + HasAdd = 0, + HasSub = 0, + HasMul = 0, + HasNegate = 0, + HasAbs = 0, + HasAbs2 = 0, + HasMin = 1, + HasMax = 1, + HasConj = 0, + HasSetLinear = 0 + }; +}; +template <> +struct packet_traits<QInt32> : default_packet_traits { + typedef Packet16q32i type; + typedef Packet8q32i half; + enum { + Vectorizable = 1, + AlignedOnScalar = 1, + size = 16, + }; + enum { + HasAdd = 1, + HasSub = 1, + HasMul = 1, + HasNegate = 1, + HasAbs = 0, + HasAbs2 = 0, + HasMin = 1, + HasMax = 1, + HasConj = 0, + HasSetLinear = 0 + }; +}; + +template <> +struct unpacket_traits<Packet64q8i> { + typedef QInt8 type; + typedef Packet32q8i half; + enum { size = 64 }; +}; +template <> +struct unpacket_traits<Packet32q16i> { + typedef QInt16 type; + typedef Packet16q16i half; + enum { size = 32 }; +}; +template <> +struct unpacket_traits<Packet64q8u> { + typedef QUInt8 type; + typedef Packet32q8u half; + enum { size = 64 }; +}; +template <> +struct unpacket_traits<Packet16q32i> { + typedef QInt32 type; + typedef Packet8q32i half; + enum { size = 16 }; +}; + +// Unaligned load +template <> +EIGEN_STRONG_INLINE Packet64q8i ploadu<Packet64q8i>(const QInt8* from) { + EIGEN_DEBUG_UNALIGNED_LOAD return _mm512_loadu_si512( + reinterpret_cast<const __m512i*>(from)); +} +template <> +EIGEN_STRONG_INLINE Packet32q16i ploadu<Packet32q16i>(const QInt16* from) { + EIGEN_DEBUG_UNALIGNED_LOAD return _mm512_loadu_si512( + reinterpret_cast<const __m512i*>(from)); +} +template <> +EIGEN_STRONG_INLINE Packet64q8u ploadu<Packet64q8u>(const QUInt8* from) { + EIGEN_DEBUG_UNALIGNED_LOAD return _mm512_loadu_si512( + reinterpret_cast<const __m512i*>(from)); +} +template <> +EIGEN_STRONG_INLINE Packet16q32i ploadu<Packet16q32i>(const QInt32* from) { + EIGEN_DEBUG_UNALIGNED_LOAD return _mm512_loadu_si512( + reinterpret_cast<const __m512i*>(from)); +} + +// Aligned load +template <> +EIGEN_STRONG_INLINE Packet64q8i pload<Packet64q8i>(const QInt8* from) { + EIGEN_DEBUG_ALIGNED_LOAD return _mm512_load_si512( + reinterpret_cast<const __m512i*>(from)); +} +template <> +EIGEN_STRONG_INLINE Packet32q16i pload<Packet32q16i>(const QInt16* from) { + EIGEN_DEBUG_ALIGNED_LOAD return _mm512_load_si512( + reinterpret_cast<const __m512i*>(from)); +} +template <> +EIGEN_STRONG_INLINE Packet64q8u pload<Packet64q8u>(const QUInt8* from) { + EIGEN_DEBUG_ALIGNED_LOAD return _mm512_load_si512( + reinterpret_cast<const __m512i*>(from)); +} +template <> +EIGEN_STRONG_INLINE Packet16q32i pload<Packet16q32i>(const QInt32* from) { + EIGEN_DEBUG_ALIGNED_LOAD return _mm512_load_si512( + reinterpret_cast<const __m512i*>(from)); +} + +// Unaligned store +template <> +EIGEN_STRONG_INLINE void pstoreu<QInt8>(QInt8* to, const Packet64q8i& from) { + EIGEN_DEBUG_UNALIGNED_STORE _mm512_storeu_si512( + reinterpret_cast<__m512i*>(to), from.val); +} +template <> +EIGEN_STRONG_INLINE void pstoreu<QInt16>(QInt16* to, const Packet32q16i& from) { + EIGEN_DEBUG_UNALIGNED_STORE _mm512_storeu_si512( + reinterpret_cast<__m512i*>(to), from.val); +} +template <> +EIGEN_STRONG_INLINE void pstoreu<QUInt8>(QUInt8* to, const Packet64q8u& from) { + EIGEN_DEBUG_UNALIGNED_STORE _mm512_storeu_si512( + reinterpret_cast<__m512i*>(to), from.val); +} +template <> +EIGEN_STRONG_INLINE void pstoreu<QInt32>(QInt32* to, const Packet16q32i& from) { + EIGEN_DEBUG_UNALIGNED_STORE _mm512_storeu_si512( + reinterpret_cast<__m512i*>(to), from.val); +} + +// Aligned store +template <> +EIGEN_STRONG_INLINE void pstore<QInt32>(QInt32* to, const Packet16q32i& from) { + EIGEN_DEBUG_ALIGNED_STORE _mm512_store_si512(reinterpret_cast<__m512i*>(to), + from.val); +} +template <> +EIGEN_STRONG_INLINE void pstore<QUInt8>(QUInt8* to, const Packet64q8u& from) { + EIGEN_DEBUG_ALIGNED_STORE _mm512_store_si512(reinterpret_cast<__m512i*>(to), + from.val); +} +template <> +EIGEN_STRONG_INLINE void pstore<QInt8>(QInt8* to, const Packet64q8i& from) { + EIGEN_DEBUG_ALIGNED_STORE _mm512_store_si512(reinterpret_cast<__m512i*>(to), + from.val); +} +template <> +EIGEN_STRONG_INLINE void pstore<QInt16>(QInt16* to, const Packet32q16i& from) { + EIGEN_DEBUG_ALIGNED_STORE _mm512_store_si512(reinterpret_cast<__m512i*>(to), + from.val); +} + +// Extract first element. +template <> +EIGEN_STRONG_INLINE QInt32 pfirst<Packet16q32i>(const Packet16q32i& a) { + return _mm_cvtsi128_si32(_mm512_extracti32x4_epi32(a, 0)); +} +template <> +EIGEN_STRONG_INLINE QUInt8 pfirst<Packet64q8u>(const Packet64q8u& a) { + return static_cast<uint8_t>( + _mm_extract_epi8(_mm512_extracti32x4_epi32(a.val, 0), 0)); +} +template <> +EIGEN_STRONG_INLINE QInt8 pfirst<Packet64q8i>(const Packet64q8i& a) { + return _mm_extract_epi8(_mm512_extracti32x4_epi32(a.val, 0), 0); +} +template <> +EIGEN_STRONG_INLINE QInt16 pfirst<Packet32q16i>(const Packet32q16i& a) { + return _mm_extract_epi16(_mm512_extracti32x4_epi32(a.val, 0), 0); +} + +// Initialize to constant value. +template <> +EIGEN_STRONG_INLINE Packet64q8i pset1<Packet64q8i>(const QInt8& from) { + return _mm512_set1_epi8(from.value); +} +template <> +EIGEN_STRONG_INLINE Packet32q16i pset1<Packet32q16i>(const QInt16& from) { + return _mm512_set1_epi16(from.value); +} +template <> +EIGEN_STRONG_INLINE Packet64q8u pset1<Packet64q8u>(const QUInt8& from) { + return _mm512_set1_epi8(static_cast<uint8_t>(from.value)); +} +template <> +EIGEN_STRONG_INLINE Packet16q32i pset1<Packet16q32i>(const QInt32& from) { + return _mm512_set1_epi32(from.value); +} + +// Basic arithmetic packet ops for QInt32. +template <> +EIGEN_STRONG_INLINE Packet16q32i padd<Packet16q32i>(const Packet16q32i& a, + const Packet16q32i& b) { + return _mm512_add_epi32(a.val, b.val); +} +template <> +EIGEN_STRONG_INLINE Packet16q32i psub<Packet16q32i>(const Packet16q32i& a, + const Packet16q32i& b) { + return _mm512_sub_epi32(a.val, b.val); +} +// Note: mullo truncates the result to 32 bits. +template <> +EIGEN_STRONG_INLINE Packet16q32i pmul<Packet16q32i>(const Packet16q32i& a, + const Packet16q32i& b) { + return _mm512_mullo_epi32(a.val, b.val); +} +template <> +EIGEN_STRONG_INLINE Packet16q32i pnegate<Packet16q32i>(const Packet16q32i& a) { + return _mm512_sub_epi32(_mm512_setzero_si512(), a.val); +} + +// Min and max. +template <> +EIGEN_STRONG_INLINE Packet16q32i pmin<Packet16q32i>(const Packet16q32i& a, + const Packet16q32i& b) { + return _mm512_min_epi32(a.val, b.val); +} +template <> +EIGEN_STRONG_INLINE Packet16q32i pmax<Packet16q32i>(const Packet16q32i& a, + const Packet16q32i& b) { + return _mm512_max_epi32(a.val, b.val); +} + +template <> +EIGEN_STRONG_INLINE Packet64q8u pmin<Packet64q8u>(const Packet64q8u& a, + const Packet64q8u& b) { +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_min_epu8(a.val, b.val); +#else + __m256i ap0 = _mm512_extracti32x8_epi32(a.val, 0); + __m256i ap1 = _mm512_extracti32x8_epi32(a.val, 1); + __m256i bp0 = _mm512_extracti32x8_epi32(b.val, 0); + __m256i bp1 = _mm512_extracti32x8_epi32(b.val, 1); + __m256i r0 = _mm256_min_epu8(ap0, bp0); + __m256i r1 = _mm256_min_epu8(ap1, bp1); + return _mm512_inserti32x8(_mm512_castsi256_si512(r0), r1, 1); +#endif +} +template <> +EIGEN_STRONG_INLINE Packet64q8u pmax<Packet64q8u>(const Packet64q8u& a, + const Packet64q8u& b) { +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_max_epu8(a.val, b.val); +#else + __m256i ap0 = _mm512_extracti32x8_epi32(a.val, 0); + __m256i ap1 = _mm512_extracti32x8_epi32(a.val, 1); + __m256i bp0 = _mm512_extracti32x8_epi32(b.val, 0); + __m256i bp1 = _mm512_extracti32x8_epi32(b.val, 1); + __m256i r0 = _mm256_max_epu8(ap0, bp0); + __m256i r1 = _mm256_max_epu8(ap1, bp1); + return _mm512_inserti32x8(_mm512_castsi256_si512(r0), r1, 1); +#endif +} + +template <> +EIGEN_STRONG_INLINE Packet64q8i pmin<Packet64q8i>(const Packet64q8i& a, + const Packet64q8i& b) { +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_min_epi8(a.val, b.val); +#else + __m256i ap0 = _mm512_extracti32x8_epi32(a.val, 0); + __m256i ap1 = _mm512_extracti32x8_epi32(a.val, 1); + __m256i bp0 = _mm512_extracti32x8_epi32(b.val, 0); + __m256i bp1 = _mm512_extracti32x8_epi32(b.val, 1); + __m256i r0 = _mm256_min_epi8(ap0, bp0); + __m256i r1 = _mm256_min_epi8(ap1, bp1); + return _mm512_inserti32x8(_mm512_castsi256_si512(r0), r1, 1); +#endif +} +template <> +EIGEN_STRONG_INLINE Packet32q16i pmin<Packet32q16i>(const Packet32q16i& a, + const Packet32q16i& b) { +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_min_epi16(a.val, b.val); +#else + __m256i ap0 = _mm512_extracti32x8_epi32(a.val, 0); + __m256i ap1 = _mm512_extracti32x8_epi32(a.val, 1); + __m256i bp0 = _mm512_extracti32x8_epi32(b.val, 0); + __m256i bp1 = _mm512_extracti32x8_epi32(b.val, 1); + __m256i r0 = _mm256_min_epi16(ap0, bp0); + __m256i r1 = _mm256_min_epi16(ap1, bp1); + return _mm512_inserti32x8(_mm512_castsi256_si512(r0), r1, 1); +#endif +} +template <> +EIGEN_STRONG_INLINE Packet64q8i pmax<Packet64q8i>(const Packet64q8i& a, + const Packet64q8i& b) { +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_max_epi8(a.val, b.val); +#else + __m256i ap0 = _mm512_extracti32x8_epi32(a.val, 0); + __m256i ap1 = _mm512_extracti32x8_epi32(a.val, 1); + __m256i bp0 = _mm512_extracti32x8_epi32(b.val, 0); + __m256i bp1 = _mm512_extracti32x8_epi32(b.val, 1); + __m256i r0 = _mm256_max_epi8(ap0, bp0); + __m256i r1 = _mm256_max_epi8(ap1, bp1); + return _mm512_inserti32x8(_mm512_castsi256_si512(r0), r1, 1); +#endif +} +template <> +EIGEN_STRONG_INLINE Packet32q16i pmax<Packet32q16i>(const Packet32q16i& a, + const Packet32q16i& b) { +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_max_epi16(a.val, b.val); +#else + __m256i ap0 = _mm512_extracti32x8_epi32(a.val, 0); + __m256i ap1 = _mm512_extracti32x8_epi32(a.val, 1); + __m256i bp0 = _mm512_extracti32x8_epi32(b.val, 0); + __m256i bp1 = _mm512_extracti32x8_epi32(b.val, 1); + __m256i r0 = _mm256_max_epi16(ap0, bp0); + __m256i r1 = _mm256_max_epi16(ap1, bp1); + return _mm512_inserti32x8(_mm512_castsi256_si512(r0), r1, 1); +#endif +} + +// Reductions. +template <> +EIGEN_STRONG_INLINE QInt32 predux_min<Packet16q32i>(const Packet16q32i& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_min_epi32(_mm_min_epi32(lane0, lane1), _mm_min_epi32(lane2, lane3)); + res = _mm_min_epi32(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + return pfirst( + _mm_min_epi32( + res, + _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); +} +template <> +EIGEN_STRONG_INLINE QInt32 predux_max<Packet16q32i>(const Packet16q32i& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_max_epi32(_mm_max_epi32(lane0, lane1), _mm_max_epi32(lane2, lane3)); + res = _mm_max_epi32(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + return pfirst( + _mm_max_epi32( + res, + _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); +} +template <> +EIGEN_STRONG_INLINE QInt16 predux_min<Packet32q16i>(const Packet32q16i& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_min_epi16(_mm_min_epi16(lane0, lane1), _mm_min_epi16(lane2, lane3)); + res = _mm_min_epi16(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + std::uint32_t w = + pfirst( + _mm_min_epi16(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); + return std::min({ + static_cast<std::int16_t>(w >> 16), + static_cast<std::int16_t>(w) + }); +} +template <> +EIGEN_STRONG_INLINE QInt16 predux_max<Packet32q16i>(const Packet32q16i& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_max_epi16(_mm_max_epi16(lane0, lane1), _mm_max_epi16(lane2, lane3)); + res = _mm_max_epi16(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + std::uint32_t w = + pfirst( + _mm_max_epi16(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); + return std::min({ + static_cast<std::int16_t>(w >> 16), + static_cast<std::int16_t>(w) + }); +} +template <> +EIGEN_STRONG_INLINE QUInt8 predux_min<Packet64q8u>(const Packet64q8u& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_min_epu8(_mm_min_epu8(lane0, lane1), _mm_min_epu8(lane2, lane3)); + res = _mm_min_epu8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + std::uint32_t w = + pfirst( + _mm_min_epu8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); + return std::min({ + static_cast<std::uint8_t>(w >> 24), + static_cast<std::uint8_t>(w >> 16), + static_cast<std::uint8_t>(w >> 8), + static_cast<std::uint8_t>(w) + }); +} +template <> +EIGEN_STRONG_INLINE QUInt8 predux_max<Packet64q8u>(const Packet64q8u& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_max_epu8(_mm_max_epu8(lane0, lane1), _mm_max_epu8(lane2, lane3)); + res = _mm_max_epu8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + std::uint32_t w = + pfirst( + _mm_max_epu8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); + return std::min({ + static_cast<std::uint8_t>(w >> 24), + static_cast<std::uint8_t>(w >> 16), + static_cast<std::uint8_t>(w >> 8), + static_cast<std::uint8_t>(w) + }); +} +template <> +EIGEN_STRONG_INLINE QInt8 predux_min<Packet64q8i>(const Packet64q8i& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_min_epi8(_mm_min_epi8(lane0, lane1), _mm_min_epi8(lane2, lane3)); + res = _mm_min_epi8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + std::uint32_t w = + pfirst( + _mm_min_epi8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); + return std::min({ + static_cast<std::int8_t>(w >> 24), + static_cast<std::int8_t>(w >> 16), + static_cast<std::int8_t>(w >> 8), + static_cast<std::int8_t>(w) + }); +} +template <> +EIGEN_STRONG_INLINE QInt8 predux_max<Packet64q8i>(const Packet64q8i& a) { + Packet4i lane0 = _mm512_extracti32x4_epi32(a.val, 0); + Packet4i lane1 = _mm512_extracti32x4_epi32(a.val, 1); + Packet4i lane2 = _mm512_extracti32x4_epi32(a.val, 2); + Packet4i lane3 = _mm512_extracti32x4_epi32(a.val, 3); + Packet4i res = + _mm_max_epi8(_mm_max_epi8(lane0, lane1), _mm_max_epi8(lane2, lane3)); + res = _mm_max_epi8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 3, 2))); + std::uint32_t w = + pfirst( + _mm_max_epi8(res, _mm_shuffle_epi32(res, _MM_SHUFFLE(0, 0, 0, 1)))); + return std::min({ + static_cast<std::int8_t>(w >> 24), + static_cast<std::int8_t>(w >> 16), + static_cast<std::int8_t>(w >> 8), + static_cast<std::int8_t>(w) + }); +} + +} // end namespace internal +} // end namespace Eigen + +#endif // THIRD_PARTY_EIGEN3_UNSUPPORTED_EIGEN_CXX11_SRC_FIXEDPOINT_PACKETMATHAVX512_H_ diff --git a/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/TypeCastingAVX512.h b/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/TypeCastingAVX512.h new file mode 100644 index 0000000000..cd7120ec00 --- /dev/null +++ b/third_party/eigen3/unsupported/Eigen/CXX11/src/FixedPoint/TypeCastingAVX512.h @@ -0,0 +1,180 @@ +#ifndef THIRD_PARTY_EIGEN3_UNSUPPORTED_EIGEN_CXX11_SRC_FIXEDPOINT_TYPECASTINGAVX512_H_ +#define THIRD_PARTY_EIGEN3_UNSUPPORTED_EIGEN_CXX11_SRC_FIXEDPOINT_TYPECASTINGAVX512_H_ + +namespace Eigen { +namespace internal { + +typedef __m512 Packet16f; +typedef __m512i Packet16i; + +template <> +struct type_casting_traits<QInt32, float> { + enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 }; +}; + +template <> +EIGEN_STRONG_INLINE Packet16f pcast<Packet16q32i>(const Packet16q32i& a) { + return _mm512_cvtepi32_ps(a.val); +} + +template <> +struct type_casting_traits<float, QInt32> { + enum { VectorizedCast = 1, SrcCoeffRatio = 1, TgtCoeffRatio = 1 }; +}; + +template <> +EIGEN_STRONG_INLINE Packet16q32i pcast<Packet16f>(const Packet16f& a) { + return _mm512_cvtps_epi32(a); +} + +template <> +struct type_casting_traits<float, QInt16> { + enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 }; +}; + +template <> +EIGEN_STRONG_INLINE Packet32q16i +pcast<Packet16f>(const Packet16f& a, const Packet16f& b) { + Packet16i a_int = _mm512_cvtps_epi32(a); + Packet16i b_int = _mm512_cvtps_epi32(b); +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_packs_epi32(a_int, b_int); +#else + Packet8i ab_int16_low = + _mm256_permute4x64_epi64( + _mm256_packs_epi32( + _mm512_castsi512_si256(a_int), + _mm512_castsi512_si256(b_int)), + _MM_SHUFFLE(0, 2, 1, 3)); + Packet8i ab_int16_high = + _mm256_permute4x64_epi64( + _mm256_packs_epi32( + _mm512_extracti32x8_epi32(a_int, 1), + _mm512_extracti32x8_epi32(b_int, 1)), + _MM_SHUFFLE(0, 2, 1, 3)); + return _mm512_inserti32x8( + _mm512_castsi256_si512(ab_int16_low), + ab_int16_high, 1); +#endif +} + +template <> +struct type_casting_traits<float, QInt8> { + enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 }; +}; + +template <> +EIGEN_STRONG_INLINE Packet64q8i +pcast<Packet16f>(const Packet16f& a, + const Packet16f& b, + const Packet16f& c, + const Packet16f& d) { + Packet16i a_int = _mm512_cvtps_epi32(a); + Packet16i b_int = _mm512_cvtps_epi32(b); + Packet16i c_int = _mm512_cvtps_epi32(c); + Packet16i d_int = _mm512_cvtps_epi32(d); +#ifdef EIGEN_VECTORIZE_AVX512BW + return _mm512_packs_epi16( + _mm512_packs_epi32(a_int, b_int), + _mm512_packs_epi32(c_int, d_int)); +#else + Packet8i ab_int16_low = + _mm256_permute4x64_epi64( + _mm256_packs_epi32( + _mm512_castsi512_si256(a_int), + _mm512_castsi512_si256(b_int)), + _MM_SHUFFLE(0, 2, 1, 3)); + Packet8i cd_int16_low = + _mm256_permute4x64_epi64( + _mm256_packs_epi32( + _mm512_castsi512_si256(c_int), + _mm512_castsi512_si256(d_int)), + _MM_SHUFFLE(0, 2, 1, 3)); + Packet8i ab_int16_high = + _mm256_permute4x64_epi64( + _mm256_packs_epi32( + _mm512_extracti32x8_epi32(a_int, 1), + _mm512_extracti32x8_epi32(b_int, 1)), + _MM_SHUFFLE(0, 2, 1, 3)); + Packet8i cd_int16_high = + _mm256_permute4x64_epi64( + _mm256_packs_epi32( + _mm512_extracti32x8_epi32(c_int, 1), + _mm512_extracti32x8_epi32(d_int, 1)), + _MM_SHUFFLE(0, 2, 1, 3)); + Packet8i abcd_int8_low = + _mm256_permute4x64_epi64( + _mm256_packs_epi16(ab_int16_low, cd_int16_low), + _MM_SHUFFLE(0, 2, 1, 3)); + Packet8i abcd_int8_high = + _mm256_permute4x64_epi64( + _mm256_packs_epi16(ab_int16_high, cd_int16_high), + _MM_SHUFFLE(0, 2, 1, 3)); + return _mm512_inserti32x8( + _mm512_castsi256_si512(abcd_int8_low), + abcd_int8_high, 1); +#endif +} + +template <> +struct type_casting_traits<QInt32, QInt8> { + enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 }; +}; + +template <> +struct type_casting_traits<QInt32, QInt16> { + enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 }; +}; + +template <> +EIGEN_STRONG_INLINE Packet64q8i +pcast<Packet16q32i, Packet64q8i>(const Packet16q32i& a, + const Packet16q32i& b, + const Packet16q32i& c, + const Packet16q32i& d) { + __m512i converted = _mm512_packs_epi16(_mm512_packs_epi32(a.val, b.val), + _mm512_packs_epi32(c.val, d.val)); + return converted; +} + +template <> +EIGEN_STRONG_INLINE Packet32q16i +pcast<Packet16q32i, Packet32q16i>(const Packet16q32i& a, + const Packet16q32i& b) { + __m512i converted = _mm512_packs_epi32(a.val, b.val); + return converted; +} + +template <> +struct type_casting_traits<QInt32, QUInt8> { + enum { VectorizedCast = 1, SrcCoeffRatio = 4, TgtCoeffRatio = 1 }; +}; + +template <> +EIGEN_STRONG_INLINE Packet64q8u +pcast<Packet16q32i, Packet64q8u>(const Packet16q32i& a, const Packet16q32i& b, + const Packet16q32i& c, const Packet16q32i& d) { + const __m512i converted = _mm512_packus_epi16( + _mm512_packus_epi32(a.val, b.val), _mm512_packus_epi32(c.val, d.val)); + return converted; +} + +template <> +struct type_casting_traits<QInt32, QUInt16> { + enum { VectorizedCast = 1, SrcCoeffRatio = 2, TgtCoeffRatio = 1 }; +}; + +#if 0 +template <> +EIGEN_STRONG_INLINE Packet32q16u +pcast<Packet16q32i, Packet32q16u>(const Packet16q32i& a, + const Packet16q32i& b) { + const __m512i converted = _mm512_packus_epi32(a.val, b.val); + return converted; +} +#endif + +} // end namespace internal +} // end namespace Eigen + +#endif // THIRD_PARTY_EIGEN3_UNSUPPORTED_EIGEN_CXX11_SRC_FIXEDPOINT_TYPECASTINGAVX512_H_ diff --git a/third_party/jpeg.BUILD b/third_party/jpeg.BUILD deleted file mode 100644 index cbc1e86e51..0000000000 --- a/third_party/jpeg.BUILD +++ /dev/null @@ -1,416 +0,0 @@ -# Description: -# libjpeg-turbo is a drop in replacement for jpeglib optimized with SIMD. - -licenses(["notice"]) # custom notice-style license, see LICENSE.md - -exports_files(["LICENSE.md"]) - -libjpegturbo_nocopts = "-[W]error" - -libjpegturbo_copts = select({ - ":android": [ - "-O2", - "-fPIE", - "-w", - ], - ":windows": [ - "/Ox", - "/w14711", # function 'function' selected for inline expansion - "/w14710", # 'function' : function not inlined - ], - "//conditions:default": [ - "-O3", - "-w", - ], -}) + select({ - ":armeabi-v7a": [ - "-D__ARM_NEON__", - "-march=armv7-a", - "-mfloat-abi=softfp", - "-fprefetch-loop-arrays", - ], - "//conditions:default": [], -}) - -cc_library( - name = "jpeg", - srcs = [ - "jaricom.c", - "jcapimin.c", - "jcapistd.c", - "jcarith.c", - "jccoefct.c", - "jccolor.c", - "jcdctmgr.c", - "jchuff.c", - "jchuff.h", - "jcinit.c", - "jcmainct.c", - "jcmarker.c", - "jcmaster.c", - "jcomapi.c", - "jconfig.h", - "jconfigint.h", - "jcparam.c", - "jcphuff.c", - "jcprepct.c", - "jcsample.c", - "jctrans.c", - "jdapimin.c", - "jdapistd.c", - "jdarith.c", - "jdatadst.c", - "jdatasrc.c", - "jdcoefct.c", - "jdcoefct.h", - "jdcolor.c", - "jdct.h", - "jddctmgr.c", - "jdhuff.c", - "jdhuff.h", - "jdinput.c", - "jdmainct.c", - "jdmainct.h", - "jdmarker.c", - "jdmaster.c", - "jdmaster.h", - "jdmerge.c", - "jdphuff.c", - "jdpostct.c", - "jdsample.c", - "jdsample.h", - "jdtrans.c", - "jerror.c", - "jfdctflt.c", - "jfdctfst.c", - "jfdctint.c", - "jidctflt.c", - "jidctfst.c", - "jidctint.c", - "jidctred.c", - "jinclude.h", - "jmemmgr.c", - "jmemnobs.c", - "jmemsys.h", - "jpeg_nbits_table.h", - "jpegcomp.h", - "jquant1.c", - "jquant2.c", - "jutils.c", - "jversion.h", - ], - hdrs = [ - "jccolext.c", # should have been named .inc - "jdcol565.c", # should have been named .inc - "jdcolext.c", # should have been named .inc - "jdmrg565.c", # should have been named .inc - "jdmrgext.c", # should have been named .inc - "jerror.h", - "jmorecfg.h", - "jpegint.h", - "jpeglib.h", - "jstdhuff.c", # should have been named .inc - ], - copts = libjpegturbo_copts, - nocopts = libjpegturbo_nocopts, - visibility = ["//visibility:public"], - deps = select({ - ":k8": [":simd_x86_64"], - ":armeabi-v7a": [":simd_armv7a"], - ":arm64-v8a": [":simd_armv8a"], - "//conditions:default": [":simd_none"], - }), -) - -cc_library( - name = "simd_x86_64", - srcs = [ - "jchuff.h", - "jconfig.h", - "jdct.h", - "jerror.h", - "jinclude.h", - "jmorecfg.h", - "jpegint.h", - "jpeglib.h", - "jsimd.h", - "jsimddct.h", - "simd/jccolor-sse2-64.o", - "simd/jcgray-sse2-64.o", - "simd/jchuff-sse2-64.o", - "simd/jcsample-sse2-64.o", - "simd/jdcolor-sse2-64.o", - "simd/jdmerge-sse2-64.o", - "simd/jdsample-sse2-64.o", - "simd/jfdctflt-sse-64.o", - "simd/jfdctfst-sse2-64.o", - "simd/jfdctint-sse2-64.o", - "simd/jidctflt-sse2-64.o", - "simd/jidctfst-sse2-64.o", - "simd/jidctint-sse2-64.o", - "simd/jidctred-sse2-64.o", - "simd/jquantf-sse2-64.o", - "simd/jquanti-sse2-64.o", - "simd/jsimd.h", - "simd/jsimd_x86_64.c", - ], - copts = libjpegturbo_copts, - linkstatic = 1, - nocopts = libjpegturbo_nocopts, -) - -genrule( - name = "simd_x86_64_assemblage23", - srcs = [ - "simd/jccolext-sse2-64.asm", - "simd/jccolor-sse2-64.asm", - "simd/jcgray-sse2-64.asm", - "simd/jcgryext-sse2-64.asm", - "simd/jchuff-sse2-64.asm", - "simd/jcolsamp.inc", - "simd/jcsample-sse2-64.asm", - "simd/jdcolext-sse2-64.asm", - "simd/jdcolor-sse2-64.asm", - "simd/jdct.inc", - "simd/jdmerge-sse2-64.asm", - "simd/jdmrgext-sse2-64.asm", - "simd/jdsample-sse2-64.asm", - "simd/jfdctflt-sse-64.asm", - "simd/jfdctfst-sse2-64.asm", - "simd/jfdctint-sse2-64.asm", - "simd/jidctflt-sse2-64.asm", - "simd/jidctfst-sse2-64.asm", - "simd/jidctint-sse2-64.asm", - "simd/jidctred-sse2-64.asm", - "simd/jpeg_nbits_table.inc", - "simd/jquantf-sse2-64.asm", - "simd/jquanti-sse2-64.asm", - "simd/jsimdcfg.inc", - "simd/jsimdext.inc", - ], - outs = [ - "simd/jccolor-sse2-64.o", - "simd/jcgray-sse2-64.o", - "simd/jchuff-sse2-64.o", - "simd/jcsample-sse2-64.o", - "simd/jdcolor-sse2-64.o", - "simd/jdmerge-sse2-64.o", - "simd/jdsample-sse2-64.o", - "simd/jfdctflt-sse-64.o", - "simd/jfdctfst-sse2-64.o", - "simd/jfdctint-sse2-64.o", - "simd/jidctflt-sse2-64.o", - "simd/jidctfst-sse2-64.o", - "simd/jidctint-sse2-64.o", - "simd/jidctred-sse2-64.o", - "simd/jquantf-sse2-64.o", - "simd/jquanti-sse2-64.o", - ], - cmd = "for out in $(OUTS); do\n" + - " $(location @nasm//:nasm) -f elf64" + - " -DELF -DPIC -DRGBX_FILLER_0XFF -D__x86_64__ -DARCH_X86_64" + - " -I $$(dirname $(location simd/jdct.inc))/" + - " -I $$(dirname $(location simd/jsimdcfg.inc))/" + - " -o $$out" + - " $$(dirname $(location simd/jdct.inc))/$$(basename $${out%.o}.asm)\n" + - "done", - tools = ["@nasm//:nasm"], -) - -cc_library( - name = "simd_armv7a", - srcs = [ - "jchuff.h", - "jconfig.h", - "jdct.h", - "jinclude.h", - "jmorecfg.h", - "jpeglib.h", - "jsimd.h", - "jsimddct.h", - "simd/jsimd.h", - "simd/jsimd_arm.c", - "simd/jsimd_arm_neon.S", - ], - copts = libjpegturbo_copts, - nocopts = libjpegturbo_nocopts, -) - -cc_library( - name = "simd_armv8a", - srcs = [ - "jchuff.h", - "jconfig.h", - "jdct.h", - "jinclude.h", - "jmorecfg.h", - "jpeglib.h", - "jsimd.h", - "jsimddct.h", - "simd/jsimd.h", - "simd/jsimd_arm64.c", - "simd/jsimd_arm64_neon.S", - ], - copts = libjpegturbo_copts, - nocopts = libjpegturbo_nocopts, -) - -cc_library( - name = "simd_none", - srcs = [ - "jchuff.h", - "jconfig.h", - "jdct.h", - "jerror.h", - "jinclude.h", - "jmorecfg.h", - "jpegint.h", - "jpeglib.h", - "jsimd.h", - "jsimd_none.c", - "jsimddct.h", - ], - copts = libjpegturbo_copts, - nocopts = libjpegturbo_nocopts, -) - -genrule( - name = "configure", - outs = ["jconfig.h"], - cmd = "cat <<'EOF' >$@\n" + - "#define JPEG_LIB_VERSION 62\n" + - "#define LIBJPEG_TURBO_VERSION 1.5.1\n" + - "#define LIBJPEG_TURBO_VERSION_NUMBER 1005001\n" + - "#define C_ARITH_CODING_SUPPORTED 1\n" + - "#define D_ARITH_CODING_SUPPORTED 1\n" + - "#define BITS_IN_JSAMPLE 8\n" + - "#define HAVE_LOCALE_H 1\n" + - "#define HAVE_STDDEF_H 1\n" + - "#define HAVE_STDLIB_H 1\n" + - "#define HAVE_UNSIGNED_CHAR 1\n" + - "#define HAVE_UNSIGNED_SHORT 1\n" + - "#define MEM_SRCDST_SUPPORTED 1\n" + - "#define NEED_SYS_TYPES_H 1\n" + - select({ - ":k8": "#define WITH_SIMD 1\n", - ":armeabi-v7a": "#define WITH_SIMD 1\n", - ":arm64-v8a": "#define WITH_SIMD 1\n", - "//conditions:default": "", - }) + - "EOF", -) - -genrule( - name = "configure_internal", - outs = ["jconfigint.h"], - cmd = "cat <<'EOF' >$@\n" + - "#define BUILD \"20161115\"\n" + - "#ifdef _MSC_VER /* Windows */\n" + - "#define INLINE __inline\n" + - "#else\n" + - "#define INLINE inline __attribute__((always_inline))\n" + - "#endif\n" + - "#define PACKAGE_NAME \"libjpeg-turbo\"\n" + - "#define VERSION \"1.5.1\"\n" + - "#if (__WORDSIZE==64 && !defined(__native_client__)) || defined(_WIN64)\n" + - "#define SIZEOF_SIZE_T 8\n" + - "#else\n" + - "#define SIZEOF_SIZE_T 4\n" + - "#endif\n" + - "EOF", -) - -# jiminy cricket the way this file is generated is completely outrageous -genrule( - name = "configure_simd", - outs = ["simd/jsimdcfg.inc"], - cmd = "cat <<'EOF' >$@\n" + - "%define DCTSIZE 8\n" + - "%define DCTSIZE2 64\n" + - "%define RGB_RED 0\n" + - "%define RGB_GREEN 1\n" + - "%define RGB_BLUE 2\n" + - "%define RGB_PIXELSIZE 3\n" + - "%define EXT_RGB_RED 0\n" + - "%define EXT_RGB_GREEN 1\n" + - "%define EXT_RGB_BLUE 2\n" + - "%define EXT_RGB_PIXELSIZE 3\n" + - "%define EXT_RGBX_RED 0\n" + - "%define EXT_RGBX_GREEN 1\n" + - "%define EXT_RGBX_BLUE 2\n" + - "%define EXT_RGBX_PIXELSIZE 4\n" + - "%define EXT_BGR_RED 2\n" + - "%define EXT_BGR_GREEN 1\n" + - "%define EXT_BGR_BLUE 0\n" + - "%define EXT_BGR_PIXELSIZE 3\n" + - "%define EXT_BGRX_RED 2\n" + - "%define EXT_BGRX_GREEN 1\n" + - "%define EXT_BGRX_BLUE 0\n" + - "%define EXT_BGRX_PIXELSIZE 4\n" + - "%define EXT_XBGR_RED 3\n" + - "%define EXT_XBGR_GREEN 2\n" + - "%define EXT_XBGR_BLUE 1\n" + - "%define EXT_XBGR_PIXELSIZE 4\n" + - "%define EXT_XRGB_RED 1\n" + - "%define EXT_XRGB_GREEN 2\n" + - "%define EXT_XRGB_BLUE 3\n" + - "%define EXT_XRGB_PIXELSIZE 4\n" + - "%define RGBX_FILLER_0XFF 1\n" + - "%define JSAMPLE byte ; unsigned char\n" + - "%define SIZEOF_JSAMPLE SIZEOF_BYTE ; sizeof(JSAMPLE)\n" + - "%define CENTERJSAMPLE 128\n" + - "%define JCOEF word ; short\n" + - "%define SIZEOF_JCOEF SIZEOF_WORD ; sizeof(JCOEF)\n" + - "%define JDIMENSION dword ; unsigned int\n" + - "%define SIZEOF_JDIMENSION SIZEOF_DWORD ; sizeof(JDIMENSION)\n" + - "%define JSAMPROW POINTER ; JSAMPLE * (jpeglib.h)\n" + - "%define JSAMPARRAY POINTER ; JSAMPROW * (jpeglib.h)\n" + - "%define JSAMPIMAGE POINTER ; JSAMPARRAY * (jpeglib.h)\n" + - "%define JCOEFPTR POINTER ; JCOEF * (jpeglib.h)\n" + - "%define SIZEOF_JSAMPROW SIZEOF_POINTER ; sizeof(JSAMPROW)\n" + - "%define SIZEOF_JSAMPARRAY SIZEOF_POINTER ; sizeof(JSAMPARRAY)\n" + - "%define SIZEOF_JSAMPIMAGE SIZEOF_POINTER ; sizeof(JSAMPIMAGE)\n" + - "%define SIZEOF_JCOEFPTR SIZEOF_POINTER ; sizeof(JCOEFPTR)\n" + - "%define DCTELEM word ; short\n" + - "%define SIZEOF_DCTELEM SIZEOF_WORD ; sizeof(DCTELEM)\n" + - "%define float FP32 ; float\n" + - "%define SIZEOF_FAST_FLOAT SIZEOF_FP32 ; sizeof(float)\n" + - "%define ISLOW_MULT_TYPE word ; must be short\n" + - "%define SIZEOF_ISLOW_MULT_TYPE SIZEOF_WORD ; sizeof(ISLOW_MULT_TYPE)\n" + - "%define IFAST_MULT_TYPE word ; must be short\n" + - "%define SIZEOF_IFAST_MULT_TYPE SIZEOF_WORD ; sizeof(IFAST_MULT_TYPE)\n" + - "%define IFAST_SCALE_BITS 2 ; fractional bits in scale factors\n" + - "%define FLOAT_MULT_TYPE FP32 ; must be float\n" + - "%define SIZEOF_FLOAT_MULT_TYPE SIZEOF_FP32 ; sizeof(FLOAT_MULT_TYPE)\n" + - "%define JSIMD_NONE 0x00\n" + - "%define JSIMD_MMX 0x01\n" + - "%define JSIMD_3DNOW 0x02\n" + - "%define JSIMD_SSE 0x04\n" + - "%define JSIMD_SSE2 0x08\n" + - "EOF", -) - -config_setting( - name = "k8", - values = {"cpu": "k8"}, -) - -config_setting( - name = "android", - values = {"crosstool_top": "//external:android/crosstool"}, -) - -config_setting( - name = "armeabi-v7a", - values = {"android_cpu": "armeabi-v7a"}, -) - -config_setting( - name = "arm64-v8a", - values = {"android_cpu": "arm64-v8a"}, -) - -config_setting( - name = "windows", - values = {"cpu": "x64_windows_msvc"}, -) diff --git a/third_party/mkl/build_defs.bzl b/third_party/mkl/build_defs.bzl index e094f2fef7..9a28b312c2 100644 --- a/third_party/mkl/build_defs.bzl +++ b/third_party/mkl/build_defs.bzl @@ -2,8 +2,10 @@ def if_mkl(if_true, if_false = []): """Shorthand for select()'ing on whether we're building with MKL. + Returns a select statement which evaluates to if_true if we're building with MKL enabled. Otherwise, the select statement evaluates to if_false. + """ return select({ "//third_party/mkl:using_mkl": if_true, diff --git a/third_party/sycl/crosstool/BUILD b/third_party/sycl/crosstool/BUILD new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/third_party/sycl/crosstool/BUILD @@ -0,0 +1 @@ + diff --git a/third_party/sycl/sycl/LICENSE.text.tpl b/third_party/sycl/sycl/LICENSE.text.tpl deleted file mode 100644 index 0c2955c4d7..0000000000 --- a/third_party/sycl/sycl/LICENSE.text.tpl +++ /dev/null @@ -1,268 +0,0 @@ - ---------------------------------------------------------------------- - -SOFTWARE LICENSE AGREEMENT - ---------------------------------------------------------------------- ---------------------------------------------------------------------- - -By downloading, installing, copying, or otherwise using the -ComputeCpp Community Edition software, including any associated -components, media, printed materials, and electronic documentation -("Software"), the user agrees to the following terms and conditions -of this Software License Agreement ("Agreement"). Please read the -terms of this Agreement carefully before beginning your download, as -pressing the "I AGREE" button at the end of this Agreement will -confirm your assent. If you do not agree to these terms, then -Codeplay Software Limited is unwilling to license the Software to -you; so please press the "CANCEL" button to cancel your download. - - 1. License. Codeplay Software Ltd., a company incorporated in - England and Wales with registered number 04567874 and having its - registered office at Regent House, 316 Beulah Hill, London, - United Kingdom, SE19 3HF ("Codeplay") hereby grants the user, - free of charge, a non-exclusive worldwide license to use and - replicate (but not modify) the Software for any use, whether - commercial or non-commercial, in accordance with this Agreement. - Codeplay reserves all rights to the Software that are not - expressly granted by this Agreement. - 2. Redistribution. The user may copy and redistribute unmodified - copies of only those components of the Software which are - specified below ("Redistributable Components"), in object code - form, as part of the user’s software applications or libraries - ("Applications"). The user acknowledges and agrees that it has no - right to modify the Redistributable Components in any way. Any - use of the Redistributable Components within the user’s - Applications will continue to be subject to the terms and - conditions of this Agreement, and the user must also distribute a - copy of this Agreement and reproduce and include all notices of - copyrights or other proprietary rights in the Software. The - user’s redistribution of the Redistributable Components will not - entitle it to any payment from Codeplay. The user may not - transfer any of its rights or obligations under this Agreement. - -+-------------------------------------------+ -|Redistributable Component|File Name | -|-------------------------+-----------------| -|Runtime (for Linux) |libComputeCpp.so | -|-------------------------+-----------------| -|Runtime (for Windows) |libComputeCpp.dll| -+-------------------------------------------+ - - 3. Restrictions. The user shall not: - - a. circumvent or bypass any technological protection measures in - or relating to the Software; - b. use the Software to perform any unauthorized transfer of - information or for any illegal purpose; - c. de-compile, decrypt, disassemble, hack, emulate, exploit or - reverse-engineer the Software (other than to the limited - extent permitted by law); - d. copy or redistribute any components of the Software that are - not listed in the table of Redistributable Components; - e. publish, rent, lease, sell, export, import, or lend the - Software; - f. represent in any way that it is selling the Software itself - or any license to use the Software, nor refer to Codeplay or - ComputeCpp within its marketing materials, without the - express prior written permission of Codeplay. - 4. Support. Codeplay does not provide any guarantees of support for - the Software to the user. Codeplay will use reasonable endeavours - to respond to users' support requests, for the most recent - release only, via the community support website at https:// - computecpp.codeplay.com. - 5. Intellectual Property. The Software is owned by Codeplay or its - licensors, and is protected by the copyright laws of the United - Kingdom and other countries and international treaty provisions. - Codeplay (and/or its licensors, as the case may be) retains all - copyrights, trade secrets and other proprietary rights in the - Software, including the rights to make and license the use of all - copies. To the extent that any patents owned by Codeplay or its - licensors relate to any component of the Software, the licence - granted to the user in accordance with this Agreement allows for - the lawful use of such patents but only for the purposes of this - Agreement and not further or otherwise. Therefore, the user may - make no copies of the Software, or the written materials that - accompany the Software, or reproduce it in any way, except as set - forth above. - 6. Terms. This Agreement is effective until terminated. Codeplay or - the user may terminate it immediately at any time. Any violation - of the terms of this Agreement by the user will result in - immediate termination by Codeplay. Upon termination, the user - must return or destroy the Software and accompanying materials - and notify Codeplay of its actions by email to info@codeplay.com. - 7. NO WARRANTIES. Codeplay expressly disclaims any warranty for the - Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF - ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - AND NON-INFRINGEMENT. IN NO EVENT SHALL CODEPLAY BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, DELICT OR TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. In particular, Codeplay provides no guarantees of - application performance on the target hardware. - 8. General. The invalidity of any portion or provision of this - Agreement shall not affect any other portions or provisions. This - Agreement shall be governed by the laws of Scotland. This - Agreement is the complete and exclusive agreement between the - user and Codeplay regarding the Software, and it supersedes any - prior agreement, oral or written, and any other communication - between the user and Codeplay relating to the subject matter of - the Agreement. Any amendment or modification of this Agreement - must be in writing and signed by both parties. If the user does - not agree to the terms of this Agreement, the user must not - install or use the Software. - 9. Third Party Licenses. The following licenses are for third-party - components included in the software. - - a. License for Clang/LLVM compiler technology components: - -============================================================================== - -LLVM Release License - -============================================================================== - -University of Illinois/NCSA - -Open Source License - -Copyright (c) 2007-2014 University of Illinois at Urbana-Champaign. - -All rights reserved. - -Developed by: - - LLVM Team - - University of Illinois at Urbana-Champaign - - http://llvm.org - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal with -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimers. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimers in the - documentation and/or other materials provided with the distribution. - - * Neither the names of the LLVM Team, University of Illinois at - Urbana-Champaign, nor the names of its contributors may be used to - endorse or promote products derived from this Software without specific - prior written permission. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE -SOFTWARE. - -============================================================================== - - b. License for OpenBSD regex components: - -$OpenBSD: COPYRIGHT,v 1.3 2003/06/02 20:18:36 millert Exp $ -Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. -This software is not subject to any license of the American Telephone -and Telegraph Company or of the Regents of the University of California. -Permission is granted to anyone to use this software for any purpose on -any computer system, and to alter it and redistribute it, subject -to the following restrictions: - -1. The author is not responsible for the consequences of use of this - software, no matter how awful, even if they arise from flaws in it. - -2. The origin of this software must not be misrepresented, either by - explicit claim or by omission. Since few users ever read sources, - credits must appear in the documentation. - -3. Altered versions must be plainly marked as such, and must not be - misrepresented as being the original software. Since few users - ever read sources, credits must appear in the documentation. - -4. This notice may not be removed or altered. - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -/*- - * Copyright (c) 1994 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)COPYRIGHT8.1 (Berkeley) 3/16/94 - */ - - c. License for MD5 components: - -/* - * This code is derived from (original license follows): - * - * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. - * MD5 Message-Digest Algorithm (RFC 1321). - * - * Homepage: - * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 - * - * Author: - * Alexander Peslyak, better known as Solar Designer <solar at openwall.com> - * - * This software was written by Alexander Peslyak in 2001. No copyright is - * claimed, and the software is hereby placed in the public domain. - * In case this attempt to disclaim copyright and place the software in the - * public domain is deemed null and void, then the software is - * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the - * general public under the following terms: - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted. - * - * There's ABSOLUTELY NO WARRANTY, express or implied. - * - * (This is a heavily cut-down "BSD license".) - * - * This differs from Colin Plumb's older public domain implementation in that - * no exactly 32-bit integer data type is required (any 32-bit or wider - * unsigned integer data type will do), there's no compile-time endianness - * configuration, and the function prototypes match OpenSSL's. No code from - * Colin Plumb's implementation has been reused; this comment merely compares - * the properties of the two independent implementations. - * - * The primary goals of this implementation are portability and ease of use. - * It is meant to be fast, but not as fast as possible. Some known - * optimizations are not included to reduce source code size and avoid - * compile-time configuration. - */ - - |