@@ -11,7 +11,7 @@ using Tullio, Test, LinearAlgebra
11
11
@test A == [i^ 2 for i in 1 : 10 ]
12
12
13
13
# diagonals
14
- @tullio D[i,i] := trunc (Int, sqrt (A[i]))
14
+ @tullio D[i,i] := trunc (Int, sqrt (A[i])) avx = false # MethodError: no method matching trunc(::Type{Int64}, ::VectorizationBase.Vec{4,Float64})
15
15
@test D == Diagonal (sqrt .(A))
16
16
17
17
# arrays of arrays
@@ -124,7 +124,7 @@ using Tullio, Test, LinearAlgebra
124
124
@test H[1 ,:] == M[2 ,:] # but H[3,:] gets written into twice.
125
125
126
126
J′ = [1 ,2 ,10 ]
127
- @tullio H′[J′[i' ],k] := A[k]
127
+ @tullio H′[J′[i' ],k] := A[k] avx = false # StackOverflowError
128
128
@test size (H′) == (10 , length (A))
129
129
@test H′[2 ,:] == A
130
130
@test H′[3 ,4 ] == 0 # zeroed before being written into
219
219
# scatter operation
220
220
D = similar (A, 10 , 10 ) .= 999
221
221
inds = [2 ,3 ,5 ,2 ]
222
- @tullio D[inds[i],j] = A[j]
222
+ @tullio D[inds[i],j] = A[j] avx = false # StackOverflowError
223
223
@test D[2 ,:] == A
224
224
@test D[4 ,4 ] != 0 # not zeroed before writing.
225
225
444
444
# basics
445
445
@test [prod (A)] == @tullio (* ) P[_] := float (A[i])
446
446
@test maximum (A) == @tullio (max) m := float (A[i])
447
- @test minimum (A) == @tullio (min) m := float (A[i]) # fails with @avx
447
+ @test minimum (A) == @tullio (min) m := float (A[i])
448
448
449
449
@test true == @tullio (& ) p := A[i] > 0
450
450
@test true === @tullio (& ) p := A[i] > 0
@@ -505,11 +505,11 @@ end
505
505
506
506
# promotion of init & += cases:
507
507
B = rand (10 )
508
- @test sum (B.^ 2 )+ 2 ≈ @tullio s2 := B[i]^ 2 init= 2 threads= false
508
+ @test sum (B.^ 2 )+ 2 ≈ @tullio s2 := B[i]^ 2 init= 2 threads= false avx = false # InexactError: Int64 on LV 0.8
509
509
s3 = 3
510
510
@test sum (B.^ 2 )+ 3 ≈ @tullio s3 += B[i]^ 2
511
511
s4 = 4im
512
- @test sum (B.^ 2 )+ 4im ≈ @tullio s4 += B[i]^ 2
512
+ @test sum (B.^ 2 )+ 4im ≈ @tullio s4 += B[i]^ 2 avx = false # TypeError: in AbstractSIMD, in T, expected T<:(Union{Bool, Float32
513
513
514
514
# no reduction means no redfun, and no init:
515
515
@test_throws LoadError @eval @tullio (max) A2[i] := A[i]^ 2
@@ -566,18 +566,18 @@ end
566
566
# reading
567
567
N = NamedDimsArray (rand (Int8,3 ,10 ), (:r , :c ))
568
568
569
- @tullio A[i,j] := N[i, j] + 100 * (1 : 10 )[j]
569
+ @tullio A[i,j] := N[i, j] + 100 * (1 : 10 )[j] avx = false # conversion to pointer not defined for NamedDimsArray
570
570
@test A == N .+ 100 .* (1 : 10 )'
571
571
572
- @tullio B[i] := N[r= i, c= 1 ]
572
+ @tullio B[i] := N[r= i, c= 1 ] avx = false
573
573
@test B == N[:,1 ]
574
574
575
- @tullio C[j,i] := N[c= j, r= i] + 100 * (1 : 10 )[j]
575
+ @tullio C[j,i] := N[c= j, r= i] + 100 * (1 : 10 )[j] avx = false
576
576
@test A == C'
577
577
@test dimnames (C) == (:_ , :_ ) # similar(parent(A)) avoids a bug
578
578
579
579
# writing
580
- @tullio M[row= i, col= j, i= 1 ] := (1 : 3 )[i] // (1 : 7 )[j]
580
+ @tullio M[row= i, col= j, i= 1 ] := (1 : 3 )[i] // (1 : 7 )[j] avx = false
581
581
@test dimnames (M) == (:row , :col , :i )
582
582
583
583
end
593
593
@test_throws LoadError @macroexpand1 @tullio A[i] := (1 : 10 )[i]^ 2 threads= :maybe
594
594
595
595
# keyword verbose accepts values [true, false, 2, 3]
596
- @tullio A[i] := (1 : 10 )[i]^ 2 verbose= 1
596
+ @tullio A[i] := (1 : 10 )[i]^ 2 verbose= 1 avx = false # @error: rejected by LoopVectorization's check_args
597
597
@tullio A[i] := (1 : 10 )[i]^ 2 verbose= false
598
598
@test_throws LoadError @macroexpand1 @tullio A[i] := (1 : 10 )[i]^ 2 verbose= 4
599
599
632
632
# https://github.com/mcabbott/Tullio.jl/issues/36
633
633
# final type real, intermediate complex... not fixed yet!
634
634
xs = randn (1000 )
635
- @test_throws InexactError @tullio z[i] := exp (im * xs[i] - xs[j]) |> abs2
635
+ @test_throws InexactError @tullio z[i] := exp (im * xs[i] - xs[j]) |> abs2 avx = false # TypeError with LV
636
636
637
637
# https://github.com/mcabbott/Tullio.jl/issues/43
638
638
P = rand (2 ,2 ,3 ); Diff = rand (3 ,3 ); n= 4
664
664
@tullio x[i] := s[i]
665
665
end
666
666
@test_broken [3 ,7 ] == let s = [1 2 ;3 4 ], zero= one # left because of #50
667
- @tullio x[i] := s[i,j]
667
+ @tullio x[i] := s[i,j] avx = false # Unexpected Pass with LV
668
668
end
669
669
670
670
end
0 commit comments