Beacon Mountain : Processeurs x86 et outils de développement Intel

 

Développant sur Android depuis deux ans, et ayant découvert Tizen lors du hackathon BeMyApp/Intel/Samsung à Palo Alto en Octobre 2013, je m’intéresse aujourd’hui aux processeurs x86 et aux outils de développement qu’Intel met à disposition pour les appareils mobiles.

 

Environnement

Je suis équipé de Mac OS X (Mavericks) tournant sur un Mac Book Air de juin 2013, d’Android Studio 0.3, ainsi que d’une Samsung Galaxy Tab 3 qui est basée sur une architecture x86 d’Intel, et d’un smartphone Tizen.

 

Installation des outils de développement

Screenshot Beacon Mountain folder

Direction le site web d’Intel. Après avoir renseigné mes coordonnées, j’ai pu télécharger la version Beta de Beacon Mountain via un lien reçu par email. Il existe deux formats au choix : le premier est le pkg classique, et le deuxième est destiné aux connections lentes. J’ai chois

i le premier et l’installateur s’est exécuté sans aucune difficulté, téléchargeant lui-même d’autres fichiers requis pour l’installation (environ dix minutes pour une connection de 2Mo/s). Une fois installé, l’ensemble prend environ 3Go sur le disque dur. Après installation, Intel Software Manager vérifie régulièrement que les logiciels de développement sont à jour. Parmi les outils installés, on retrouve le SDK et le NDK Android, Android Design, ainsi que Intel Threading Building Blocks, Intel Integrated Performance Primitives, Intel GPA Graphic Performance Analyser, et Intel Hardware Accelerated Execution Manager.

 

Les extras d’Intel

Beacon Mountain contient des versions d’Eclipse, du plugin ADT, du SDK et du NDK qui sont les mêmes que celles que propose developer.android.com. L’expérience utilisateur ne change pas de ce côté là. En revanche, Intel a rajouté quelques outils :

TBB et IPP

Intel Threading Building Blocks et Intel Integrated Performance Primitives sont deux bibliothèques qui permettent d’optimiser les applications, vis-à-vis notamment du multi-threading.

GPA

GPA usage

Grâce à Intel GPA Graphic Performance Analyser, il est possible d’analyser l’exécution d’une application pour l’optimiser sur les plateformes x86. Le GPA affiche en temps réel l’utilisation du CPU, du GPU, et une vingtaine d’autres paramètres.

HAXM

HAXM installation screenshot

Intel Hardware Accelerated Execution Manager permet d’accélérer l’exécution des machines virtuelles Android x86. Pour l’installer, il suffit d’aller dans l’Android SDK Manager et de sélectionner Intel x86 Emulator Accelerator (HAXM).

 

Un aperçu de ces outils est disponible en vidéo sur l’Intel Software TV : http://www.youtube.com/watch?feature=player_embedded&v=Kfr241Mf7wY

 

Machines virtuelles

Android AVD screenshot

Si l’AVD Manager installé conjointement avec l’Android SDK détecte les machines virtuelles que  j’avais préalablement créées, il est toute fois incapable d’afficher leurs informations ou de les démarrer. Heureusement, l’AVD Manager couplé avec mon installation d’Android Studio peut s’en charger, et les machines virtuelles sont alors utilisables dans le debugger d’Eclipse téléchargé par l’installateur d’Intel.

 

Screenshot SDK Manager

Intel propose une image d’Android pour l’architecture x86. Bien que cette image ne soit pas encore accessible pour la version 4.4, elle permet de tester le comportement de son application pour la plupart des versions, et pour toutes les architectures de processeurs. Il est possible de tester cette image système à partir de n’importe quelle installation du SDK d’Android, via l’Android SDK Manager.

 

Développer avec la Samsung Galaxy Tab 3

Certains auront peut être la surprise de découvrir que l’option USB debugging a disparu des paramètres du système. C’est une nouveauté d’Android 4.2 : les options de développement sont cachées de l’utilisateur lambda. Pour les faire apparaître à nouveau, il faut se diriger vers le menu Settings→About Device et appuyer 7 fois sur Build number. Le menu Settings→Developer options devrait reprendre sa place, et on peut dès lors activer l’option Settings→Developer options→USB debugging.

Il ne reste plus qu’à connecter la tablette à l’ordinateur via USB pour debugger vos applications. A noter qu’il est aussi possible de se passer de câble USB si vous cochez l’option Settings→Developer options→ADB over network et utiliser directement le réseau Wifi. Pour plus de détails, je propose de lire le tutoriel de Martin Mikkelborg Syvertsen (stuffandtech.blogspot.fr/2012/03/android-quick-tip-adb-over-wifi.html).

 

Performance

Par défaut, les applications utilisant du code natif sont compilées uniquement pour les processeurs ARM. Les appareils équipés de processeurs x86 comme la Samsung Galaxy Tab 3 doivent donc interpréter ce code pour l’exécuter. Ce processus ralentie l’application, rendant certains jeux inutilisables. Heureusement, il est très simple de compiler l’application pour les processeurs x86, et le gain en performance est énorme.

 

Prenons l’exemple Native-Plasma fourni avec le NDK. Vous pouvez l’importer dans votre workspace depuis le dossier CHEMIN_DU_NDK_ANDROID/samples/. Après avoir importé le projet, vous pouvez compiler le code natif en ouvrant une invite de commande dans le dossier CHEMIN_DU_PROJET/jni/ et en lançant la commande ndk-build. Il vous suffit ensuite de générer l’apk à partir d’Eclipse et de regarder le LogCat pour observer les performances : 

    frame/s (avg,min,max) = (3.9,3.5,5.8)

    render time ms (avg,min,max) = (254.9,172.1,278.7) 

Soit un moyenne de 254.9 ms pour générer une seule frame !

 

Préparons maintenant la compilation pour l’architecture x86. Il vous suffit d’ajouter ou de compléter le fichier CHEMIN_DU_PROJET/jni/Application.mk avec la ligne suivante :

    APP_ABI := armeabi armeabi-v7a x86

 

Relançons la compilation du code natif avec la commande ndk-build, et testons à nouveau l’application sur la Samsung Galaxy Tab 3 :

    frame/s (avg,min,max) = (9.5,7.1,11.2)

    render time ms (avg,min,max) = (104.5,88.8,140.3)

Il faut 104.5 ms pour générer une frame, soit 40% de la durée précédente. On ressent bien l’optimisation de la compilation pour l’architecture x86.

 

 

 

Sources

http://gs4.wonderhowto.com/how-to/enable-hidden-developer-options-your-samsung-galaxy-s4-0146687/

http://software.intel.com/en-us/vcsource/tools/beaconmountain

http://software.intel.com/en-us/articles/speeding-up-the-android-emulator-on-intel-architecture

http://www.youtube.com/watch?feature=player_embedded&v=Kfr241Mf7wY

http://software.intel.com/en-us/articles/intel-graphics-performance-analyzers-for-android-os

http://static.electronicsweekly.com/eyes-on-android/wp-content/uploads/sites/8/2013/05/Intel-BeconMountain-GPA.jpg

有关编译器优化的更完整信息,请参阅优化通知