Skip to content

BUG: svml check in numpy/core/setup.py does not work when cross-compiling #20736

@kanavin

Description

@kanavin

Describe the issue:

numpy/core/setup.py performs the following:

def can_link_svml():
    """SVML library is supported only on x86_64 architecture and currently
    only on linux
    """
    machine = platform.machine()
    system = platform.system()
    return "x86_64" in machine and system == "Linux"

This really does not work when compiling on x86_64 host for something entirely different, e.g. arm or risc-v, as it enables svml with subsequent build failure.

If this can't be easily auto-detected, there should be at least a command line switch to selectively enable/disable this.

Reproduce the code example:

This is a configuration/build issue.

Error message:

Here's how the build fails:

numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s: Assembler messages:
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:19: Error: bad instruction `pushq %rbp'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:21: Error: bad instruction `movq %rsp,%rbp'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:24: Error: bad instruction `andq $-64,%rsp'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:25: Error: bad instruction `subq $192,%rsp'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:26: Error: bad instruction `vmovups __svml_dacos_data_internal(%rip),%zmm7'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:27: Error: bad instruction `vmovups 64+__svml_dacos_data_internal(%rip),%zmm8'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:30: Error: bad instruction `vmovups 128+__svml_dacos_data_internal(%rip),%zmm11'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:31: Error: bad instruction `vmovups 384+__svml_dacos_data_internal(%rip),%zmm14'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:32: Error: bad instruction `vmovups 448+__svml_dacos_data_internal(%rip),%zmm15'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:33: Error: bad instruction `vmovups 512+__svml_dacos_data_internal(%rip),%zmm2'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:34: Error: bad instruction `vmovups 576+__svml_dacos_data_internal(%rip),%zmm1'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:35: Error: bad instruction `vmovups 256+__svml_dacos_data_internal(%rip),%zmm10'
numpy/core/src/umath/svml/linux/avx512/svml_z0_acos_d_la.s:36: Error: bad instruction `vmovaps %zmm0,%zmm6'

and so on.



### NumPy/Python version information:

This appeared in 1.22.0 with introduction of svml.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions