Skip to content

JULIA_LLVM_ARGS="--aarch64-sve-vector-bits-min=" LLVM SegFault creating ntuple of VecElement of passed vector length #43069

@freemin7

Description

@freemin7

When running Julia with JULIA_LLVM_ARGS="--aarch64-sve-vector-bits-min=512" precompiling VectorizationBase causes the error below without the LLVM this error does not appear.

[ Info: Precompiling VectorizationBase [3d5dd08c-fd9d-11e8-17fa-ed2836048c2f]

signal (11): Segmentation fault
in expression starting at /lustre/home/guest19/.julia/packages/VectorizationBase/xHOp9/src/special/exp.jl:200
_ZNK4llvm3EVT16isExtendedVectorEv at /lustre/home/guest19/julia-1.7.0-rc2/bin/../lib/julia/libLLVM-12jl.so (unknown line)
_ZNK4llvm3EVT21isExtended64BitVectorEv at /lustre/home/guest19/julia-1.7.0-rc2/bin/../lib/julia/libLLVM-12jl.so (unknown line)
Allocations: 18783400 (Pool: 18782916; Big: 484); GC: 38
ERROR: Failed to precompile VectorizationBase [3d5dd08c-fd9d-11e8-17fa-ed2836048c2f] to /lustre/home/guest19/.julia/compiled/v1.7/VectorizationBase/jl_k42v0A.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, ignore_loaded_modules::Bool)
   @ Base ./loading.jl:1466
 [3] compilecache(pkg::Base.PkgId, path::String)
   @ Base ./loading.jl:1410
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1120
 [5] require(uuidkey::Base.PkgId)
   @ Base ./loading.jl:1013
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:997

This weekend A64FX instances are easily accessible via the OOKAMI which provides access via the ARM HPC User group. See page 14 and 15 of these slides for login data. So anyone can reproduce it.

julia> versioninfo()
Julia Version 1.7.0-rc2
Commit f23fc0d27a (2021-10-20 12:45 UTC)
Platform Info:
  OS: Linux (aarch64-unknown-linux-gnu)
  CPU: unknown
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-12.0.1 (ORCJIT, a64fx)
Environment:
  JULIA_LLVM_ARGS = -aarch64-sve-vector-bits-min=512

The MWE is ntuple(j -> Core.VecElement(j), n) where 9>n>2. For example 3,4 or 8.

Other observations:
JULIA_LLVM_ARGS="-aarch64-sve-vector-bits-min=512" ./julia-1.7.0-rc2/bin/julia -e 'ntuple(j -> Core.VecElement(j), 8)' doesn't trigger it.
When changing the -aarch64-sve-vector-bits-min= 256 causes crashes 2<n<5 and 1024 causes crashes with 2<n<17.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions