3

Я делаю некоторые разработки в Linux, работающие в VirtualBox. Компьютер - Core i5 под управлением Windows 7 (32-разрядная версия). Согласно записи в Википедии, процессор должен поддерживать SSE4.2, но только виртуальная машина SSE3 работает в виртуальной машине. Если я скомпилирую с флагом -msse4 в gcc, результирующий двоичный файл завершится с ошибкой недопустимой инструкции.

2 ответа2

3

Это известная проблема и уже в их багтрекер:

[запрос функции] Разрешить гостевой ОС использовать наборы инструкций SSE4.1, 4.2 и POPCNT https://www.virtualbox.org/ticket/8651

2

VirtualBox или KVM или любая другая такая технология виртуализации предоставляет гостю некоторые функции хост-процессора.

Почему бы не экспортировать все функции центрального процессора? Представьте, что вы хотите перенести свою виртуальную машину с одного хоста на другой без прерывания (или путем сохранения состояния). Но второй хост не имеет SSE 4. Если ваша виртуальная машина выставила SSE 4 на хосте 1, и вы успешно скомпилировали и выполнили программу с использованием этого набора инструкций, то при переносе на хост 2 она сломается.

Вот почему - ИМХО - не стоит выставлять каждый поддерживаемый набор инструкций центрального процессора по умолчанию, и я не удивлен, что это имеет место с VirtualBox. Однако он должен (и я надеюсь, что это будет реализованное решение для заявки), что позволит пользователю переопределить выбранные функции по умолчанию. И AFAIK такой опции еще не существует. Так что вам придется набраться терпения.

Обратите внимание, что KVM позволяет вам устанавливать наборы инструкций, которые вы хотите предоставить посетителям для каждого гостя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .