FastSphericalHarmonics -- signal(4) Illegal instructions

Hello,

I am trying to reproduce the code in the “Example 2: visualize some modes” of the FastSphericalHarmonics.jl package.

Here is the code after I add FastSphericalHarmonics and CairoMakie:

using FastSphericalHarmonics, CairoMakie
lmax = 40;
Θ, Φ = sph_points(lmax+1);
ticks = (xticks=MultiplesTicks(4, π, "π"), yticks=MultiplesTicks(4, π, "π"));
for l in 4:4, m in 0:1
           C = zeros(lmax+1, 2lmax+1)
           C[sph_mode(l,m)] = 1
           F = sph_evaluate(C)
           
           scene, layout = layoutscene(; resolution=(400, 200))
           axis = layout[1, 1] = Axis(scene; xticks=MultiplesTicks(4, π, "π"), yticks=MultiplesTicks(4, π, "π"))
           heatmap!(axis, Φ, Θ, F')
           scale!(scene, 1, 1)
           save("mode$l$m.png", scene)
end

And here is the message I obtain when I am ejected from my REPL session:

Invalid instruction at 0x7f2bdbe43263: 0xc5, 0xf1, 0x57, 0xc9, 0xc5, 0xf9, 0x57, 0xc0, 0x0f, 0xaf, 0xd3, 0xc5, 0xd9, 0x57, 0xe4
signal (4): Illegal instruction
in expression starting at REPL[6]:1
ft_plan_rotsphere at /home/aquarelle/.julia/artifacts/41d0fb7720cdc6ea4d98a8cf6efdd99dbecfbf5b/lib/libfasttransforms.so (unknown line)
ft_plan_sph2fourier at /home/aquarelle/.julia/artifacts/41d0fb7720cdc6ea4d98a8cf6efdd99dbecfbf5b/lib/libfasttransforms.so (unknown line)
plan_sph2fourier at /home/aquarelle/.julia/packages/FastTransforms/spjz2/src/libfasttransforms.jl:587 [inlined]
#plan_sph2fourier#37 at /home/aquarelle/.julia/packages/FastTransforms/spjz2/src/libfasttransforms.jl:390 [inlined]
plan_sph2fourier at /home/aquarelle/.julia/packages/FastTransforms/spjz2/src/libfasttransforms.jl:390 [inlined]
sph_evaluate! at /home/aquarelle/.julia/packages/FastSphericalHarmonics/9o0Ph/src/scalar.jl:105
sph_evaluate at /home/aquarelle/.julia/packages/FastSphericalHarmonics/9o0Ph/src/scalar.jl:131
unknown function (ip: 0x7f2c0f940582)
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2559
top-level scope at ./REPL[6]:4
jl_toplevel_eval_flex at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/toplevel.c:897
jl_toplevel_eval_flex at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/toplevel.c:850
ijl_toplevel_eval_in at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/toplevel.c:965
eval at ./boot.jl:368 [inlined]
eval_user_input at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:151
repl_backend_loop at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:247
start_repl_backend at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:232
#run_repl#47 at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:369
run_repl at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:355
jfptr_run_repl_65104 at /usr/local/julia-1.8.5/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2559
#967 at ./client.jl:419
jfptr_YY.967_33139 at /usr/local/julia-1.8.5/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2559
jl_apply at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/julia.h:1843 [inlined]
jl_f__call_latest at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/builtins.c:774
#invokelatest#2 at ./essentials.jl:729 [inlined]
invokelatest at ./essentials.jl:726 [inlined]
run_main_repl at ./client.jl:404
exec_options at ./client.jl:318
_start at ./client.jl:522
jfptr__start_38041 at /usr/local/julia-1.8.5/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2377 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/gf.c:2559
jl_apply at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/julia.h:1843 [inlined]
true_main at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/jlapi.c:575
jl_repl_entrypoint at /cache/build/default-amdci4-2/julialang/julia-release-1-dot-8/src/jlapi.c:719
main at julia (unknown line)
unknown function (ip: 0x7f2c26031d8f)
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x401098)
Allocations: 73835342 (Pool: 73824826; Big: 10516); GC: 36
Illegal instruction (core dumped)

I don’t see what is wrong.
Thank you in advance for any help.
Thierry

What is the output of versioninfo()? I’m guessing this fast transforms library is using some feature that your processor does not have.

versioninfo()

returns:

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 2 × Intel(R) Celeron(R) CPU 877 @ 1.40GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, sandybridge)
  Threads: 1 on 2 virtual cores

Old chemist with an old computer :wink:

Sorry, I think you probably need AVX.

https://ark.intel.com/content/www/us/en/ark/products/67192/intel-celeron-processor-877-2m-cache-1-40-ghz.html

1 Like

Thank you very much for your diagnosis about Advanced Vector Extensions, mkitti.
I am going to see what I can do with a recent Galago Pro.