-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tests hang possibly due to type inference #95
Comments
Can you go the full status and your versioninfo?
Cheers,
Mikael
On Dec 5, 2019, at 2:24 AM, Ashton Bradley <[email protected]> wrote:
Tests have suddenly become extremely slow. I can't tell if they fail because they never seem to finish:
[Screen Shot 2019-12-05 at 3 22 45 PM]<https://user-images.githubusercontent.com/24194258/70198251-3a005680-1773-11ea-898a-b48cdd4a977c.png>
not sure how long this goes on for, but at least half an hour I think...
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub<#95?email_source=notifications&email_token=AB6MDJPWXPQNOLLWBP2D7E3QXBQ6FA5CNFSM4JVS657KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4H6GGRKQ>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AB6MDJPRGKUKFPZVRM7CIJLQXBQ6FANCNFSM4JVS657A>.
|
|
Nothing seems strange with that to me... If you run the libfasttransformstests.jl file line by line (section by section) can you narrow it down? |
As a backup, you can set the ENV["FT_BUILD_FROM_SOURCE"]=“true”, but this has to be set before every new ‘using’ |
do you mean before I run line by line? |
ah, I see |
Ok, line by line everything runs fast and passes, provided I unroll the second type In detail, this runs: ENV["FT_BUILD_FROM_SOURCE"]="true"
using FastTransforms, LinearAlgebra, Test
FastTransforms.set_num_threads(ceil(Int, Base.Sys.CPU_THREADS/2))
n = 64
α, β, γ, δ, λ, μ = 0.1, 0.2, 0.3, 0.4, 0.5, 0.6
#---
for T in (Float32, Float64, Complex{Float32}, Complex{Float64})
x = T(1) ./ (1:n)
Id = Matrix{T}(I, n, n)
for (p1, p2) in (
(plan_leg2cheb(Id), plan_cheb2leg(Id)),
(plan_ultra2ultra(Id, λ, μ), plan_ultra2ultra(Id, μ, λ)),
(plan_jac2jac(Id, α, β, γ, δ), plan_jac2jac(Id, γ, δ, α, β)),
(plan_lag2lag(Id, α, β), plan_lag2lag(Id, β, α)),
(plan_jac2ultra(Id, α, β, λ), plan_ultra2jac(Id, λ, α, β)),
(plan_jac2cheb(Id, α, β), plan_cheb2jac(Id, α, β)),
(plan_ultra2cheb(Id, λ), plan_cheb2ultra(Id, λ)),
)
y = p1 * x
z = p2 * y
@test z ≈ x
y = p1 * x
z = p1'y
y = transpose(p1) * z
z = transpose(p1) \ y
y = p1' \ z
z = p1 \ y
@test z ≈ x
y = p2 * x
z = p2'y
y = transpose(p2) * z
z = transpose(p2) \ y
y = p2' \ z
z = p2 \ y
@test z ≈ x
P = p1 * Id
Q = p2 * P
@test Q ≈ Id
P = p1 * Id
Q = p1'P
P = transpose(p1) * Q
Q = transpose(p1) \ P
P = p1' \ Q
Q = p1 \ P
@test Q ≈ Id
P = p2 * Id
Q = p2'P
P = transpose(p2) * Q
Q = transpose(p2) \ P
P = p2' \ Q
Q = p2 \ P
@test Q ≈ Id
end
end
#---
for T in (BigFloat, Complex{BigFloat})
x = T(1) ./ (1:n)
Id = Matrix{T}(I, n, n)
for (p1, p2) in (
(plan_leg2cheb(Id), plan_cheb2leg(Id)),
(plan_ultra2ultra(Id, λ, μ), plan_ultra2ultra(Id, μ, λ)),
(plan_jac2jac(Id, α, β, γ, δ), plan_jac2jac(Id, γ, δ, α, β)),
(plan_lag2lag(Id, α, β), plan_lag2lag(Id, β, α)),
(plan_jac2ultra(Id, α, β, λ), plan_ultra2jac(Id, λ, α, β)),
(plan_jac2cheb(Id, α, β), plan_cheb2jac(Id, α, β)),
(plan_ultra2cheb(Id, λ), plan_cheb2ultra(Id, λ)),
)
y = p1 * x
z = p2 * y
@test z ≈ x
y = p1 * x
z = p1'y
y = transpose(p1) * z
z = transpose(p1) \ y
y = p1' \ z
z = p1 \ y
@test z ≈ x
y = p2 * x
z = p2'y
y = transpose(p2) * z
z = transpose(p2) \ y
y = p2' \ z
z = p2 \ y
@test z ≈ x
P = p1 * Id
Q = p2 * P
@test_skip Q ≈ Id
P = p1 * Id
Q = p1'P
P = transpose(p1) * Q
Q = transpose(p1) \ P
P = p1' \ Q
Q = p1 \ P
@test_skip Q ≈ Id
P = p2 * Id
Q = p2'P
P = transpose(p2) * Q
Q = transpose(p2) \ P
P = p2' \ Q
Q = p2 \ P
@test_skip Q ≈ Id
end
end
#---
# for T in (Float64, Complex{Float64})
T = Float64
A = T <: Real ? sphones(T, n, 2n - 1) :
sphones(T, n, 2n - 1) + im * sphones(T, n, 2n - 1)
p = plan_sph2fourier(A)
ps = plan_sph_synthesis(A)
pa = plan_sph_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
A = T <: Real ? sphvones(T, n, 2n - 1) :
sphvones(T, n, 2n - 1) + im * sphvones(T, n, 2n - 1)
p = plan_sphv2fourier(A)
ps = plan_sphv_synthesis(A)
pa = plan_sphv_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
A = T <: Real ? diskones(T, n, 4n - 3) :
diskones(T, n, 4n - 3) + im * diskones(T, n, 4n - 3)
p = plan_disk2cxf(A)
ps = plan_disk_synthesis(A)
pa = plan_disk_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
A = T <: Real ? triones(T, n, n) : triones(T, n, n) + im * triones(T, n, n)
p = plan_tri2cheb(A, α, β, γ)
ps = plan_tri_synthesis(A)
pa = plan_tri_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
A = T <: Real ? tetones(T, n, n, n) :
tetones(T, n, n, n) + im * tetones(T, n, n, n)
p = plan_tet2cheb(A, α, β, γ, δ)
ps = plan_tet_synthesis(A)
pa = plan_tet_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
# end
#---
T = Complex{Float64}
A = T <: Real ? sphones(T, n, 2n - 1) :
sphones(T, n, 2n - 1) + im * sphones(T, n, 2n - 1)
p = plan_sph2fourier(A)
ps = plan_sph_synthesis(A)
pa = plan_sph_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
#---
A = T <: Real ? sphvones(T, n, 2n - 1) :
sphvones(T, n, 2n - 1) + im * sphvones(T, n, 2n - 1)
p = plan_sphv2fourier(A)
ps = plan_sphv_synthesis(A)
pa = plan_sphv_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
#---
A = T <: Real ? diskones(T, n, 4n - 3) :
diskones(T, n, 4n - 3) + im * diskones(T, n, 4n - 3)
p = plan_disk2cxf(A)
ps = plan_disk_synthesis(A)
pa = plan_disk_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
#---
A = T <: Real ? triones(T, n, n) : triones(T, n, n) + im * triones(T, n, n)
p = plan_tri2cheb(A, α, β, γ)
ps = plan_tri_synthesis(A)
pa = plan_tri_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
#---
A = T <: Real ? tetones(T, n, n, n) :
tetones(T, n, n, n) + im * tetones(T, n, n, n)
p = plan_tet2cheb(A, α, β, γ, δ)
ps = plan_tet_synthesis(A)
pa = plan_tet_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
# end but if I leave that last loop, then it freezes |
Great, thanks for reporting this. I don’t know what’s going on, but it seems that all the ccall’s are ok (that would’ve been a much bigger problem). Perhaps it’s some kind of type inference bug in Julia itself? Does it work when you use the Artifact, I.e. the default build? To re-trigger this, you’ll have to trick Julia into recompiling the package (and ensure that ENV[“FT_BUILD_FROM_SOURCE”]=“false” or is not set). |
maybe aliasing? There is something strangely non-reproducible going on though. Each time starting fresh julia session. This seems to be an MWE on the final block: Works: ENV["FT_BUILD_FROM_SOURCE"]="true"
using FastTransforms, LinearAlgebra, Test
FastTransforms.set_num_threads(ceil(Int, Base.Sys.CPU_THREADS/2))
n = 64
α, β, γ, δ, λ, μ = 0.1, 0.2, 0.3, 0.4, 0.5, 0.6
#---
for T in (Float64, Complex{Float64})
A = T <: Real ? sphones(T, n, 2n - 1) :
sphones(T, n, 2n - 1) + im * sphones(T, n, 2n - 1)
p = plan_sph2fourier(A)
ps = plan_sph_synthesis(A)
pa = plan_sph_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
# A = T <: Real ? sphvones(T, n, 2n - 1) :
# sphvones(T, n, 2n - 1) + im * sphvones(T, n, 2n - 1)
# p = plan_sphv2fourier(A)
# ps = plan_sphv_synthesis(A)
# pa = plan_sphv_analysis(A)
# B = copy(A)
# C = ps * (p * A)
# A = p \ (pa * C)
# @test A ≈ B
# A = T <: Real ? diskones(T, n, 4n - 3) :
# diskones(T, n, 4n - 3) + im * diskones(T, n, 4n - 3)
# p = plan_disk2cxf(A)
# ps = plan_disk_synthesis(A)
# pa = plan_disk_analysis(A)
# B = copy(A)
# C = ps * (p * A)
# A = p \ (pa * C)
# @test A ≈ B
# A = T <: Real ? triones(T, n, n) : triones(T, n, n) + im * triones(T, n, n)
# p = plan_tri2cheb(A, α, β, γ)
# ps = plan_tri_synthesis(A)
# pa = plan_tri_analysis(A)
# B = copy(A)
# C = ps * (p * A)
# A = p \ (pa * C)
# @test A ≈ B
# A = T <: Real ? tetones(T, n, n, n) :
# tetones(T, n, n, n) + im * tetones(T, n, n, n)
# p = plan_tet2cheb(A, α, β, γ, δ)
# ps = plan_tet_synthesis(A)
# pa = plan_tet_analysis(A)
# B = copy(A)
# C = ps * (p * A)
# A = p \ (pa * C)
# @test A ≈ B
end Hangs: ENV["FT_BUILD_FROM_SOURCE"]="true"
using FastTransforms, LinearAlgebra, Test
FastTransforms.set_num_threads(ceil(Int, Base.Sys.CPU_THREADS/2))
n = 64
α, β, γ, δ, λ, μ = 0.1, 0.2, 0.3, 0.4, 0.5, 0.6
#---
for T in (Float64, Complex{Float64})
A = T <: Real ? sphones(T, n, 2n - 1) :
sphones(T, n, 2n - 1) + im * sphones(T, n, 2n - 1)
p = plan_sph2fourier(A)
ps = plan_sph_synthesis(A)
pa = plan_sph_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
A = T <: Real ? sphvones(T, n, 2n - 1) :
sphvones(T, n, 2n - 1) + im * sphvones(T, n, 2n - 1)
p = plan_sphv2fourier(A)
ps = plan_sphv_synthesis(A)
pa = plan_sphv_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
A = T <: Real ? diskones(T, n, 4n - 3) :
diskones(T, n, 4n - 3) + im * diskones(T, n, 4n - 3)
p = plan_disk2cxf(A)
ps = plan_disk_synthesis(A)
pa = plan_disk_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
A = T <: Real ? triones(T, n, n) : triones(T, n, n) + im * triones(T, n, n)
p = plan_tri2cheb(A, α, β, γ)
ps = plan_tri_synthesis(A)
pa = plan_tri_analysis(A)
B = copy(A)
C = ps * (p * A)
A = p \ (pa * C)
@test A ≈ B
# A = T <: Real ? tetones(T, n, n, n) :
# tetones(T, n, n, n) + im * tetones(T, n, n, n)
# p = plan_tet2cheb(A, α, β, γ, δ)
# ps = plan_tet_synthesis(A)
# pa = plan_tet_analysis(A)
# B = copy(A)
# C = ps * (p * A)
# A = p \ (pa * C)
# @test A ≈ B
end Strangely, precisely how many of the intermediate blocks between 1 and 5 have to be un-commented to cause a freeze seems to vary from run to run. It could be as little as 1 and as many as 3 |
ah, it seems to depend on when saving happens in Juno... maybe... I don't know. I feel like a ghost has entered the machine |
Does this version of the test set work for you? If so, I'll push to master. @testset "libfasttransforms" begin
n = 64
α, β, γ, δ, λ, μ = 0.1, 0.2, 0.3, 0.4, 0.5, 0.6
function test_1d_plans(p1, p2, x; skip::Bool=false)
y = p1*x
z = p2*y
@test z ≈ x
y = p1*x
z = p1'y
y = transpose(p1)*z
z = transpose(p1)\y
y = p1'\z
z = p1\y
@test z ≈ x
y = p2*x
z = p2'y
y = transpose(p2)*z
z = transpose(p2)\y
y = p2'\z
z = p2\y
@test z ≈ x
P = p1*I
Q = p2*P
skip ? (@test_skip Q ≈ I) : (@test Q ≈ I)
P = p1*I
Q = p1'P
P = transpose(p1)*Q
Q = transpose(p1)\P
P = p1'\Q
Q = p1\P
skip ? (@test_skip Q ≈ I) : (@test Q ≈ I)
P = p2*I
Q = p2'P
P = transpose(p2)*Q
Q = transpose(p2)\P
P = p2'\Q
Q = p2\P
skip ? (@test_skip Q ≈ I) : (@test Q ≈ I)
end
for T in (Float32, Float64, Complex{Float32}, Complex{Float64})
x = T(1)./(1:n)
Id = Matrix{T}(I, n, n)
for (p1, p2) in ((plan_leg2cheb(Id), plan_cheb2leg(Id)),
(plan_ultra2ultra(Id, λ, μ), plan_ultra2ultra(Id, μ, λ)),
(plan_jac2jac(Id, α, β, γ, δ), plan_jac2jac(Id, γ, δ, α, β)),
(plan_lag2lag(Id, α, β), plan_lag2lag(Id, β, α)),
(plan_jac2ultra(Id, α, β, λ), plan_ultra2jac(Id, λ, α, β)),
(plan_jac2cheb(Id, α, β), plan_cheb2jac(Id, α, β)),
(plan_ultra2cheb(Id, λ), plan_cheb2ultra(Id, λ)))
test_1d_plans(p1, p2, x)
end
end
for T in (BigFloat, Complex{BigFloat})
x = T(1)./(1:n)
Id = Matrix{T}(I, n, n)
for (p1, p2) in ((plan_leg2cheb(Id), plan_cheb2leg(Id)),
(plan_ultra2ultra(Id, λ, μ), plan_ultra2ultra(Id, μ, λ)),
(plan_jac2jac(Id, α, β, γ, δ), plan_jac2jac(Id, γ, δ, α, β)),
(plan_lag2lag(Id, α, β), plan_lag2lag(Id, β, α)),
(plan_jac2ultra(Id, α, β, λ), plan_ultra2jac(Id, λ, α, β)),
(plan_jac2cheb(Id, α, β), plan_cheb2jac(Id, α, β)),
(plan_ultra2cheb(Id, λ), plan_cheb2ultra(Id, λ)))
test_1d_plans(p1, p2, x; skip=true)
end
end
function test_nd_plans(p, ps, pa, A)
B = copy(A)
C = ps*(p*A)
A = p\(pa*C)
@test A ≈ B
end
for A in (sphones(Float64, n, 2n-1), sphones(Float64, n, 2n-1) + im*sphones(Float64, n, 2n-1))
p = plan_sph2fourier(A)
ps = plan_sph_synthesis(A)
pa = plan_sph_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (sphvones(Float64, n, 2n-1), sphvones(Float64, n, 2n-1) + im*sphvones(Float64, n, 2n-1))
p = plan_sphv2fourier(A)
ps = plan_sphv_synthesis(A)
pa = plan_sphv_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (diskones(Float64, n, 4n-3), diskones(Float64, n, 4n-3) + im*diskones(Float64, n, 4n-3))
p = plan_disk2cxf(A)
ps = plan_disk_synthesis(A)
pa = plan_disk_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (triones(Float64, n, n), triones(Float64, n, n) + im*triones(Float64, n, n))
p = plan_tri2cheb(A, α, β, γ)
ps = plan_tri_synthesis(A)
pa = plan_tri_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (tetones(Float64, n, n, n), tetones(Float64, n, n, n) + im*tetones(Float64, n, n, n))
p = plan_tet2cheb(A, α, β, γ, δ)
ps = plan_tet_synthesis(A)
pa = plan_tet_analysis(A)
test_nd_plans(p, ps, pa, A)
end
end |
Test Summary: | Pass Total
Special functions | 19 19
Test Summary: | Pass Total
Chebyshev transform | 250 250
Test Summary: | Pass Total
Fejér and Clenshaw--Curtis quadrature | 9 9
libfasttransforms: Error During Test at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/libfasttransformstests.jl:5
Got exception outside of a @test
MethodError: no method matching *(::FastTransforms.FTPlan{Float32,1,0}, ::UniformScaling{Bool})
Closest candidates are:
*(::Any, ::Any, !Matched::Any, !Matched::Any...) at operators.jl:529
*(!Matched::BitArray{2}, ::UniformScaling) at /Users/sabae/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.3/LinearAlgebra/src/uniformscaling.jl:195
*(!Matched::UniformScaling, ::UniformScaling) at /Users/sabae/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.3/LinearAlgebra/src/uniformscaling.jl:194
...
Stacktrace:
[1] (::var"#test_1d_plans#21#23")(::Bool, ::var"#test_1d_plans#22"{var"#test_1d_plans#21#23"}, ::FastTransforms.FTPlan{Float32,1,0}, ::FastTransforms.FTPlan{Float32,1,1}, ::Array{Float32,1}) at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/libfasttransformstests.jl:26
[2] (::var"#test_1d_plans#22"{var"#test_1d_plans#21#23"})(::FastTransforms.FTPlan{Float32,1,0}, ::FastTransforms.FTPlan{Float32,1,1}, ::Array{Float32,1}) at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/libfasttransformstests.jl:9
[3] top-level scope at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/libfasttransformstests.jl:56
[4] top-level scope at /Users/sabae/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.3/Test/src/Test.jl:1107
[5] top-level scope at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/libfasttransformstests.jl:6
[6] include at ./boot.jl:328 [inlined]
[7] include_relative(::Module, ::String) at ./loading.jl:1105
[8] include(::Module, ::String) at ./Base.jl:31
[9] include(::String) at ./client.jl:424
[10] top-level scope at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/runtests.jl:10
[11] include at ./boot.jl:328 [inlined]
[12] include_relative(::Module, ::String) at ./loading.jl:1105
[13] include(::Module, ::String) at ./Base.jl:31
[14] include(::String) at ./client.jl:424
[15] top-level scope at none:6
[16] eval(::Module, ::Any) at ./boot.jl:330
[17] exec_options(::Base.JLOptions) at ./client.jl:263
[18] _start() at ./client.jl:460
Test Summary: | Pass Error Total
libfasttransforms | 3 1 4
ERROR: LoadError: LoadError: Some tests did not pass: 3 passed, 0 failed, 1 errored, 0 broken.
in expression starting at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/libfasttransformstests.jl:5
in expression starting at /Users/abradley/.julia/packages/FastTransforms/OShrg/test/runtests.jl:9
ERROR: Package FastTransforms errored during testing |
Ah, sorry, I recently added some better syntax to handle Try this instead @testset "libfasttransforms" begin
n = 64
α, β, γ, δ, λ, μ = 0.1, 0.2, 0.3, 0.4, 0.5, 0.6
function test_1d_plans(p1, p2, x, Id; skip::Bool=false)
y = p1*x
z = p2*y
@test z ≈ x
y = p1*x
z = p1'y
y = transpose(p1)*z
z = transpose(p1)\y
y = p1'\z
z = p1\y
@test z ≈ x
y = p2*x
z = p2'y
y = transpose(p2)*z
z = transpose(p2)\y
y = p2'\z
z = p2\y
@test z ≈ x
P = p1*Id
Q = p2*P
skip ? (@test_skip Q ≈ Id) : (@test Q ≈ Id)
P = p1*Id
Q = p1'P
P = transpose(p1)*Q
Q = transpose(p1)\P
P = p1'\Q
Q = p1\P
skip ? (@test_skip Q ≈ Id) : (@test Q ≈ Id)
P = p2*Id
Q = p2'P
P = transpose(p2)*Q
Q = transpose(p2)\P
P = p2'\Q
Q = p2\P
skip ? (@test_skip Q ≈ Id) : (@test Q ≈ Id)
end
for T in (Float32, Float64, Complex{Float32}, Complex{Float64})
x = T(1)./(1:n)
Id = Matrix{T}(I, n, n)
for (p1, p2) in ((plan_leg2cheb(Id), plan_cheb2leg(Id)),
(plan_ultra2ultra(Id, λ, μ), plan_ultra2ultra(Id, μ, λ)),
(plan_jac2jac(Id, α, β, γ, δ), plan_jac2jac(Id, γ, δ, α, β)),
(plan_lag2lag(Id, α, β), plan_lag2lag(Id, β, α)),
(plan_jac2ultra(Id, α, β, λ), plan_ultra2jac(Id, λ, α, β)),
(plan_jac2cheb(Id, α, β), plan_cheb2jac(Id, α, β)),
(plan_ultra2cheb(Id, λ), plan_cheb2ultra(Id, λ)))
test_1d_plans(p1, p2, x, Id)
end
end
for T in (BigFloat, Complex{BigFloat})
x = T(1)./(1:n)
Id = Matrix{T}(I, n, n)
for (p1, p2) in ((plan_leg2cheb(Id), plan_cheb2leg(Id)),
(plan_ultra2ultra(Id, λ, μ), plan_ultra2ultra(Id, μ, λ)),
(plan_jac2jac(Id, α, β, γ, δ), plan_jac2jac(Id, γ, δ, α, β)),
(plan_lag2lag(Id, α, β), plan_lag2lag(Id, β, α)),
(plan_jac2ultra(Id, α, β, λ), plan_ultra2jac(Id, λ, α, β)),
(plan_jac2cheb(Id, α, β), plan_cheb2jac(Id, α, β)),
(plan_ultra2cheb(Id, λ), plan_cheb2ultra(Id, λ)))
test_1d_plans(p1, p2, x, Id; skip=true)
end
end
function test_nd_plans(p, ps, pa, A)
B = copy(A)
C = ps*(p*A)
A = p\(pa*C)
@test A ≈ B
end
for A in (sphones(Float64, n, 2n-1), sphones(Float64, n, 2n-1) + im*sphones(Float64, n, 2n-1))
p = plan_sph2fourier(A)
ps = plan_sph_synthesis(A)
pa = plan_sph_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (sphvones(Float64, n, 2n-1), sphvones(Float64, n, 2n-1) + im*sphvones(Float64, n, 2n-1))
p = plan_sphv2fourier(A)
ps = plan_sphv_synthesis(A)
pa = plan_sphv_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (diskones(Float64, n, 4n-3), diskones(Float64, n, 4n-3) + im*diskones(Float64, n, 4n-3))
p = plan_disk2cxf(A)
ps = plan_disk_synthesis(A)
pa = plan_disk_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (triones(Float64, n, n), triones(Float64, n, n) + im*triones(Float64, n, n))
p = plan_tri2cheb(A, α, β, γ)
ps = plan_tri_synthesis(A)
pa = plan_tri_analysis(A)
test_nd_plans(p, ps, pa, A)
end
for A in (tetones(Float64, n, n, n), tetones(Float64, n, n, n) + im*tetones(Float64, n, n, n))
p = plan_tet2cheb(A, α, β, γ, δ)
ps = plan_tet_synthesis(A)
pa = plan_tet_analysis(A)
test_nd_plans(p, ps, pa, A)
end
end |
same problem, frozen at the same place: Test Summary: | Pass Total
Special functions | 19 19
Test Summary: | Pass Total
Chebyshev transform | 250 250
Test Summary: | Pass Total
Fejér and Clenshaw--Curtis quadrature | 9 9 |
Just to isolate whether it's to do with the typing of the arrays ( |
that doesn't fix it |
That’s good.
So what if all the ‘for A in ...’ loops are unrolled?
Cheers,
Mikael
On Dec 5, 2019, at 11:19 PM, Ashton Bradley <[email protected]> wrote:
that doesn't fix it
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#95?email_source=notifications&email_token=AB6MDJMDS4YFHDBSUST22CDQXGD6RA5CNFSM4JVS657KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGCPODI#issuecomment-562362125>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AB6MDJLEZXE7GTMI536ENP3QXGD6RANCNFSM4JVS657A>.
|
that worked in the original form |
just checking this... it doesn't seem to be fixed @MikaelSlevinsky |
Any chance v0.9.2 fixes this? (Probably not, but thought I’d ask just in case) |
doesn't seem to have fixed it |
Tests have suddenly become extremely slow. I can't tell if they fail because they never seem to finish:
not sure how long this goes on for, but at least half an hour I think...
The text was updated successfully, but these errors were encountered: