Alexandre Passos [Sat, 24 Feb 2018 00:51:50 +0000 (16:51 -0800)]
Registers None gradients for ArgMax
PiperOrigin-RevId:
186843686
Zhixian Yan [Sat, 24 Feb 2018 00:51:24 +0000 (16:51 -0800)]
Internal change.
PiperOrigin-RevId:
186843632
Jeremy Lau [Sat, 24 Feb 2018 00:48:56 +0000 (16:48 -0800)]
Internal change.
PiperOrigin-RevId:
186843326
A. Unique TensorFlower [Sat, 24 Feb 2018 00:05:57 +0000 (16:05 -0800)]
Add Kumaraswamy Bijector, and let Kumaraswamy distribution depend on it.
PiperOrigin-RevId:
186838045
Patrick Nguyen [Sat, 24 Feb 2018 00:04:38 +0000 (16:04 -0800)]
Add custom registered graph optimizers run by MetaOptimizer.
PiperOrigin-RevId:
186837828
Allen Lavoie [Fri, 23 Feb 2018 23:51:23 +0000 (15:51 -0800)]
Checkpointable: Utility to gather initialization ops
A bit safer, since only variables which will be saved get initialized. Graph
building then raises an error when you've used one which won't be saved. Reduces
the need for the global collection.
Makes it a bit easier to deal with initialization when writing graph/eager
agnostic programs.
PiperOrigin-RevId:
186835744
Asim Shankar [Fri, 23 Feb 2018 23:45:02 +0000 (15:45 -0800)]
eager: Change various examples to use tf.keras.Model instead of tfe.Network.
PiperOrigin-RevId:
186834891
A. Unique TensorFlower [Fri, 23 Feb 2018 23:43:09 +0000 (15:43 -0800)]
Add test for bug in CUB that caused dynamic partition to fail on the GPU.
PiperOrigin-RevId:
186834668
Alexandre Passos [Fri, 23 Feb 2018 23:35:35 +0000 (15:35 -0800)]
Improvement to the eager device placement heuristic.
PiperOrigin-RevId:
186833677
A. Unique TensorFlower [Fri, 23 Feb 2018 23:33:22 +0000 (15:33 -0800)]
Adds unit tests for mean op with uint8_t input data.
PiperOrigin-RevId:
186833364
A. Unique TensorFlower [Fri, 23 Feb 2018 23:06:46 +0000 (15:06 -0800)]
Eager/C: Add a TF_Status argument to a couple of functions.
PiperOrigin-RevId:
186829318
Skye Wanderman-Milne [Fri, 23 Feb 2018 22:38:37 +0000 (14:38 -0800)]
Make tf.size() with optimize=True encode 0 if any dimension is 0.
PiperOrigin-RevId:
186824964
Allen Lavoie [Fri, 23 Feb 2018 22:29:41 +0000 (14:29 -0800)]
Make it easier to debug @assert_no_garbage_created unit test failures
Prints a bunch of information about each object.
PiperOrigin-RevId:
186823593
A. Unique TensorFlower [Fri, 23 Feb 2018 22:22:53 +0000 (14:22 -0800)]
* CUB updated to 1.8.0
* updated ShuffleIndex because of API change
PiperOrigin-RevId:
186822637
Benoit Steiner [Fri, 23 Feb 2018 22:22:06 +0000 (14:22 -0800)]
Preserve user placement as much as possible when optimizing the graph
PiperOrigin-RevId:
186822511
Noah Eisen [Fri, 23 Feb 2018 22:08:57 +0000 (14:08 -0800)]
Automated g4 rollback of changelist
185688704
PiperOrigin-RevId:
186820593
Alexandre Passos [Fri, 23 Feb 2018 22:06:49 +0000 (14:06 -0800)]
Respects some form of log_device_placement in eager.
PiperOrigin-RevId:
186820292
Yuanzhong Xu [Fri, 23 Feb 2018 21:13:25 +0000 (13:13 -0800)]
[XLA] Fix BF16 propagation pass to produce matching fusion root and output.
Previously, the propagation pass might produce different procision in the fused
computation's root than the fusion itself, when the fused root doesn't define a buffer.
Add explicit converts at such fusion roots.
PiperOrigin-RevId:
186812368
A. Unique TensorFlower [Fri, 23 Feb 2018 20:24:53 +0000 (12:24 -0800)]
Add usage example to KMeans Estimator documentation.
PiperOrigin-RevId:
186805772
Kay Zhu [Fri, 23 Feb 2018 20:24:19 +0000 (12:24 -0800)]
[TF:XLA] Fix a bug where executor's device_ordinal should be passed to AllocateShapedBuffer. Also enable C64 type for interpreter device.
PiperOrigin-RevId:
186805709
Akshay Agrawal [Fri, 23 Feb 2018 20:18:31 +0000 (12:18 -0800)]
Cleanup for graph functions.
(1) Define constants for the names of Arg and Retval ops, and use them in various places.
(2) Change the signature and documentation for `BuildControlFlow` to reflect the fact that the supplied Graph is not mutated.
(3) Expose the FunctionLibraryRuntime's DeviceMgr, in preparation for multi-device functions.
PiperOrigin-RevId:
186804968
Kay Zhu [Fri, 23 Feb 2018 19:58:10 +0000 (11:58 -0800)]
[XLA] Internal change.
PiperOrigin-RevId:
186802115
A. Unique TensorFlower [Fri, 23 Feb 2018 18:29:58 +0000 (10:29 -0800)]
Remove redundant line which is almost a duplicate of one a few lines below in
datasets_quickstart document.
PiperOrigin-RevId:
186788306
A. Unique TensorFlower [Fri, 23 Feb 2018 17:15:58 +0000 (09:15 -0800)]
Allow setting of OpMetadata for Send HLOs.
PiperOrigin-RevId:
186777369
A. Unique TensorFlower [Fri, 23 Feb 2018 10:16:32 +0000 (02:16 -0800)]
Let variables initialized from checkpoints answer ".initialized_value()" correctly.
PiperOrigin-RevId:
186741832
Dustin Tran [Fri, 23 Feb 2018 04:02:33 +0000 (20:02 -0800)]
Unify metropolis_hastings interface with HMC kernel.
PiperOrigin-RevId:
186716023
A. Unique TensorFlower [Fri, 23 Feb 2018 03:47:03 +0000 (19:47 -0800)]
Enable constant propagation across Switch(x,x) by rewriting the two outputs as Const(false), Const(true) with appropriate control dependencies. This is a fairly common pattern when the graph contains assertions.
By rewriting the graph a bit, we can propagate the constants down the two output branches, and just use control dependencies to trigger the selected one at runtime. For example,
+------+
x-->|Switch|-->a
x-->| |-->b
+------+
Is rewritten as
+------+
x-->|Switch|-->Identity--^>Const(false)-->a
x-->| |-->Identity--^>Const(true)-->b
+------+
(In practice there may be multiple consumers of each output branch.)
PiperOrigin-RevId:
186714991
A. Unique TensorFlower [Fri, 23 Feb 2018 02:34:32 +0000 (18:34 -0800)]
Pass 'mode' argument to input_fn if appropriate in TPUEstimator.
PiperOrigin-RevId:
186709373
A. Unique TensorFlower [Fri, 23 Feb 2018 02:18:20 +0000 (18:18 -0800)]
Update ops-related pbtxt files.
PiperOrigin-RevId:
186707935
A. Unique TensorFlower [Fri, 23 Feb 2018 02:13:40 +0000 (18:13 -0800)]
[XLA] Add SliceInDim to the local Python XLA client.
[XLA] Revise a comment regarding how the two-argument version of Reshape flattens dimensions (it's first-to-last, not major-to-minor since those terms apply to memory layout rather than logical dimensions, and the comment wasn't consistent about major-to-minor or minor-to-major).
PiperOrigin-RevId:
186707393
A. Unique TensorFlower [Fri, 23 Feb 2018 02:02:04 +0000 (18:02 -0800)]
Add cost estimator tests for the BiasAdd, ReLU, and Conv2D operations.
PiperOrigin-RevId:
186705930
Derek Murray [Fri, 23 Feb 2018 02:01:16 +0000 (18:01 -0800)]
Fix fix Defun logic when returning a value captured from an outer scope.
Previously, the following would fail:
```python
c = tf.constant(...)
@Defun(...)
def Foo(...):
return c
```
The fix involves ensuring that every output of the function is a member of the function graph, and invoking the capturing logic if it is not.
PiperOrigin-RevId:
186705800
A. Unique TensorFlower [Fri, 23 Feb 2018 01:52:58 +0000 (17:52 -0800)]
Turn on strip_default_attrs by default during custom export.
PiperOrigin-RevId:
186704976
A. Unique TensorFlower [Fri, 23 Feb 2018 01:19:49 +0000 (17:19 -0800)]
Moved LIBXSMM convolutions to a separate --define flag so that they are disabled by default.
PiperOrigin-RevId:
186700936
A. Unique TensorFlower [Fri, 23 Feb 2018 00:53:40 +0000 (16:53 -0800)]
LSTM support: Quantized types, quantization params for 16-bit unfused LSTMs.
PiperOrigin-RevId:
186697357
A. Unique TensorFlower [Fri, 23 Feb 2018 00:50:27 +0000 (16:50 -0800)]
Go: Update generated wrapper functions for TensorFlow ops.
PiperOrigin-RevId:
186696903
Andrew Selle [Fri, 23 Feb 2018 00:49:48 +0000 (16:49 -0800)]
Clarify ownership story of TfLiteIntArray* nodes_to_replace
PiperOrigin-RevId:
186696787
Igor Ganichev [Fri, 23 Feb 2018 00:42:55 +0000 (16:42 -0800)]
Support degenerate strided slicing under XLA.
For example, when start, end, and stride are all positive, but `start` is
greater than `end`, tf2xla used to raise an error instead of returning a
tensor with that dimension size being 0. Latter is the regular
tensorflow and python behavior. This change makes XLA behave the same
way.
PiperOrigin-RevId:
186695842
A. Unique TensorFlower [Fri, 23 Feb 2018 00:40:41 +0000 (16:40 -0800)]
Internal change.
PiperOrigin-RevId:
186695534
Kay Zhu [Fri, 23 Feb 2018 00:40:19 +0000 (16:40 -0800)]
[XLA] Enable most xla/tests for interpreter.
PiperOrigin-RevId:
186695486
Bixia Zheng [Fri, 23 Feb 2018 00:37:30 +0000 (16:37 -0800)]
Add to disabled tests the date they were last ran and failed.
This is to address the comments in cl/
186664459.
PiperOrigin-RevId:
186695081
A. Unique TensorFlower [Fri, 23 Feb 2018 00:34:47 +0000 (16:34 -0800)]
Add integration tests for remote build execution.
PiperOrigin-RevId:
186694734
Eugene Brevdo [Fri, 23 Feb 2018 00:18:34 +0000 (16:18 -0800)]
New Mutex operations for a distributed-happy and Function-less CriticalSection.
Original idea by Alex Passos; impl and cancellation handling by Eugene Brevdo with help from Alex.
PiperOrigin-RevId:
186692306
Max Galkin [Fri, 23 Feb 2018 00:13:00 +0000 (16:13 -0800)]
Add a regression test for virtual_scheduler.
PiperOrigin-RevId:
186691392
A. Unique TensorFlower [Thu, 22 Feb 2018 23:34:50 +0000 (15:34 -0800)]
Implement the logic to parse TensorProto (the tensor value for input or filter shape info) in op_level_cost_estimator.
PiperOrigin-RevId:
186685409
Derek Murray [Thu, 22 Feb 2018 23:06:45 +0000 (15:06 -0800)]
[tf.data] Handle a function-raised OutOfRange error correctly in ParallelMapDataset.
PiperOrigin-RevId:
186680982
Yifei Feng [Thu, 22 Feb 2018 22:24:57 +0000 (14:24 -0800)]
Merge changes from github.
PiperOrigin-RevId:
186674197
Jeremy Lau [Thu, 22 Feb 2018 22:20:35 +0000 (14:20 -0800)]
Internal change.
PiperOrigin-RevId:
186673561
A. Unique TensorFlower [Thu, 22 Feb 2018 21:54:25 +0000 (13:54 -0800)]
Adds support for identifying dilated convolution emulation.
Dilated convolution can be emulated by a chain of SpaceToBatchND -> Conv2D -> BatchtoSpaceND. This change adds a graph transformation that identifies this pattern, and variations of it, and substitutes a true dilated convolution instead.
PiperOrigin-RevId:
186669260
Jacques Pienaar [Thu, 22 Feb 2018 21:43:57 +0000 (13:43 -0800)]
Enable int64 outfeed.
PiperOrigin-RevId:
186667574
Bixia Zheng [Thu, 22 Feb 2018 21:23:47 +0000 (13:23 -0800)]
[XLA] Enable F16 convolution test for CPU.
Remove TODO(b/
72509305) as the issue has been fixed.
PiperOrigin-RevId:
186664459
A. Unique TensorFlower [Thu, 22 Feb 2018 21:09:53 +0000 (13:09 -0800)]
Add min_check_interval_secs with 5s as default to ValidationMonitor to avoid checking for existance of a new checkpoint overly frequent that can lead to severe performance issues on remote filesystems.
PiperOrigin-RevId:
186662441
Max Galkin [Thu, 22 Feb 2018 21:04:13 +0000 (13:04 -0800)]
Relax one of the error conditions to allow modeling graphs without explicit set of feed nodes.
PiperOrigin-RevId:
186661729
Allen Lavoie [Thu, 22 Feb 2018 20:53:25 +0000 (12:53 -0800)]
Remove a bit of misleading documentation (we no longer do Graph containers)
PiperOrigin-RevId:
186660057
Jeremy Lau [Thu, 22 Feb 2018 20:45:38 +0000 (12:45 -0800)]
Internal change.
PiperOrigin-RevId:
186658974
Yuanzhong Xu [Thu, 22 Feb 2018 20:27:37 +0000 (12:27 -0800)]
[XLA] HLO BF16 propagation pass.
Using BFloat16Support provided by the backend to determine what precision is needed for
each HloInstruction. If the implementation of some HLOs already reduces input precision to BF16, this pass can enable BF16 on more ops without affecting the result.
PiperOrigin-RevId:
186656378
Zhixian Yan [Thu, 22 Feb 2018 20:26:22 +0000 (12:26 -0800)]
Generate example for basic lstm cell in tflite
PiperOrigin-RevId:
186656247
Guangda Lai [Thu, 22 Feb 2018 20:24:22 +0000 (12:24 -0800)]
Fix BaseGPUDevice, let it report the actual memory limit of the allocator. Also added a helper method to reset ProcessState.
PiperOrigin-RevId:
186655996
Benoit Steiner [Thu, 22 Feb 2018 20:18:39 +0000 (12:18 -0800)]
Measure the performance of the original placement to ensure that we preserve it
in case the placer isn't given enough time to find a better solution.
PiperOrigin-RevId:
186655094
Francois Chollet [Thu, 22 Feb 2018 20:16:09 +0000 (12:16 -0800)]
Add eager support for unit tests for most Keras layers.
A few minor layers were left out:
- noise layers (apparent issue with tf.random_normal)
- bidirectional wrapper
- conv recurrent layers (impending refactor)
PiperOrigin-RevId:
186654795
Allen Lavoie [Thu, 22 Feb 2018 20:01:57 +0000 (12:01 -0800)]
Checkpointable: Re-use the Saver's SaveableObject infrastructure to create
restore ops, cache them.
The basic infrastructure is usable after this CL in graph and eager, but I still need to make a bunch of objects Checkpointable and make some other usability fixes.
Also sets some of the groundwork for feeding and fetching Python values during save/restore (as in, save has a feed dict now; gathering feeds and placeholders from Checkpointable objects is still to do but should be relatively straightforward).
PiperOrigin-RevId:
186652696
Gunhan Gulsoy [Thu, 22 Feb 2018 19:46:05 +0000 (11:46 -0800)]
Update bazel toolchains dependency.
PiperOrigin-RevId:
186650360
A. Unique TensorFlower [Thu, 22 Feb 2018 19:45:57 +0000 (11:45 -0800)]
Add basic support for quantized unfused LSTMs.
PiperOrigin-RevId:
186650338
Peter Hawkins [Thu, 22 Feb 2018 19:34:16 +0000 (11:34 -0800)]
[TF:XLA] Improve readability of HLO graphs when rendered via Tensorboard.
Add operator metadata around the computation arguments and retvals, so they are grouped together.
Teach the batchnorm expander pass to propagate the operator metadata from the original batch norm operators.
PiperOrigin-RevId:
186648547
Guangda Lai [Thu, 22 Feb 2018 19:25:24 +0000 (11:25 -0800)]
Add a test only method to reset ProcessState.
PiperOrigin-RevId:
186647005
A. Unique TensorFlower [Thu, 22 Feb 2018 18:59:57 +0000 (10:59 -0800)]
Change the MomentumOptimzer lambda so it has the same named argument (learning_rate)
as the MomentumOptimzer constructor.
PiperOrigin-RevId:
186642325
Benoit Steiner [Thu, 22 Feb 2018 18:44:19 +0000 (10:44 -0800)]
Added a regression test to make sure we deal with large constants properly
PiperOrigin-RevId:
186639709
A. Unique TensorFlower [Thu, 22 Feb 2018 18:32:59 +0000 (10:32 -0800)]
Change warning message for case where Python detects a colocation that conflicts with a device assignment.
PiperOrigin-RevId:
186637887
A. Unique TensorFlower [Thu, 22 Feb 2018 17:03:00 +0000 (09:03 -0800)]
Update LLVM for API changes in r325725
PiperOrigin-RevId:
186624266
A. Unique TensorFlower [Thu, 22 Feb 2018 16:52:42 +0000 (08:52 -0800)]
Add node name to placer device-placement/kernel-assignment error messages .
PiperOrigin-RevId:
186622923
Jacques Pienaar [Thu, 22 Feb 2018 15:53:38 +0000 (07:53 -0800)]
Add S64 add/subtract test and convert tests.
* Fixed bugs in convert from U32 to S64.
END_PUBLIC
*** Original change description ***
BEGIN_PUBLIC
Automated g4 rollback of changelist
186494344
PiperOrigin-RevId:
186616875
Derek Murray [Thu, 22 Feb 2018 15:25:41 +0000 (07:25 -0800)]
[tf.data] Add experimental ability to override the function threadpool.
The purpose of this feature is to enable experimentation with differentiating
the CPU resources available to different stages of a `tf.data` pipeline. As a
concrete example, we might use the new feature to move all input-related work
from the inter-op threadpool onto a separate threadpool, leaving the inter-op
threadpool free to execute higher priority work (such as dispatching ops that
send tensors to an accelerator). The current implementation only allows users
to create fixed-size `tensorflow::ThreadPool` resources, but we could imagine
opening up this API to allow custom threadpools as well.
PiperOrigin-RevId:
186614315
A. Unique TensorFlower [Thu, 22 Feb 2018 14:48:27 +0000 (06:48 -0800)]
Optionally have persistent make_vjp
PiperOrigin-RevId:
186610572
A. Unique TensorFlower [Thu, 22 Feb 2018 13:30:42 +0000 (05:30 -0800)]
Adapt TensorFlow to LLVM API change from r325725
PiperOrigin-RevId:
186604023
Ilya Biryukov [Thu, 22 Feb 2018 11:11:14 +0000 (03:11 -0800)]
Fix compile errors by patching eigen locally.
PiperOrigin-RevId:
186592198
Gunhan Gulsoy [Thu, 22 Feb 2018 07:33:44 +0000 (23:33 -0800)]
Disable flaky keras:metrics_test.
PiperOrigin-RevId:
186573303
Benoit Steiner [Thu, 22 Feb 2018 06:02:54 +0000 (22:02 -0800)]
Avoid creating large constants since protocol buffers are limited to 2GB in size.
PiperOrigin-RevId:
186567461
Gunhan Gulsoy [Thu, 22 Feb 2018 05:06:54 +0000 (21:06 -0800)]
Disable flaky moving_average test.
PiperOrigin-RevId:
186563841
Benoit Steiner [Thu, 22 Feb 2018 05:05:42 +0000 (21:05 -0800)]
Started to open source the RL placer.
PiperOrigin-RevId:
186563773
Tatiana Shpeisman [Thu, 22 Feb 2018 03:56:00 +0000 (19:56 -0800)]
Deleting test that checks that 2D convolution with NCHW format is not implemented on CPU. The tests fail with MKL because the operation is implemented.
PiperOrigin-RevId:
186558730
Yangzihao Wang [Thu, 22 Feb 2018 01:42:46 +0000 (17:42 -0800)]
Do not set cudnn batch norm persistent mode when doing inference.
PiperOrigin-RevId:
186547439
Sanjoy Das [Thu, 22 Feb 2018 01:36:14 +0000 (17:36 -0800)]
Delete dot_operation_runtime_test -- it is identical to dot_operation_test.
PiperOrigin-RevId:
186546771
Skye Wanderman-Milne [Thu, 22 Feb 2018 01:20:32 +0000 (17:20 -0800)]
Fix control flow bug.
Without this change, the newly added test would fail with a "Reval[0]"
error. This was due to extra Enter nodes being added in the gradients
graph in order to enter the outer while contexts for a value that was
already in those contexts. The extra Enter nodes would cause the
frames of the execution to be messed up, which prevented the final
value from being propagated to the outermost Exit node.
A similar change is probably needed in WhileContext, although I don't
have a test case for this yet.
PiperOrigin-RevId:
186544961
Alexandre Passos [Thu, 22 Feb 2018 01:19:40 +0000 (17:19 -0800)]
Fix subtle race condition in ResourceVariable.is_initialized
PiperOrigin-RevId:
186544846
Michael Kuperstein [Thu, 22 Feb 2018 00:58:47 +0000 (16:58 -0800)]
Add more strided R1 tests.
PiperOrigin-RevId:
186542219
A. Unique TensorFlower [Thu, 22 Feb 2018 00:57:01 +0000 (16:57 -0800)]
Go: Update generated wrapper functions for TensorFlow ops.
PiperOrigin-RevId:
186542037
Blake Hechtman [Thu, 22 Feb 2018 00:39:43 +0000 (16:39 -0800)]
[XLA] Convert large constants of the same value into broadcasts.
PiperOrigin-RevId:
186539902
A. Unique TensorFlower [Thu, 22 Feb 2018 00:24:20 +0000 (16:24 -0800)]
Update ops-related pbtxt files.
PiperOrigin-RevId:
186537602
Derek Murray [Thu, 22 Feb 2018 00:20:27 +0000 (16:20 -0800)]
Fix lint errors and improve docs in fully_connected_reader.py.
PiperOrigin-RevId:
186537109
A. Unique TensorFlower [Thu, 22 Feb 2018 00:03:32 +0000 (16:03 -0800)]
Internal change.
PiperOrigin-RevId:
186534524
A. Unique TensorFlower [Wed, 21 Feb 2018 23:54:54 +0000 (15:54 -0800)]
Move sorting of variables from the implicit_grad family of functions
up to GradientTape.watched_variables() so we also get deterministic
behavior when using the GradientTape as is done in
Optimizer.compute_gradients().
PiperOrigin-RevId:
186533323
Jacques Pienaar [Wed, 21 Feb 2018 23:37:05 +0000 (15:37 -0800)]
Automated g4 rollback of changelist
186494344
PiperOrigin-RevId:
186530782
Derek Murray [Wed, 21 Feb 2018 23:36:55 +0000 (15:36 -0800)]
[tf.data] Move the `tf.contrib.data.unique()` C++ implementation to contrib.
PiperOrigin-RevId:
186530750
Brennan Saeta [Wed, 21 Feb 2018 23:19:47 +0000 (15:19 -0800)]
Internal-only change.
PiperOrigin-RevId:
186528023
Yifei Feng [Wed, 21 Feb 2018 23:13:03 +0000 (15:13 -0800)]
Disable flaky test tensorflow/contrib/opt:moving_average_optimizer_test
PiperOrigin-RevId:
186527039
Francois Chollet [Wed, 21 Feb 2018 23:12:16 +0000 (15:12 -0800)]
Add the ability to specify an explicit `training` argument when calling a Model (including Sequential).
PiperOrigin-RevId:
186526925
Yifei Feng [Wed, 21 Feb 2018 23:07:05 +0000 (15:07 -0800)]
Don't assign device for the keras part of _saved_first_checkpoint. Fix #14504.
PiperOrigin-RevId:
186526175
Skye Wanderman-Milne [Wed, 21 Feb 2018 22:56:13 +0000 (14:56 -0800)]
Don't require shape functions when creating ops from Python using the C API.
There are many ops out there without shape functions, and it's very
onerous to add UnknownShape to all of them.
PiperOrigin-RevId:
186524294
Derek Murray [Wed, 21 Feb 2018 22:46:29 +0000 (14:46 -0800)]
Mark the `SerializeSparseOp<Variant>` kernel as inexpensive.
Since this op only performs a constant amount of work, and typically
executes in a few microseconds, it should be profitable to execute
this op inline, rather than scheduling it on a remote thread.
PiperOrigin-RevId:
186522885
Akshay Modi [Wed, 21 Feb 2018 22:42:11 +0000 (14:42 -0800)]
Record gradient in C
PiperOrigin-RevId:
186522240