| Commit message (Collapse) | Author | Age |
|
|
|
| |
PiperOrigin-RevId: 216500702
|
|
|
|
| |
PiperOrigin-RevId: 216424512
|
|\
| |
| |
| | |
PiperOrigin-RevId: 216253115
|
| |
| |
| |
| |
| |
| |
| |
| | |
Doesn't attempt to deal with cases where we might have already generated
the functiondef for the parent function as in that case we cannot easily
modify the forward pass.
PiperOrigin-RevId: 216243224
|
|/ |
|
|
|
|
| |
PiperOrigin-RevId: 215595078
|
|\
| |
| |
| | |
PiperOrigin-RevId: 215560522
|
| |
| |
| |
| | |
PiperOrigin-RevId: 215338658
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This cleanup will make the future CL implementing lazy compilation simpler.
Includes some supporting changes:
- Teach NewInternalScope to create a scope that doesn't do shape inference. We
need this because we don't have a ShapeRefiner that has been run over the
entire graph available in the build_xla_ops pass.
- Add a WithAssignedDevice modifier to tensorflow::Scope.
- Make cc_op_gen write out an Operation field for nodes which may not
necessarily have any outputs. We already did this in most cases, but we
weren't doing it for nodes that have possibly-empty list outputs.
- Minor change renaming ops/xla_jit_op.cc to ops/xla_jit_ops.cc, now that we
have more than one XLA JIT op.
PiperOrigin-RevId: 215293817
|
|/
|
|
| |
variable TF_DISABLE_MKL=1
|
|\
| |
| |
| | |
PiperOrigin-RevId: 214726180
|
| |
| |
| |
| | |
PiperOrigin-RevId: 214557082
|
| | |
|
| |
| |
| |
| | |
PiperOrigin-RevId: 213693027
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prior to this change,
GraphConstructor::PopulateMissingUnusedInputMapKey() didn't correctly
compute the number of outputs for ops with variadic outputs. This
meant that missing_unused_input_map_keys could contain spurious
entries for unused variadic outputs, which could trigger a ValueError
in import_graph_def.
This also adds a new util method in node_def_util.h, NumOutputsForNode().
PiperOrigin-RevId: 213353158
|
| |
| |
| |
| | |
PiperOrigin-RevId: 212921868
|
| |
| |
| |
| | |
PiperOrigin-RevId: 212485820
|
| |
| |
| |
| |
| |
| | |
`MapDataset`.
PiperOrigin-RevId: 211520001
|
|/ |
|
|\
| |
| |
| | |
PiperOrigin-RevId: 211013893
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
where:
- E = number of edges in the graph
- e = number of edges on the node of interest
e is necessarily <= E and is typically really small
(# of inputs to an operation + control edges)
PiperOrigin-RevId: 210624296
|
| |
| |
| |
| | |
PiperOrigin-RevId: 210565027
|
|\ \
| | |
| | |
| | | |
PiperOrigin-RevId: 210474549
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
conversions.
That is, instances of sp.ToString() are replaced with string(sp).
This will allow tensorflow::StringPiece::ToString to be removed, which is necessary before it can be replaced with absl::string_view.
PiperOrigin-RevId: 210394878
|
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 209679086
|
| | |
| | |
| | |
| | |
| | |
| | | |
- mkl_cpu_allocator.h: disallowing copy constructor and assignement operator; returning nullptr from non-void functions even though they generate Unimplemented Status code
- mkl_graph_util.h: making kTensorOrdering const because it never gets changed anyway
- mkl_layout_pass.cc: adding checks for nullptr before dereferencing
|
| |\ \
| |/ /
|/| | |
|
|\ \ \
| |_|/
|/| |
| | | |
PiperOrigin-RevId: 209032082
|
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 208775205
|
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 208720651
|
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 208716358
|
| | |
| | |
| | |
| | | |
PiperOrigin-RevId: 208680161
|
| |/
|/| |
|
| |\
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The existing feature macros are named INTEL_MKL to indicate that any flavor of
MKL is available, INTEL_MKL_ML to indicate that *only* MKL-ML is available
(i.e. MKL-DNN is not), and DO_NOT_USE_ML to indicate that *only* MKL-DNN is
available (i.e. MKL-ML is not).
This change renames INTEL_MKL_ML to INTEL_MKL_ML_ONLY and DO_NOT_USE_ML to
INTEL_MKL_DNN_ONLY. The meanings of the macros have not changed.
This change also adds a few sanity checks to mkl_util.h that ensures that the
combination of INTEL_MKL, INTEL_MKL_ML_ONLY, and INTEL_MKL_DNN_ONLY is
logically consistent: the *_ONLY macros may not both be defined, and if either
of them is defined, bare INTEL_MKL must also be defined.
PiperOrigin-RevId: 208313735
|
| | |
|
|/ |
|
|\
| |
| |
| | |
PiperOrigin-RevId: 206611194
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
tensorflow::string is sometimes ::string and sometimes std::string, which
makes code that uses both subtly dangerous. For example,
FactoryKeyCreator::AddAsKey() has an overload for tensorflow::string but had
many callsites passing a std::string, causing incorrect behavior on
the google platform.
PiperOrigin-RevId: 206389641
|
| |
| |
| |
| |
| |
| |
| | |
The format used is as follows:
{{node <node_name>}}
PiperOrigin-RevId: 206370355
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
decide
whether bfloat16 casts should use truncation or rounding.
This is a preparatory change before we switch the default float ==> bfloat16 cast
to use rounding instead of truncation. The attribute added can then be specified
on casts that rely on the truncation, e.g., the TensorFlow send/receive operations.
It later emerged that the choice of doing truncation is useful more generally.
Therefore, this change allows the new attribute to be used by all relevant casts
to use truncation instead of rounding.
PiperOrigin-RevId: 205996367
|
| | |
|
| | |
|
|/
|
|
| |
operator are not present since these MKL grad operators require workspace
|
|
|
|
| |
PiperOrigin-RevId: 205146924
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TensorFlow allows nodes to have some live inputs and some dead inputs. The
executor does not execute these nodes but instead propagates a dead signal to
all their outputs (i.e. these nodes are treated as fully dead).
This is a problem for auto-clustering because it means auto-clustering can kill
nodes that used to be alive. For instance say before clustering we have a graph
like
digraph {
Alive0 -> P
Alive1 -> Q
Dead -> R
P -> X
Q -> X
Q -> Y
R -> Y
}
and we cluster P, Q, R, X and Y into a single XLA cluster.
Then after clustering both X and Y are dead because the cluster is a single node
as far as the executor is concerned and said node won't get scheduled if any of
its inputs are dead.
This CL introduces a static analysis pass that our auto-clustering code can use
to ensure nodes that have inputs with mismatching deadness (like "Y" in the
example graph) are not included in XLA clusters.
PiperOrigin-RevId: 205143316
|
|
|
|
|
|
|
| |
error: no type named 'type' in 'std::__1::enable_if<false, void>'; 'enable_if' cannot be used to disable this declaration
,typename enable_if<is_convertible<const _U1&, _T1>::value &&
PiperOrigin-RevId: 203216967
|
|
|
|
| |
PiperOrigin-RevId: 202585094
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MacOS builds were failing with errors like the following:
In file included from tensorflow/core/graph/graph_constructor.cc:16:
In file included from ./tensorflow/core/graph/graph_constructor.h:19:
In file included from bazel-out/darwin-opt/genfiles/tensorflow/core/framework/graph.pb.h:7:
In file included from /Applications/Xcode_8.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:439:
In file included from /Applications/Xcode_8.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/algorithm:627:
/Applications/Xcode_8.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/utility:280:38: error: no type named 'type' in 'std::__1::enable_if<false, void>'; 'enable_if' cannot be used to disable this declaration
,typename enable_if<is_convertible<const _U1&, _T1>::value &&
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./tensorflow/core/graph/tensor_id.h:66:15: note: in instantiation of member function 'std::__1::pair<std::__1::basic_string<char>, int>::pair' requested here
using Base::pair;
^
tensorflow/core/graph/graph_constructor.cc:411:28: note: while substituting deduced template arguments into function template 'SafeTensorId' [with _U1 = tensorflow::StringPiece, _U2 = int]
TensorId src = mapping.first;
^
I'm still not exactly sure what the problem is and why it doesn't affect all compilers, but for some reason the compiler is trying to construct a SafeTensorId from a StringPiece. My guess is there's a std::pair constructor that takes another pair, and an enable_if isn't working correctly to prevent incompatible types from being ignored.
PiperOrigin-RevId: 201980490
|
|
|
|
| |
PiperOrigin-RevId: 201766085
|