| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
| |
Otherwise we can end up in a situation where incompatible reduces that happen
to have the same output shape are fused.
PiperOrigin-RevId: 200180013
|
|
|
|
|
|
| |
grained control of conversion.
PiperOrigin-RevId: 200155520
|
|
|
|
|
|
|
|
|
| |
END_PUBLIC
BEGIN_PUBLIC
Automated g4 rollback of changelist 200139880
PiperOrigin-RevId: 200155130
|
|
|
|
| |
PiperOrigin-RevId: 200153612
|
|
|
|
| |
PiperOrigin-RevId: 200151330
|
|
|
|
| |
PiperOrigin-RevId: 200149066
|
|
|
|
| |
PiperOrigin-RevId: 200141207
|
|
|
|
| |
PiperOrigin-RevId: 200140810
|
|
|
|
| |
PiperOrigin-RevId: 200139880
|
|
|
|
| |
PiperOrigin-RevId: 200139790
|
|
|
|
| |
PiperOrigin-RevId: 200136934
|
|
|
|
|
|
| |
HloInstruction.
PiperOrigin-RevId: 200135616
|
|
|
|
| |
PiperOrigin-RevId: 200135189
|
|
|
|
|
|
| |
Fix #19385
PiperOrigin-RevId: 200132949
|
|
|
|
|
|
| |
This is required to do anything useful from python.
PiperOrigin-RevId: 200129777
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* In some cases the RuntimeError object (tf_error in cli_shared.py) doesn't have
the op or its name available. Handle that situation properly.
* Previously, we used client graphs in the debugger CLI whenever it's available. This
has caused issues in which the device names
(e.g., "/device:GPU:0" vs "/job:localhost/replica:0/task:0/device:CPU:0").
This CL fixes that by favoring the runtime graph on the disk over the client graph.
The former has the actual device names.
Use the latter only if the former isn't available for some reason (e.g.,
writing graph to the disk failed.)
PiperOrigin-RevId: 200128582
|
|
|
|
|
|
|
|
|
|
| |
In particular:
* Improve the error message when the generator yields something with the wrong
structure.
* Improve the error message when the generator yields something with the wrong
element type.
PiperOrigin-RevId: 200124096
|
|
|
|
| |
PiperOrigin-RevId: 200122052
|
|
|
|
| |
PiperOrigin-RevId: 200119934
|
|
|
|
|
|
| |
#19735
PiperOrigin-RevId: 200118450
|
|
|
|
| |
PiperOrigin-RevId: 200117729
|
|
|
|
|
|
| |
in callable parameters.
PiperOrigin-RevId: 200114810
|
|
|
|
|
|
|
|
|
|
|
|
| |
This doesn't change codegen directly, but makes dealing with scalar broadcasts
much easier and the graph easier to read. This required changing the dot *
alpha fusion logic quite a bit, but I think for the better.
The emitter change is a bit of a hack. The more I look at this code the more
broken it seems. Need to find a more sustainable way of emitting what is
essentially a memset.
PiperOrigin-RevId: 200111599
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the generate would emit code like this:
struct Attrs {
ArraySlice<int> dilations_ = {1, 1, 1, 1};
};
This code is incorrect, since the array slice references a temporary object
that dies after initialization finishes.
After this change change the generator will produce static functions to
initialize the values:
struct Attrs {
ArraySlice<int> dilations_ = Default_dilations();
private:
ArraySlice<int> Default_dilations() {
static int kStorage[] = {1, 1, 1, 1};
return ArraySlice<int>(kStorage);
}
};
Presumably, it used to work because all compilers chose to use static storage
in those cases anyway. However, new versions of clang tend to miscompile this
code, causing test failures. (This error was found when trying to upgrade our
clang revision from r328903 to r331746).
PiperOrigin-RevId: 200110952
|
|
|
|
| |
PiperOrigin-RevId: 200110003
|
|
|
|
| |
PiperOrigin-RevId: 200109989
|
|
|
|
| |
PiperOrigin-RevId: 200103320
|
|
|
|
|
|
|
|
|
|
|
| |
This avoid breakages when passing temporary objects, e.g.
auto it = sparse_tensor.group({0});
for (auto _ : it) { /* ... */ }
The API was easy to misuse before and this actually causes test failures when
compiling with a new clang version.
PiperOrigin-RevId: 200097909
|
|
|
|
|
|
| |
Found by inspection, performance seems neutral.
PiperOrigin-RevId: 200096482
|
|
|
|
| |
PiperOrigin-RevId: 200096167
|
|
|
|
| |
PiperOrigin-RevId: 200095692
|
|
|
|
|
|
| |
Reduces visual noise, makes it easier to see the *actual* parameters.
PiperOrigin-RevId: 200094095
|
|
|
|
| |
PiperOrigin-RevId: 200088845
|
|
|
|
|
|
| |
Fixes issues when there's no default session
PiperOrigin-RevId: 200088574
|
|
|
|
| |
PiperOrigin-RevId: 200087766
|
|
|
|
|
|
| |
implementation.
PiperOrigin-RevId: 200087647
|
|
|
|
| |
PiperOrigin-RevId: 200086945
|
|
|
|
| |
PiperOrigin-RevId: 200086761
|
|
|
|
| |
PiperOrigin-RevId: 200086551
|
|
|
|
| |
PiperOrigin-RevId: 200080095
|
|
|
|
| |
PiperOrigin-RevId: 200079654
|
|
|
|
| |
PiperOrigin-RevId: 200079299
|
|
|
|
|
|
| |
Enforce mutex around access to test variable.
PiperOrigin-RevId: 200078751
|
|
|
|
|
|
| |
estimation.
PiperOrigin-RevId: 200078367
|
|
|
|
|
|
|
|
|
|
| |
broken condition if the runtime decides to let another thread run).
Thank you for finding the bug. The watched_variables_ set should not really require a lock since all our functions hold the GIL (verified by looking at the generated SWIG). The reason that there was a concurrent access to the set is that the insert was calling back into python (which might release the GIL and let another thread run, which will also attempt to insert a variable and break the set).
I included the lock to be safe though, since its non-trivial to verify without looking at the generated swig wrappers that the GIL is held.
PiperOrigin-RevId: 200074843
|
|
|
|
| |
PiperOrigin-RevId: 200072055
|
|
|
|
|
|
| |
set_element_type, set_loop_options and others. To replace their counterparts in utils.
PiperOrigin-RevId: 200069544
|
|
|
|
|
|
| |
These docs are out of date.
PiperOrigin-RevId: 200066984
|
|
|
|
| |
PiperOrigin-RevId: 200061346
|
|
|
|
|
|
|
|
|
| |
We used something notionally equivalent to "(x == x) && abs(x) != inf" to
implement kIsFinite. However, using an ordered comparison against infinity will
return false for NaN inputs as well which obviates the need to explicitly test
for NaN.
PiperOrigin-RevId: 200046365
|