Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Android on IA devices and Intel Tools
1. Android* on Intel platforms
And what it means for you, developers.
Xavier Hallade, Technical Marketing Engineer, Intel
2. Our devices are already fully compatible with
established Android* ecosystem
Android* Dalvik* apps
These will directly work, Dalvik has been
optimized for Intel® platforms.
Android Runtime
Dalvik Virtual
Machine
Core Libraries
Android NDK apps
Most will run without any recompilation on consumer platforms.
Android NDK provides an x86 toolchain since 2011
A simple recompile using the Android NDK yields the best performance
If there is specific processor dependent code, porting may be necessary
Most of the time, it just works !
3. What’s a NDK app ?
It’s an Android* application that uses native libraries.
Native libraries are .so files, usually found inside
libs/CPU_ABI/.
An application can use some calls to these
native libraries, or rely almost exclusively on
these.
These libs can be generated from native sources
inside jni folder, game engines, or required by
other 3rd party libraries.
There is no 100% native application. Even an
application purely written in C/C++, using
native_app_glue.h, will be executed in the
context of the Dalvik Virtual Machine.
4. What we are working on for Android*
Key AOSP and
Kernel Contributor
Porting and
Optimizing
Browser and Apps
Optimized Drivers
& Firmware
NDK Apps Bridging
Technology
Highly Tuned
Dalvik Runtime
64
bit
64-Bit
6. Smartphones with Intel Inside - 2012
Z2460
Orange* San Diego (UK)
Orange* avec Intel Inside (FR)
Lava* Xolo X900
Motorola* RAZR i
ZTE* Grand X IN
Megafon* Mint
Lenovo*
K800
8. Tablets with Intel Inside - 2013
ASUS* MeMO Pad FHD 10”
ASUS* Fonepad™ 7”
(Z2560)
(Z2420/Z2560)
Samsung* Galaxy™ Tab 3 10.1”
(Z2560)
LTE version now available
Dell* Venue 7/8
(Z2560)
9. Future Android* platforms based on Intel*
Silvermont microarchitecture
New 22nm tri-gate microarchitecture
~3X more peak performance or ~5X lower power than previous Atom microarchitecture
Intel® Atom™ Processor Z3000 Series
(Bay Trail)
Next Generation Tablets
Merrifield
Next Generation Smartphones
10. How to target multiple platforms (incl. x86)
from NDK apps ?
11. Configuring NDK Target ABIs
If you have the source code of your native libraries, you can compile it for several CPU
architectures by setting APP_ABI to all in the Makefile “jni/Application.mk”:
APP_ABI=all
Put APP_ABI=all inside
Application.mk
Run ndk-build…
ARM v7a libs are built
ARM v5 libs are built
x86 libs are built
mips libs are built
The NDK will generate optimized code for all target ABIs
You can also pass APP_ABI variable directly to ndk-build, and specify each ABI:
ndk-build APP_ABI=x86
12. Fat Binaries
By default, an APK contains libraries for every supported ABIs.
libs/armeabi
Use lib/armeabi libraries
libs/armeabi-v7a
libs/x86
…
APK file
Use lib/armeabi-v7a
libraries
Use lib/x86
libraries
The application will be filtered during installation (after download)
13. Multiple APKs
Google Play* supports multiple APKs for the same application.
What compatible APK will be chosen for a device entirely depends on the
android:VersionCode
If you have multiple APKs for multiple ABIs, best is to simply prefix your current
version code with a digit representing the ABI:
2310
ARMv7
6310
x86
You can have more options for multiple APKs, here is a convention that will work
if you’re using all of these:
14. 3rd party libraries x86 support
Game engines/libraries with x86 support:
•
Havok Anarchy SDK: android x86 target available
•
Unreal Engine 3: android x86 target available
•
Marmalade: android x86 target available
•
Cocos2Dx: set APP_ABI in Application.mk
•
FMOD: x86 lib already included, set ABIs in Application.mk
•
AppGameKit: x86 lib already included, set ABIs in Application.mk
•
libgdx: x86 lib now available in latest releases
•
…
No x86 support but works on consumer devices:
•
Corona
•
Unity
15. ®
Intel
Tools for Android* apps
developers
HAXM, TBB, GPA, XDK and others
Most of our tools are relevant even if you’re not targeting x86 platforms!
16. Faster Android* Emulation on Intel® Architecture
Based Host PC
Pre-built Intel® Atom™ Processor Images
Android* SDK manager has x86 emulation images
built-in
To emulate an Intel Atom processor based Android
phone, install the “Intel Atom x86 System Image”
available in the Android SDK Manager
Much Faster Emulation
Intel® Hardware Accelerated Execution Manager (Intel®
HAXM) for Mac and Windows uses Intel®
Virtualization Technology (Intel® VT) to accelerate
Android emulator
Intel VT is already supported in Linux* by qemu -kvm
Intel x86 Atom
System Image
Intel x86 Emulator
Accelerator
17. Intel® Threading Building Blocks (TBB)
Specify tasks instead of manipulating threads
Intel® Threading Building Blocks (Intel® TBB) maps your logical tasks onto
threads with full support for nested parallelism
Targets threading for scalable performance
Uses proven efficient parallel patterns
Uses work-stealing to support the load balance of unknown execution
time for tasks
Open source and licensed versions available on Linux*, Windows*, Mac OS
X*, Android*…
Open Source version available on: threadingbuildingblocks.org
Licensed version available on: software.intel.com/en-us/intel-tbb
18. Intel® TBB - Example
#include <tbb/parallel_reduce.h>
#include <tbb/blocked_range.h>
Lambda function with
Calculating aa one- Pi
Defining a reduction
Computes part of
Defining
range and initial value as
dimensional range
within the range r
over a range
function
parm
double getPi() {
const int num_steps = 10000000;
const double step = 1./num_steps;
double pi = tbb::parallel_reduce(
tbb::blocked_range<int>(0, num_steps), //Range
double(0), //Value
//function
[&](const tbb::blocked_range<int>& r, double current_sum ) ->
double {
for (size_t i=r.begin(); i!=r.end(); ++i) {
double x = (i+0.5)*step;
current_sum += 4.0/(1.0 + x*x);
}
return current_sum; // updated value of the accumulator
},
[]( double s1, double s2 ) { //Reduction
return s1+s2;
}
);
return pi*step;
}
19. Project Anarchy*
• Complete mobile game engine that includes
Havok Vision Engine, Physics, Animation Studio
and AI
• Free to publish on Android (ARM and x86), iOS,
and Tizen
• C++ development environment
• Efficient asset management system
• LUA scripting and debugging
• Extensible source code and full library of sample
materials
• Remote debugging
• File serving for live asset updates
• Remote input
• Visual debugger
http://www.projectanarchy.com/
20. Intel® Graphics Performance Analyzers
• Profiles performance and Power
• Real-time charts of CPU, GPU and
power metrics
• Conduct real-time experiments
with OpenGL-ES* (with state
overrides) to help narrow down
problems
• Triage system-level performance
with CPU, GPU and Power metrics
Available freely on intel.com/software/gpa
21. Intel® HTML5 Development Environment
(XDK NEW)
• Great tools for free
• Convenient, cloud-based build tool lets you target all popular platforms
& app stores
• Write once, run anywhere; code once, debug once, publish everywhere
more on: html5dev-software.intel.com
22. Other tools and libs for Android*
• Intel Beacon Mountain
• Intel IPP Preview
• Intel Compiler