| Commit message (Collapse) | Author | Age |
|
|
|
| |
PiperOrigin-RevId: 181814918
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add methods for manipulating sparse literals to xla::Literal
- Make LayoutUtil::HumanString handle sparse layouts
- Make ShapeUtil::ParseShape handle sparse shapes
- Syntax for shapes has changed:
- Old way of expressing layouts still works, e.g. f32[1,2,3]{2,1,0}
- Can now make dense format explicit: f32[1,2,3]dense{2,1,0}
- Can express sparse layouts; the max_sparse_elements value is in the
braces, e.g.: f32[1,2,3]sparse{10}
- The shape should not include braces for the layout if the shape is scalar;
e.g. f32[]{} is not valid shape syntax.
- The shape should not include braces for the layout if the shape is a dense
rank-1 array; e.g. f32[10]{0} is not valid shape syntax
- Sparse literals use a dictionary-liky syntax, e.g.:
f32[2,3,4]sparse{10} {[0,1,2]: 10, [1,2,3]: 11}
- For rank-1 sparse arrays, the square brackets around indices may be omitted, e.g.:
f32[100]sparse{10} {5: 10, 20: 30}
PiperOrigin-RevId: 181813837
|
|
|
|
| |
PiperOrigin-RevId: 181810382
|
|
|
|
| |
PiperOrigin-RevId: 181809677
|
|
|
|
|
|
| |
This implements just the basic operations for pushing, popping, stacking, and unstacking. Operations to create an empty list of a known size and to set / get individual elements by index forthcoming.
PiperOrigin-RevId: 181803880
|
|
|
|
| |
PiperOrigin-RevId: 181802067
|
|
|
|
| |
PiperOrigin-RevId: 181800015
|
|
|
|
| |
PiperOrigin-RevId: 181798974
|
|
|
|
|
|
|
|
|
|
| |
adding control dependencies.
* Fix a bug in ConstantFolding::AddControlDependency: Don't create the same Identity node after Switch multiple times. Just re-use if it already exists.
* Make sure that nodes added in rewrites have unique names.
* A few minor cleanups.
PiperOrigin-RevId: 181798973
|
|
|
|
| |
PiperOrigin-RevId: 181797089
|
|
|
|
| |
PiperOrigin-RevId: 181795909
|
|
|
|
|
|
| |
Scalar tensors are allowed.
PiperOrigin-RevId: 181787643
|
|
|
|
|
|
|
|
|
| |
* Make bfloat16's conversion constructors non-explicit, so that bfloat16 is consistent
with a built-in type. This was useful in some of the templated tests.
* Give bfloat16 prefix and suffix operator++ and operator--, making it more like float,
which has these. This also came up in a templated test.
PiperOrigin-RevId: 181784644
|
|
|
|
| |
PiperOrigin-RevId: 181784078
|
|
|
|
| |
PiperOrigin-RevId: 181777970
|
|
|
|
| |
PiperOrigin-RevId: 181777677
|
|
|
|
| |
PiperOrigin-RevId: 181774069
|
|
|
|
| |
PiperOrigin-RevId: 181774067
|
|
|
|
|
|
| |
accept negative axes that aren't -1 as the documentation claims. _swap() was accepting negative indices when math_ops.range() does not accept negative indices
PiperOrigin-RevId: 181771157
|
|
|
|
| |
PiperOrigin-RevId: 181770918
|
|
|
|
| |
PiperOrigin-RevId: 181769938
|
|
|
|
|
|
|
|
| |
When debugging slow startups, it is useful to be able to determine the following, and I which I was not able to get from the current logging:
- When, and how long, model construction happens with Estimator
- When, and how long, the init op takes
PiperOrigin-RevId: 181768945
|
|
|
|
| |
PiperOrigin-RevId: 181765083
|
|
|
|
| |
PiperOrigin-RevId: 181761270
|
|
|
|
| |
PiperOrigin-RevId: 181756421
|
|
|
|
| |
PiperOrigin-RevId: 181756325
|
|
|
|
| |
PiperOrigin-RevId: 181755864
|
|
|
|
|
|
| |
Handle the case where a value is fed in via multiple switch nodes without relying on CSE to dedup the nodes as we'd only want/need to feed in the same value once per function.
PiperOrigin-RevId: 181752351
|
|
|
|
| |
PiperOrigin-RevId: 181748699
|
|
|
|
|
|
|
| |
Fixes Eigen TensorFFT precision issues due to twiddle factor calculation via recurrence:
https://bitbucket.org/eigen/eigen/commits/6c74460b39d4c3e2e570dbe9e82497cac3800e57
PiperOrigin-RevId: 181748118
|
|
|
|
| |
PiperOrigin-RevId: 181746741
|
|
|
|
|
|
|
| |
Removes NCCL kernel registration in non-CUDA builds (but retains NCCL ops).
Removes unused python/ops/_nccl_ops.so target.
PiperOrigin-RevId: 181736230
|
|
|
|
|
|
| |
Float Features
PiperOrigin-RevId: 181712201
|
|
|
|
| |
PiperOrigin-RevId: 181698744
|
|
|
|
|
|
| |
than once.
PiperOrigin-RevId: 181695508
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
framework/types.h defines a variety of functions on DataType enums. Some of these functions are implemented by allocating arrays in the heap. Even though DataTypeVector is a typedef for InlinedVector, it only stores 4 elements inline. Many of the vectors used in types.h/types.cc contain more than 4 elements.
To make matters worse, some of these functions are called quite frequently under load, so we're wasting time allocating and copying arrays.
The set of distinct DataType values is so small, however, that we can represent a set of DataType values as a bitmask, and use bit-shifts and tests instead of sequential scans of arrays.
Even the functions that do not allocate, such as DataTypeCanUseMemcpy(), are needlessly inefficient (read: they use control-flow and indirect jumps when a simple table-based load would do; they are also not inlined). These costs were significant enough that they consumed about 1.2% of CPU cycles under heavy load.
The surprising cost of DataTypeCanUseMemcpy() inspired this change. I went ahead and made the change fully general, by adding a DataTypeSet type and changing all of the utility functions in framework/types.h to use it (with the exception of DataTypeAlwaysOnHost because it uses a _REF type), for the sake of generality and performance.
PiperOrigin-RevId: 181695458
|
|
|
|
| |
PiperOrigin-RevId: 181695156
|
|
|
|
|
|
|
|
|
|
| |
This removes some unnecessary transient allocations from the GCS client code, by passing pointers to data directly to the JSON parsing library, rather than copying all of the JSON data to a temporary 'string' object.
Also converted some unnecessarily-general comparisons against Json::Value::null to calls to Value::isNull().
Also changes several parameters from "const string&" to "const char*", in order to avoid unnecessary intermediate allocations. Json::Value::get() has an overload which takes "const char*". Ideally, the JSON library would use string_view or StringPiece, but that's an open source project and so modifying that dependency is out of scope for this change.
PiperOrigin-RevId: 181693172
|
|
|
|
| |
PiperOrigin-RevId: 181692968
|
|
|
|
| |
PiperOrigin-RevId: 181689879
|
|
|
|
|
|
|
|
| |
In the future these methods should be removed in favor of the Python
graph-based implementations in tensorboard.summary. But the methods
should be supported until they're deleted.
PiperOrigin-RevId: 181689100
|
|
|
|
| |
PiperOrigin-RevId: 181686453
|
|
|
|
|
|
|
| |
These impls are two peas in the same pod. This will make it easier to
write a follow-up change that refactors out common code.
PiperOrigin-RevId: 181684341
|
|
|
|
| |
PiperOrigin-RevId: 181679271
|
|
|
|
|
|
|
| |
This is a fix to the below issue:
#15956
PiperOrigin-RevId: 181679121
|
|
|
|
|
|
|
|
|
|
|
| |
cases.
Remove the unused `tf.contrib.data.parse_single_example()` function, which was
a temporary bridge to the fused implementation.
Note that the fused implementation is only used if the (seldom used) `example_names` argument is None. Otherwise, it falls back to the existing unfused implementation.
PiperOrigin-RevId: 181676746
|
|
|
|
|
|
|
|
| |
This thing is kind of cool. It's able to turn a 350mB event log into a
35mB SQLite file at 80mBps with one Macbook core. Best of all, this was
accomplished using a normalized schema without the embedded protos.
PiperOrigin-RevId: 181676380
|
|
|
|
|
|
| |
neutral/absorbing element optimizer. This is not an error, at worst a missed optimization oppportunity. See #15521.
PiperOrigin-RevId: 181673939
|
|
|
|
| |
PiperOrigin-RevId: 181673354
|
|
|
|
| |
PiperOrigin-RevId: 181672525
|