Comments (5)
Thanks for catching that. I've just tagged a new release. And should add tests for Strided at some point.
Note that StridedView
is Strided's array type, which is a view of A.parent
. It does appear to be correctly copied here when using |=
, in the sense of not being a view of the input, but I agree that it would make sense to produce an ordinary Array
instead. Will take a look when I have a minute.
julia> M = rand(2,2)
2×2 Array{Float64,2}:
0.905376 0.771094
0.731114 0.439474
julia> @cast MT[i,j] := M[j,i] strided
2×2 StridedView{Float64,2,Array{Float64,1},typeof(identity)}:
0.905376 0.731114
0.771094 0.439474
julia> MT[1,2] = 33 # this does change M
33
julia> @cast MS[i,j] |= M[j,i] strided
2×2 StridedView{Float64,2,Array{Float64,1},typeof(identity)}:
0.905376 33.0
0.771094 0.439474
julia> MS[2,1] = 44 # this does not change M
44
julia> M
2×2 Array{Float64,2}:
0.905376 0.771094
33.0 0.439474
julia> reshape(MT.parent, 2,2)
2×2 Array{Float64,2}:
0.905376 0.771094
33.0 0.439474
julia> reshape(MS.parent, 2,2) # has been transposed
2×2 Array{Float64,2}:
0.905376 33.0
44.0 0.439474
from tensorcast.jl.
One other thing: I have a package that does using Strided
at the beginning and then later does some reductions with the strided
option. Everything seems to work fine except that when I load the package I get
┌ Error: can't use option strided without using Strided
│ input = "@reduce h[(σˡ, aˡ⁻¹, aˡ), (σˡ′, aˡ⁻¹′, aˡ′)] |= sum(bˡ⁻¹, bˡ) begin\n #= /Users/mason/.julia/dev/MatrixProductStates/src/groundstate.jl:33 =#\n L_ex[bˡ⁻¹, aˡ⁻¹, aˡ⁻¹′] * W[bˡ⁻¹, bˡ, σˡ, σˡ′] * R_ex[bˡ, aˡ, aˡ′]\nend strided"
└ @ MatrixProductStates ~/.julia/dev/MatrixProductStates/src/groundstate.jl:32
┌ Error: can't use option strided without using Strided
│ input = "@reduce h[(σˡ, aˡ⁻¹, aˡ), (σˡ′, aˡ⁻¹′, aˡ′)] |= sum(bˡ⁻¹, bˡ) begin\n #= /Users/mason/.julia/dev/MatrixProductStates/src/groundstate.jl:73 =#\n L_ex[bˡ⁻¹, aˡ⁻¹, aˡ⁻¹′] * W[bˡ⁻¹, bˡ, σˡ, σˡ′] * R_ex[bˡ, aˡ, aˡ′]\nend strided"
but things still seem to run fine. Any idea what causes this?
I can't seem to cook up a MWE, but the offending package is here: https://github.com/MasonProtter/MatrixProductStates.jl
from tensorcast.jl.
This is from some helpful warnings I added based on what packages are loaded, but perhaps I did it wrong or perhaps it's tripping over some issue with conditional loading... and perhaps it's not necessary anyway? For now I've commented this out on master.
from tensorcast.jl.
In the current master I changed how packagecheck
works, would be interested to hear if this re-introduces these warnings for you. Locally it seems fine.
from tensorcast.jl.
Added to tests in 052998e.
from tensorcast.jl.
Related Issues (20)
- World Age Issues with TensorCast calls from pyJulia HOT 3
- Exploit `einops` for docs / tests / advertising
- Slicing an array produces `Vector{<:SubArray}`, hence allocates HOT 4
- Indices which run over a shorter range than `axes(A,d)` HOT 9
- Extra singleton dimension appears during casting HOT 2
- cannot @cast on views of other @cast results HOT 3
- @cast for remaining n-1 dimensions, e.g, add noise to a tensor of column vectors HOT 1
- @cast works for hcat but not for [ ] HOT 1
- @cast on functions with tuples as lvalues HOT 3
- Concatenation / forced indexing HOT 1
- @cast into an SMatrix HOT 3
- Interpolation & scope HOT 1
- Hope to close the both side indices check HOT 2
- Performance of nested reductions HOT 1
- Expr -> Symbol MethodError when combining mapslices and reshapes HOT 1
- Support for AxisKeys
- array arguments in @cast indexing HOT 1
- Error in summation within @reduce HOT 1
- Macro hygeine of `TensorCast` symbol HOT 1
- Eror when calcualte gradients with zygote HOT 5
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 tensorcast.jl.