Comments (4)
Hi - I think this is working as expected. In three of the cases, you are setting indices_are_sorted
and/or unique_indices
to True, when your indices are neither unique nor sorted. If you lie to the compiler, you get undefined results.
In the last case where both flags are set to False, the output is also consistent with the documented behavior of the API: you have multiple duplicate indices. From the lax.scatter
documentation:
If multiple updates are performed to the same index of operand, they may be applied in any order.
[2, 3, 4, 7]
is a valid output here, because you specified that index -1
may be set to 7
.
from jax.
Ah, I was expecting that negatives indices would be always out-of-bounds and that out-of-bounds indices would not be counted against indices_are_sorted
and unique_indices
. It seems the way to do this, then, would be to use jnp.arange(a.size) + a.size
as out of bounds indices, then set indices_are_sorted=False unique_indices=True
?
from jax.
It seems the way to do this, then, would be to use
jnp.arange(a.size) + a.size
as out of bounds indices
Yes, I believe that would work correctly.
then set
indices_are_sorted=False unique_indices=True
?
I'm not sure whether out-of-bound indices are included or excluded from the compiler's specialized logic around unique or sorted indices. The safest thing would be to not set either of these flags to True, unless your indices are actually unique and sorted (including any out-of-bound indices).
from jax.
@ezhulenev do out-of-bounds indices need to be sorted and unique for XLA Scatter ops in FILL_OR_DROP
mode to set indices_are_sorted() && unique_indices()
?
On XLA:GPU indices_are_sorted
appears to be unused as far as I can tell: GitHub link. So the performance impact of having to set indices_are_sorted=False
is none.
... while unique_indices
allows scatters to use non-atomic store instructions: GitHub link. So, it's important that we guarantee this with the jnp.arange
trick.
from jax.
Related Issues (20)
- T5x+jax pretraining longt5xl-3B 4096 input oom HOT 3
- jax.xla_computation as_hlo_text() HOT 2
- Add support for boolean mask indices inside jit HOT 5
- No visible GPU HOT 4
- reshape operation with Pallas on TPU/Mosaic cause XlaRuntimeError: INTERNAL HOT 1
- `lax.cond` sometimes inserts a nonlinear `lax.stop_gradient` into its JVP rule. HOT 1
- jnp.zeros((9500000,3), dtype=jnp.float32) lowers into slow broadcast. HOT 6
- jaxlib wheel hardcoded to manylinux2014 platform HOT 3
- shard_map should support static_argnums HOT 4
- scan of device_put carry raises TypeError during the backward pass HOT 2
- Command to build jaxlib? HOT 1
- tree_util register_X functions remove type hints on decorated classes HOT 3
- Ergonomics: Move calls to partial inside decorators HOT 1
- jaxlib or libtpu not detected on TPU Pod HOT 7
- PositionalSharding for scalars fails HOT 2
- `Jax_numpy_rank_promotion` error setting not raising error HOT 4
- Array dispatching with __array_ufunc__ in JAX HOT 8
- Different roundings on GPU vs. CPU HOT 2
- Figure out + document how to use manual capture profiling with Kubernetes
- Is there difference in computing gradient between jax and torch HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jax.