Bug 57854
| Summary: | numpy перестал работать на виртуальных машинах из-за включения оптимизации | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Alexander Makeenkov <amakeenk> |
| Component: | python3-module-numpy | Assignee: | Aleksandr Voyt <sobue> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | major | ||
| Priority: | P5 | CC: | antohami, glebfm, grenka, kotopesutility, majioa, root, toni, vojtaa |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
@shaba - а не пора ли добавить нужные оптимизации по умолчанию в машины kvm64 и qemu64 ? Добавил в спек %pre-скрипт - проверку наличия инструкций SSE4.2 при установке или обновлении пакета на архитектуре x86_64. Если система (физический процессор или модель CPU в виртуалке) не поддерживает уровень x86-64-v2, пользователь увидит подробное предупреждение о возможных ошибках в рантайме и рекомендации по настройке эмуляции. https://git.altlinux.org/tasks/archive/done/_398/408126/gears/200/git?p=git;a=blobdiff;f=.gear/python3-module-numpy.spec;h=e111893f7fa4ce202b44a8df83e0aecc57b37aaf;hp=a79e86e04493da9ca05d3bd9c0d3a1e0bc0cafd0;hb=682eb397fdab0c58d24eb9147180c60e5ef80780;hpb=ae72e709211732795c766bdad8eb815332e2740d Считаю, что нужно собрать без оптимизаций. У нас репозиторий x86_64, а не x86-64-v2. (Ответ для Антон Мидюков на комментарий #3) > Считаю, что нужно собрать без оптимизаций. У нас репозиторий x86_64, а не > x86-64-v2. Разобрался подробнее, оптимизации действительно стоит отключить, и на скорости это почти не скажется. https://packages.altlinux.org/tasks/427628/ В NumPy два независимых механизма. baseline — обязательный для запуска набор инструкций, с версии 2.4 поднят до x86-64-v2, из-за него и RuntimeError: https://github.com/numpy/numpy/blob/v2.4.2/meson_cpu/meson.build#L98-L101 dispatch — ускоренные варианты вычислительных ядер, которые выбираются уже в момент запуска, по факту наличия инструкций у процессора: https://github.com/numpy/numpy/blob/v2.4.2/meson.options#L33 https://github.com/numpy/numpy/blob/v2.4.2/meson_cpu/main_config.h.in#L261-L268 Друг от друга они не зависят, поэтому cpu-baseline=none снимает требование к процессору, а ускорение остаётся. Этот вариант описан в документации NumPy: https://github.com/numpy/numpy/blob/v2.4.2/doc/source/reference/simd/build-options.rst#L78-L89:~:text=Targeting%20Older%20CPUs,paths%20for%20optimization Промежуточные значения (sse2, sse3) не подходят — перенаправляются обратно в X86_V2: https://github.com/numpy/numpy/blob/v2.4.2/meson_cpu/x86/meson.build#L97-L99 Собрал 1:2.4.2-alt3 с cpu-baseline=none, dispatch=max. Проверено: CPU | Intel(R) Xeon(R) 6747P | QEMU Virtual CPU version 2.5+ | QEMU Virtual CPU version 2.5+ level | x86-64-v4 | x86-64-v2 | x86-64-v1 kind | vm | vm | vm python | 3.14.6 | 3.14.6 | 3.14.6 numpy | 2.4.2 | 2.4.2 | 2.4.2 baseline | (empty) | (empty) | (empty) dispatch usable | X86_V2,X86_V3,X86_V4,AVX512_ICL,AVX512_SPR | X86_V2 | (none) smoke test | ok | ok | ok add, ms | 1.30 | 1.12 | 1.08 sqrt, ms | 0.67 | 0.64 | 1.66 sum, ms | 0.36 | 0.35 | 0.41 sort, ms | 6.84 | 143.64 | 148.41 add speedup | 0.95 | 0.87 | - sqrt speedup | 2.44 | 2.57 | - sum speedup | 1.24 | 1.11 | - sort speedup | 21.16 | 1.00 | - Предупреждение при установке, добавленное в alt2, удалено. python3-module-numpy-1:2.4.2-alt3 -> sisyphus: Fri Jul 31 2026 Aleksandr A. Voyt <sobue@altlinux> 1:2.4.2-alt3 - Built with cpu-baseline=none to keep working on CPUs and VMs without SSE4.2, runtime dispatch is unchanged (closes: #57854) - Dropped the pre-install SSE4.2 warning |

Description
Alexander Makeenkov 2026-02-13 12:28:19 MSKВерсия: 1:2.4.2-alt1 Шаги воспроизведения: # apt-get install python3-module-numpy $ python3 -c "import numpy" Получаемый результат: Traceback (most recent call last): File "<string>", line 1, in <module> import numpy File "/usr/lib64/python3/site-packages/numpy/__init__.py", line 118, in <module> from numpy.__config__ import show_config File "/usr/lib64/python3/site-packages/numpy/__config__.py", line 4, in <module> from numpy._core._multiarray_umath import ( ...<3 lines>... ) File "/usr/lib64/python3/site-packages/numpy/_core/__init__.py", line 24, in <module> from . import multiarray File "/usr/lib64/python3/site-packages/numpy/_core/multiarray.py", line 11, in <module> from . import _multiarray_umath, overrides RuntimeError: NumPy was built with baseline optimizations: (X86_V2) but your machine doesn't support: (X86_V2). Стенд: 1. Виртуальная машина на Proxmox VE с типом процессора kvm64 2. Виртуальная машина на Qemu + libvirt с типом процессора qemu64 Ошибки нет, если использовать тип процессора host.