Включить popcnt в виртуальном боксе

У меня есть Oracle VirtualBox 4.3.8 RC1 и установлена ​​стабильная версия Debian.

В этой версии VirtualBox я могу использовать эту команду для включения SSE4.1 и SSE4.2:

VBoxManage setextradata Имя виртуальной машины VBoxInternal/CPUM/SSE4.1 1

Я хотел скомпилировать dpdk, http://dpdk.org, но выдает ошибку:

неявное объявление функции ‘_mm_popcnt_u32’

Когда я смотрю на флаги с

кошка /proc/cpuinfo

флаги: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm Constant_tsc rep_good nopl pni ssse3 sse4_1 sse4_2 lahf_lm

Попцента нет. Почему? Можно ли его включить или что я делаю не так?

Спасибо


person Simon    schedule 22.08.2014    source источник
comment
POPCNT не входит в набор инструкций SSE4.2. Intel реализовала POPCNT одновременно с SSE4.2 в Nahalem, но это не означает, что VirtualBox поддерживает его. VirtualBox также не поддерживает AVX.   -  person Z boson    schedule 22.08.2014


Ответы (2)


Вы можете использовать __builtin_popcountll для замены _mm_popcnt_u32, чтобы использовать только встроенные функции sse3.

См. здесь: http://permalink.gmane.org/gmane.comp.networking.dpdk.devel/4560

person brain.zhang    schedule 28.08.2014

Мой случай: POPCNT отсутствует в VirtualBox v6.1.22 с Hyper-V.

  1. Беги VBoxManage setextradata VMName VBoxInternal/CPUM/IsaExts/POPCNT
  2. включите вложенный пейджинг на виртуальной машине.

Оно работает.

person Aaron    schedule 17.05.2021