LINUX.ORG.RU

SSE3 support (эмуляция Android под Linux)

 ,


0

2

Добрый день.

Общаюсь тут больше недели с одними оленями в техподдержке (редкий софт для эмуляции ведроид-устройств на ПК). Прога написана редкими рукожопами: на W2003 сервере новые версии не пашут, функционал стабильных старших версий глючит, техподдержка не оказывается. Поставил голый Debian 10 и последнюю версию их софта. Это по сути надстройка или даже GUI на VirtualBox. Сам VirtualBox успешно работает, запускает windows guest разных версий и даже с 3D ускорением. Их софт - опять глючит, то в ведроиде браузер упадет, то проги не ставятся, то машина не работает по причине глюков эмулятора камеры… Вообщем, веселья хватает. Отсылаю им все логи с Debian (это последняя версия их проги, поддержку они оказать обязаны) в результате мне приходит потрясающий ответ: «в cpuinfo нет SSE3, значит он отключен в BIOS либо не поддерживается ядром, а без этого все может глючить, потому надо его включить.»

Камень точно поддерживает, на винде он есть, значит в BIOS он не отключен. Как включить SSE3 в Debian 10? Что-то мануалов нет, один флуд. Киньте пожалуйста ссылку или опишите как.

Что значит включить SSE3, этож просто ассемблерные инструкции имеющие свои собственные опкоды, они либо есть в cpu, либо их нет. Просто SIMD операции которые доступны в userspace для всех клиентских программ, или я вообще ничего не понимаю в нативной разработке, что возможно т.к. я жабокодер.

Главное не путай SSE3 и SSSE3. Может у тебя есть первое, а требуется второе.

anonymous ()
Ответ на: комментарий от anonymous

Я из описания не понял, если разные бинарники то они могли скомпилировать с разными флагами, указав какой-нибудь отличающийся таргет где требования к версии simd выше. Т.е. какая-нибудь автомтаическая векторизация компилятором в винде реализована на sse3, а в linux собрана с использованием ssse3.

anonymous ()
Ответ на: комментарий от anonymous

просто SIMD операции которые доступны в userspace

Тащемт ядро ещё должно сохранять содержимое соответствующих регистров при переключении процессов. Но сложно представить, чтобы оно этого не делало.

anonymous ()

flags выдает

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 mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt nodeid_msr cpb hw_pstate vmmcall npt lbrv svm_lock nrip_save pausefilter

Точно, не знают, я тоже не знал что sse3 во флагах отражается как pni (Prescott New Instructions).

Да, разговор был и за SSSE3 тоже, у них эмуляция андроид 8 и новее без SSSE3 по какой-то причине невозможна (ошибка - DHCP сервер не выдал виртуальной машине адрес, какая связь между музыкой и религией я не вникал). Но без SSSE3 судя по их докам Андроид 7 и старше обязаны работать. Но не все работает, есть куча глюков, и меня посылают искать sse3

I can see in the logs (cpuinfo.log) that there is no sse3 flag for your cpu. If your CPU supports SSE3, which I believe it does, it is either disabled in your BIOS or your current kernel has not been compiled with sse3 support. I don’t know whether this is related to your other issues, but without sse3 you won’t be able to go very far with Genymotion Desktop: low performances and crashes are to be expected. You should really find a way to get sse3 available before we can move on.

Dima_228 ()
Ответ на: комментарий от One

Я когда-то for lulz на bare metal сервере под ARM (благо ядер было дофига) через QEMU как-то подымал x86 винду, тупила она конечно жестко но это работало. В чем проблема эмулировать какие-то несколько инструкций камня программно?

Если уже оффтопить, я скажу в чем проблема.

Есть по сути 3 эмулятора ведроида для ПК. Встроенный, идущий с Android Studio, очень медленный и для большинства задач это неприемлемо. Как бы это абсурдно не звучало, быстрее происходит перевтыкание девайса в USB порт и установка софта на него чем дождаться пока слоупок что-то выдаст под виртуализацией на экран. Второй это BlueStacks, он тоже тормознутый и кишит рекламой и левым софтом. Когда-то пользовался, не то. Третий - Memu, он только под винду, претензий по работе нет, летает быстро. Претензии к разработчикам - новые версии ставятся но не запускаются на Windows 2003 (и XP), а Android 5 и новее можно установить только на новых версиях эмулятора. В смысле как-то может и можно, но штатными средствами они это сделать не позволяют.

Ну и Genymotion (как на Linux, так и на винду) который я сейчас пытаюсь заставить работать хоть где-то. Версии 2-летней давности отлично ставятся и работают на любой версии винды, но если есть какой-то косяк - техподдержка оказывается только для последней версии, у них политика такая, и это коммерческий продукт если что (то что у него есть фри версия это детали). Мне пытаются доказать что все глюки из-за старой версии эмулятора, потом из-за того что у меня в ядре нет каких-то процессорных инструкций, что будет дальше - пока не знаю.

(это все был спойлер, почему не свернулось я не понял)

Образы Android x86, идущие на VirtualBox, почему-то не идут, почему - не вникал, да и не нужно потому что необходимо запускать несколько приложений для смартфонов (ARM) и их работа на x86 не гарантируется

Из последнего сообщения для чего нужно SSSE3 -

The problem here is not Genymotion, nor VirtualBox: it is Android OS :-)

То есть это Андроиду нужны такие процессорные инструкции

Dima_228 ()
Последнее исправление: Dima_228 (всего исправлений: 4)
Ответ на: комментарий от Dima_228

А битность какая у тебя? Для x64 компилируются именно с флагами -march=x86-64 -msse4.2 -mpopcnt -m64 -mtune=intel

Для x86 компиляция с -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32

https://developer.android.com/ndk/guides/abis

Соответственно и требования такие

One ★★★★★ ()
Ответ на: комментарий от One

Битность чего? Камень и все системы x64, андроид - по барабану лишь бы работало и на нем работал нужный мне софт из маркета.

Компилируется что? Сам Android или софт под него?

Note: Historically the NDK supported ARMv5 (armeabi), and 32-bit and 64-bit MIPS, but support for these ABIs was removed in NDK r17.

Видимо, имеется в виду что для совместимости с бОльшим спектром девайсов нужен NDK более старых версий. Да, вижу что сейчас SSSE3 в половине строк таблицы требуется.

Dima_228 ()

У процессоров Phenom II и их огрызков атлонов нет SSSE3, только SSE3 и нестандартный, никому не нужный SSE4A. У AMD SSSE3 есть только с FX на архитектуре Bulldozer и старше. Сам когда-то хотел на своём Athlon II X3 440 погонять андроид-приложения и не вышло. Нужен апгрейд до FX, а лучше и вовсе на Ryzen.

amdredfan ()
Последнее исправление: amdredfan (всего исправлений: 4)