Skip to content
This repository was archived by the owner on Sep 20, 2024. It is now read-only.

Commit 235fb76

Browse files
Jeremy E Kozdonlcw
authored andcommitted
Disable avx for Kron multiply
1 parent d4deef8 commit 235fb76

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/kroneckeroperators.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function (*)(K::Kron{Tuple{D}}, f::F) where {D <: AbstractMatrix,
2020
g = reshape(f, size(d, 2), :)
2121
r = similar(f, size(d, 1), size(g, 2))
2222

23-
@tullio r[i, e] = d[i, l] * g[l, e]
23+
@tullio avx=false r[i, e] = d[i, l] * g[l, e]
2424

2525
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
2626
end
@@ -32,7 +32,7 @@ function (*)(K::Kron{Tuple{E, D}}, f::F) where
3232
g = reshape(f, size(d, 2), size(e, 1), :)
3333
r = similar(f, size(d, 1), size(e, 1), size(g, 3))
3434

35-
@tullio r[i, j, k] = d[i, l] * g[l, j, k]
35+
@tullio avx=false r[i, j, k] = d[i, l] * g[l, j, k]
3636

3737
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
3838
end
@@ -44,7 +44,7 @@ function (*)(K::Kron{Tuple{D, E}}, f::F) where
4444
g = reshape(f, size(e, 1), size(d, 2), :)
4545
r = similar(f, size(e, 1), size(d, 1), size(g, 3))
4646

47-
@tullio r[i, j, k] = d[j, l] * g[i, l, k]
47+
@tullio avx=false r[i, j, k] = d[j, l] * g[i, l, k]
4848

4949
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
5050
end
@@ -56,7 +56,7 @@ function (*)(K::Kron{Tuple{B, A}}, f::F) where
5656
g = reshape(f, size(a, 2), size(b, 2), :)
5757
r = similar(f, size(a, 1), size(b, 1), size(g, 3))
5858

59-
@tullio r[i, j, k] = b[j, m] * a[i, l] * g[l, m, k]
59+
@tullio avx=false r[i, j, k] = b[j, m] * a[i, l] * g[l, m, k]
6060

6161
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
6262
end
@@ -68,7 +68,7 @@ function (*)(K::Kron{Tuple{E₃, E₂, D}}, f::F) where
6868
g = reshape(f, size(d, 2), size(e₂, 1), size(e₃, 1), :)
6969
r = similar(f, size(d, 1), size(e₂, 1), size(e₃, 1), size(g, 4))
7070

71-
@tullio r[i, j, k, e] = d[i, l] * g[l, j, k, e]
71+
@tullio avx=false r[i, j, k, e] = d[i, l] * g[l, j, k, e]
7272

7373
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
7474
end
@@ -80,7 +80,7 @@ function (*)(K::Kron{Tuple{E₃, D, E₁}}, f::F) where
8080
g = reshape(f, size(e₁, 1), size(d, 2), size(e₃, 1), :)
8181
r = similar(f, size(e₁, 1), size(d, 1), size(e₃, 1), size(g, 4))
8282

83-
@tullio r[i, j, k, e] = d[j, l] * g[i, l, k, e]
83+
@tullio avx=false r[i, j, k, e] = d[j, l] * g[i, l, k, e]
8484

8585
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
8686
end
@@ -92,7 +92,7 @@ function (*)(K::Kron{Tuple{D, E₂, E₁}}, f::F) where
9292
g = reshape(f, size(e₁, 1), size(e₂, 1), size(d, 2), :)
9393
r = similar(f, size(e₁, 1), size(e₂, 1), size(d, 1), size(g, 4))
9494

95-
@tullio r[i, j, k, e] = d[k, l] * g[i, j, l, e]
95+
@tullio avx=false r[i, j, k, e] = d[k, l] * g[i, j, l, e]
9696

9797
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
9898
end
@@ -105,7 +105,7 @@ function (*)(K::Kron{Tuple{C, B, A}}, f::F) where
105105
g = reshape(f, size(a, 2), size(b, 2), size(c, 2), :)
106106
r = similar(f, size(a, 1), size(b, 1), size(c, 1), size(g, 4))
107107

108-
@tullio r[i, j, k, e] = c[k, n] * b[j, m] * a[i, l] * g[l, m, n, e]
108+
@tullio avx=false r[i, j, k, e] = c[k, n] * b[j, m] * a[i, l] * g[l, m, n, e]
109109

110110
return F <: AbstractVector ? vec(r) : reshape(r, size(K, 1), size(f, 2))
111111
end

test/kroneckeroperators.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
@test Array(Bennu.Kron(args) * e) Array(K * e)
2626
@test Array(Bennu.Kron(args) * d) Array(K * d)
2727

28+
g = adapt(A, rand(T, 4, size(K, 2), 6))
29+
gv1 = @view g[1, :, :]
30+
gv2 = @view g[1, :, 1]
31+
@test Array(Bennu.Kron(args) * gv1) Array(K * gv1)
32+
@test Array(Bennu.Kron(args) * gv2) Array(K * gv2)
33+
2834
if isbits(T)
2935
f = rand(rng, T, size(K, 2), 3, 2)
3036
f = adapt(A, reinterpret(reshape, SVector{2, T},

0 commit comments

Comments
 (0)