SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
Оптимизация приложений для Android x86
Антон Коновалов, Дмитрий Шкурко
Intel Corporation
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
2
План выступления
Обзор
 Устройства на базе аппаратуры средств Intel
 Инструменты разработки приложений на HTML5
 Инструменты разработки приложений для Dalvik* и C/C++ приложений
Разработка C/C++ приложений
 Инструменты разработки C/C++ приложений
 Демо
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Телефоны и планшеты на базе x86 архитектуры
3
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Следующее поколение u-архитектуры Atom*
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Точка зрения пользователя
Android Runtime
Core Libraries
Dalvik Virtual
Machine
Blink (WebKit)
Приложения на базе Android Dalvik* и HTML5
• Должны работать без изменений
Приложения, содержащие двоичный код,
• Должны работать без изменений, но не с максимальной
эффективностью
Как правило, популярные приложения используют бинарные
библиотеки
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Типы приложений, поставляемые в бинарном виде
7
• Порт существующего кода с других платформ
• Оптимизация без глобальной переделки
• Требования к производительности в условиях ограничения на ресурсы
• Обработка видео, аудио, сигналов
• Алгоритмы симуляции
• Прямой доступ к CPU/HW
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Инструменты разработки приложений на HTML5
8
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Intel® HTML5 Development Environment (XDK)
Создание, отладка и распространение HTML5 приложений
на базе общего кода для разных платформ
xdk.intel.com
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Инструменты разработки приложений для Dalvik* и
C/C++ приложений
10
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
11
Integrated Native Developer Experience (beta)
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
12
Integrated Native Developer Experience (beta)
Базовые инструменты
разработки
Media Pack for Android
Threading Building Blocks
Инструменты для анализа
производительности и отладки
Compute Code Builder
Intel C/C++ компилятор
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
13
Базовые инструменты разработки
Android developer tools (ADT)
Android NDK
Android SDK Eclipse* IDE
Android plugin for
Visual Studio*
Apache Ant* Intel* HAXM
Android plugin for Eclipse*
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Hardware Accelerated Execution Manager (Intel®
HAXM)
www.intel.com/software/android
HAXM драйвер для эмулятора
x86
Образ ОС Android для x86
Готовые образы для эмулятора
входят в SDK
• Образы для x86 предоставляются,
начиная с API 10
Виртуализация ускоряет эмуляцию в
2-4 раза
• HAXM на Mac и Windows ОС
• KVM на Linux
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
15
Демо (тесты на производительность памяти и
процессора)
HAXM off HAXM on
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Compute Code Builder
16
http://software.intel.com/en-us/articles/getting-started-with-compute-
code-builder
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Возможности Compute Code Builder
17
• Preview JumpStart kit – учебный инструмент для пошагового построения
OpenCL проекта
• Code editing – Интеграция с популярными IDE:
• Синтаксическая раскраска кода
• Авто-дополнение кода
• Обработка ошибок компиляции
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Возможности Compute Code Builder (продолжение)
18
• Compile and Build – компиляция OpenCL ядер, подготовка бинарных файлов
на Android устройствах
• OpenCL API debug – отладка вызовов OpenCL API, инспектирование
объектов и очередей OpenCL.
• OpenCL kernel debug – пошаговая отладка на центральном процессоре
• Kernel analyze – анализ производительности OpenCL ядер на машинах с
графическим процессором Intel® Graphics
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
19
Threading Building Blocks
• Современная C++ библиотека параллельных алгоритмов для эффективного
распараллеливания приложений
• Программирование на уровне элементов работы, а не потоков ОС
• Динамическое распределение нагрузки
• Проверенные алгоритмы
• Код доступен https://www.threadingbuildingblocks.org/ под GPL
• Коммерческая версия http://software.intel.com/en-us/intel-tbb
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Intel® Threading Building Blocks - Тизер
#include <tbb/parallel_reduce.h>
#include <tbb/blocked_range.h>
double getPi() // int_0^1 4dx/(1+x^2) = pi
{
const int num_steps = 10000000;
const double step = 1./num_steps;
double pi = tbb::parallel_reduce(
tbb::blocked_range<int>(0, num_steps),
double(0),
[&](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; // body returns updated value of the accumulator
},
[]( double s1, double s2 ) {
return s1+s2;
}
);
return pi*step;
}
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Intel® TBB – Использование в приложениях
В новых версиях Android
обработка зависимостей
между библиотеками
осуществляется автоматически
Android.mk#for including tbb in your project:
include $(CLEAR_VARS)
LOCAL_MODULE := tbb
LOCAL_SRC_FILES := $(TBB_PATH)/lib/android/libtbb.so
LOCAL_EXPORT_C_INCLUDES := $(TBB_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
#for calling tbb from your lib:
LOCAL_CPP_FEATURES += rtti exceptions
LOCAL_SHARED_LIBRARIES += tbb
LOCAL_CFLAGS += -DTBB_USE_GCC_BUILTINS -std=c++11
APP_ABI := x86
APP_STL := gnustl_shared
Application.mk
System.loadLibrary("gnustl_shared");
System.loadLibrary("tbb");
System.loadLibrary("YourLib");
Java
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
22
Media Pack
Media Pack предоставляет код и примеры использования для:
• Захвата видео потока с камеры и экрана
• Редактирования видео
• Включения потокового видео
• Обработки звука
Media Pack поддерживает x86 и ARM устройств на базе Android версии 4.3
http://software.intel.com/en-us/articles/intel-inde-media-pack-for-
android-tutorials-building-samples
http://software.intel.com/en-us/articles/intel-inde-media-pack-for-
android-tutorials-running-samples
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
23
Захвата видео потока
http://software.intel.com/en-us/articles/intel-inde-media-pack-for-
android-tutorials-video-capturing-for-libgdx-applications
http://software.intel.com/en-us/articles/intel-inde-media-pack-for-
android-tutorials-video-capturing-for-opengl-applications
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
24
• Анализ производительности в реальном
времени
• Быстрые эксперименты с системными
настройками для локализации проблем с
CPU и GPU
• Множество метрик для определения и
оптимизации критичного кода
• CPU, GPU, API, RAM, сеть,
энергопотребление и т.д.
Intel® Graphics Performance Analyzers
Инструмент системного анализа ОС Android
http://software.intel.com/en-us/vcsource/tools/intel-gpa
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Метрики и системные настройки
25
Метрики
 BUS/DRAM
 CPU
 Flash File System I/O
 Network I/O
 GPU
 App Memory
 OpenGL API and States
 Power
Системные настройки для анализа
производительности и отладки
 1x1 Scissor Rect
 Disable Alpha Blending
 Disable Alpha Test
 Disable Draw Calls
 Disable Z-Test
 Show Wireframe
 Texture 2x2
 Hyper Threading Disable
 CPU Frequency Override
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Инструменты разработки нативных приложений
26
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Android* NDK для разработки нативных приложений
27
Зачем он нужен?
• Перенос существующего нативного кода с других платформ
• Требования к производительности в условиях ограничения на ресурсы,
например, на память
• Обработка изображений, сигналов
• Алгоритмы симуляции
• Прямой доступ к CPU/HW
• Оптимизация кода без изменения алгоритма
http://developer.android.com/tools/sdk/ndk/index.html
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Совместимость приложений со всеми устройствами
28
myapp.apk
APP_ABI := all Application.mklibs/x86/mylib.so
libs/arm/mylib.so
libs/arm-v7a/mylib.so
libs/mips/mylib.so
libs/?/mylib.so
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Специализация опций для разных архитектур
29
libs/x86/mylib.so
libs/arm/mylib.so
libs/arm-v7a/mylib.so
libs/mips/mylib.so
libs/?/mylib.so
ifeq ($(TARGET_ARCH_ABI),x86)
LOCAL_CFLAGS := -mtune=atom -msse3
endif
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
LOCAL_CFLAGS := -march=armv7-a
Endif
Android.mk
#ifdef __i386__
strlcat(buf, "__i386__", sizeof(buf));
#endif
#ifdef __arm__
strlcat(buf, "__arm__", sizeof(buf));
#endif
source.c
http://software.intel.com/en-us/android/articles/creating-an-x86-and-arm-apk-using-the-
intelr-compiler-and-gnu-gcc
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
C/C++ компиляторы для Android x86
30
Поддержка x86 включена, начиная с NDK r6
• Включал или включает до сих пор
• GCC 4.4.3, GCC 4.6, GCC 4.7, GCC 4.8
• Clang 3.1, Clang 3.2, Clang 3.3
• ICC 13.1, 14.0
• RenderScript*
• Сейчас по умолчанию используется версия 4.6
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Рекомендуемые опции GCC
31
Уровни оптимизации -O0, -O1, -O2, -O3, -Os
-O0 уровень оптимизации по умолчанию
Настройки и оптимизации для заданных микроархитектур
• -march=atom (или –mtune=atom)
• -march=slm (или –mtune=slm)
Настройки точности арифметики
• -ffast-math
• -mfpmath=sse
Другие полезные опции
• -flto
• -funroll-loops, -funroll-all-loops
EEMBC® CoreMark®
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
32
Intel® C/C++ Compiler
Оптимизация приложений и системы в целом
Высокая производительность
• Простая рекомпиляция может дать прирост производительности
• Совместимость с GNU* GCC компилятором
• Intel® Cilk™ Plus – параллелизм данных и задач
• Поддержка стандартов IEEE 754-2008, С++11
Оптимизации
• Поддержка SSE инструкций от SSE до AVX2
• Автоматическая и полуавтоматическая векторизация
• Межфайловые оптимизации
• Оптимизации с использованием профиля
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Рекомендуемые опции Intel C/C++ компилятора
33
Уровни оптимизации -O0, -O1, -O2, -O3, -Os
• -O2 уровень оптимизации по умолчанию
• если не включена поддержка отладки –g
• -Ofast, -fast
Настройки и оптимизации для заданных микроархитектур
• -xATOM_SSSE3
• -xATOM_SSE4.2
Настройки точности арифметики
• -fp-model fast=1|2
• -no-prec-div
Другие полезные опции
-ansi-alias, -ipo
http://software.intel.com/en-us/android/articles/creating-
an-x86-and-arm-apk-using-the-intelr-compiler-and-gnu-gcc
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
34
Intel® Cilk™ Plus
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
35
Intel® Cilk™ Plus
int fib(int n)
{
if (n < 2)
return n;
int x = fib(n-1);
int y = fid(n-2);
return x + y;
}
int fib(int n)
{
if (n < 2)
return n;
int x = cilk_spawn fib(n-1);
int y = fid(n-2);
cilk_sync;
return x + y;
}
Оригинальный код Оптимизированный код
for (int i; i<8; ++i)
{
do_work(i);
}
cilk_for (int i; i<8; ++i)
{
do_work(i);
}
Оригинальный код Оптимизированный код
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
36
Intel® Cilk™ Plus
//declaring the function body
__declspec((vector)) double ef_add(double x, double y)
{
return x + y;
}
//invoking the function using array notation
//operations on the whole extent of the arrays a,b,c
a[:] = ef_add(b[:], c[:]);
//use the full array notation construct to also specify n as an extend and s as a stride
a[0:n:s] = ef_add(b[0:n:s], c[0:n:s]);
//use the cilk_for construction to invoke the SIMD-enabled function in data parallel context
cilk_for (i = 0; i<n; ++i)
{
a[i] = ef_add(b[i], c[i]);
}
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
37
Intel® Cilk™ Plus
void add_floats(float *a, float *b, float *c, float *d, float *e, int n)
{
int i;
#pragma simd
for (int i; i<8; i++)
{
a[i] = a[i] + b[i] + c[i] + d[i] + e[i];
}
}
http://software.intel.com/en-us/intel-cilk-plus
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
40
Оптимизация приложений с Intel® Cilk™ Plus
http://habrahabr.ru/company/intel/blog/202088/
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
41
Перенос нативных Android* приложений на x86
• Изменение конфигурации построения (makefiles, файлы конфигурации)
• Перенос C/C++ кода
• Изменение типов данных
• Изменение выравнивания типов данных
• Перенос кода с интринсиками
• Перенос ассемблерного кода
http://software.intel.com/en-us/articles/ndk-android-
application-porting-methodologies/
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Расположение данных в памяти
union {
struct TestStruct {
int mVar1;
long long mVar2;
int mVar3;
};
int mVar4[6];
} var;
Оригинальный код
union {
struct TestStruct {
int mVar1;
long long mVar2 __attribute__ ((aligned(8)));
int mVar3;
};
int mVar4[6];
} var;
Исправленный код
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
ARM* NEON vs. Intel® SSE
43
http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse-
automatic-porting-solution-tips-and-tricks
// VADD.I8 d0,d0,d0
int8x8_t vadd_s8(int8x8_t a, int8x8_t b);
#ifdef USE_MMX
#define vadd_s8 _mm_add_pi8 //MMX
#else
#define vadd_s8 _mm_add_epi8
#endif
NEONtoSSE.h
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Примеры
44
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
45
Демо (ffmpeg-2.1.4)
• Минимум внешних зависимостей
• Используется в нескольких проектах
• Простое построение
• configure
• make –j 16 install
http://www.ffmpeg.org
--disable-shared
--enable-static
--enable-pic
--disable-doc
--disable-symver
--enable-ffmpeg
--disable-ffplay
--disable-ffprobe
--disable-ffserver
--disable-avdevice
--disable-doc
--target-os=linux
--arch=atom
--enable-cross-compile
--cross-prefix=… --sysroot=…
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
46
Демо (ffmpeg-2.1.4)
Преобразование из формата h265 в формат h264
ICC: 60 sec, FPS 17
• fmpeg_icc -i surfing.265 -t 40 -f mp4 -threads 4 -y /dev/null
GCC: 87 sec, FPS 11
• fmpeg_gcc -i surfing.265 -t 40 -f mp4 -threads 4 -y /dev/null
Опции GCC 4.8:
• -O3 -march=atom -funroll-all-loops -ffast-math -fomit-frame-pointer -mfpmath=sse
Опции ICC 14.0.1:
• -O3 -xATOM_SSSE3 -no-prec-div
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
47
Демо (Bouncing balls)
http://software.intel.com/en-us/videos/intel-c-compiler-for-
android-5-optimizing-performance-icc-techniques-to-make-
your-app-soar
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Intel® Developer Zone (IDZ)
• Учебные материалы и техническая
поддержка
• Обмен опытом
• Специализированные сообщества
• Новости из мира технологий
Intel Android* Developer Website
• Перенос нативных приложений
• Советы и руководства
• Статьи на техническая темы
• Форумы и блоги, которые ведутся
инженерами Intel
• Информация о SW/HW продуктах Intel
для разработчиков на Android
www.intel.com/software/android
Дополнительная информация
Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice
Legal Disclaimer & Optimization Notice
INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY
INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL
DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES
RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR
OTHER INTELLECTUAL PROPERTY RIGHT.
Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors.
Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software,
operations and functions. Any change to any of those factors may cause the results to vary. You should consult other
information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of
that product when combined with other products.
Copyright © 2014, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel logo are
trademarks of Intel Corporation in the U.S. and other countries.
Optimization Notice
Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel
microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the
availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent
optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are
reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the
specific instruction sets covered by this notice.
Notice revision #20110804
50

Contenu connexe

En vedette

CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...
CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...
CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...CodeFest
 
Дмитрий Евдокимов
Дмитрий ЕвдокимовДмитрий Евдокимов
Дмитрий ЕвдокимовCodeFest
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsCodeFest
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) it-people
 
Getting it Booking right
Getting it Booking rightGetting it Booking right
Getting it Booking rightCodeFest
 
Развитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТРазвитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТCodeFest
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Графика средствами PHP
Графика средствами PHPГрафика средствами PHP
Графика средствами PHPVasya Petrov
 
CodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджера
CodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджераCodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджера
CodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджераCodeFest
 
Maurice de Beijer
Maurice de BeijerMaurice de Beijer
Maurice de BeijerCodeFest
 
Thomas Lobinger
Thomas LobingerThomas Lobinger
Thomas LobingerCodeFest
 
Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Ontico
 
Внутри Stack Overflow
Внутри Stack OverflowВнутри Stack Overflow
Внутри Stack OverflowCodeFest
 
Php intro rus
Php intro rusPhp intro rus
Php intro rusaDDDitive
 
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптах
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптахПриемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптах
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптахrevisium
 
20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продукт
20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продукт20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продукт
20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продуктCodeFest
 
Функциональное программирование в браузере
Функциональное программирование в браузереФункциональное программирование в браузере
Функциональное программирование в браузереCodeFest
 
Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Backend: Полнотекстовый поиск в Почте Mail.Ru
Backend: Полнотекстовый поиск в Почте Mail.RuBackend: Полнотекстовый поиск в Почте Mail.Ru
Backend: Полнотекстовый поиск в Почте Mail.RuCodeFest
 

En vedette (20)

CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...
CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...
CodeFest 2014. Axel Rauschmayer — JavaScript’s variables: scopes, environment...
 
Дмитрий Евдокимов
Дмитрий ЕвдокимовДмитрий Евдокимов
Дмитрий Евдокимов
 
Мониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application InsightsМониторинг приложений ASP.NET на основе сервиса Application Insights
Мониторинг приложений ASP.NET на основе сервиса Application Insights
 
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art) DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
DUMP-2012 - Только хардкор! - "Расширяем PHP" Сергей Горшков (index.art)
 
Getting it Booking right
Getting it Booking rightGetting it Booking right
Getting it Booking right
 
Развитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТРазвитие управления проектами и критериев качества в ИТ
Развитие управления проектами и критериев качества в ИТ
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Графика средствами PHP
Графика средствами PHPГрафика средствами PHP
Графика средствами PHP
 
CodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджера
CodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджераCodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджера
CodeFest 2014. Лысковский А. — Семь тезисов о карьере менеджера
 
Maurice de Beijer
Maurice de BeijerMaurice de Beijer
Maurice de Beijer
 
Thomas Lobinger
Thomas LobingerThomas Lobinger
Thomas Lobinger
 
Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)Демоны на PHP (Денис Глазков)
Демоны на PHP (Денис Глазков)
 
Внутри Stack Overflow
Внутри Stack OverflowВнутри Stack Overflow
Внутри Stack Overflow
 
Php intro rus
Php intro rusPhp intro rus
Php intro rus
 
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптах
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптахПриемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптах
Приемы, затрудняющие обнаружение и анализ вредоносного кода в PHP скриптах
 
20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продукт
20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продукт20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продукт
20 миллионов долларов за два года с нуля, или как мы делаем нужный людям продукт
 
Функциональное программирование в браузере
Функциональное программирование в браузереФункциональное программирование в браузере
Функциональное программирование в браузере
 
Base php 1
Base php 1Base php 1
Base php 1
 
Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Backend: Полнотекстовый поиск в Почте Mail.Ru
Backend: Полнотекстовый поиск в Почте Mail.RuBackend: Полнотекстовый поиск в Почте Mail.Ru
Backend: Полнотекстовый поиск в Почте Mail.Ru
 

Similaire à CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

MeeGo, AppUp & Atom – планы и перспективы
MeeGo, AppUp & Atom – планы и перспективыMeeGo, AppUp & Atom – планы и перспективы
MeeGo, AppUp & Atom – планы и перспективыElena Kotina
 
Cyber Bionics #iotconfua
Cyber Bionics #iotconfuaCyber Bionics #iotconfua
Cyber Bionics #iotconfuaAndy Shutka
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...CEE-SEC(R)
 
Светлана Емельянова, Intel
Светлана Емельянова, IntelСветлана Емельянова, Intel
Светлана Емельянова, IntelElena Voynova
 
Что нового в Android 5.0
Что нового в Android 5.0Что нового в Android 5.0
Что нового в Android 5.0Kirill Danilov
 
CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...
CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...
CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...CodeFest
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...DEPO Computers
 
OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...
OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...
OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...Mirantis IT Russia
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-AccessSerghei Urban
 
Импортозамещение КРОК
Импортозамещение КРОКИмпортозамещение КРОК
Импортозамещение КРОККРОК
 
InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30 InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30 sandy97
 
Организация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых средОрганизация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых средEkaterina Shelest
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииVoximplant
 
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)Denis Vasilyev
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Kuban Dzhakipov
 
Продуктовое направление проектирования и разработки ПАК
Продуктовое направление проектирования и разработки ПАКПродуктовое направление проектирования и разработки ПАК
Продуктовое направление проектирования и разработки ПАКInfoTeCS
 
продуктовое направление опир пак
продуктовое направление опир пакпродуктовое направление опир пак
продуктовое направление опир пакInfoTeCS
 
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesAlexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesWhite Nights Conference
 

Similaire à CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86 (20)

MeeGo, AppUp & Atom – планы и перспективы
MeeGo, AppUp & Atom – планы и перспективыMeeGo, AppUp & Atom – планы и перспективы
MeeGo, AppUp & Atom – планы и перспективы
 
Cyber Bionics #iotconfua
Cyber Bionics #iotconfuaCyber Bionics #iotconfua
Cyber Bionics #iotconfua
 
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
Настоящее и будущее решений для разработки кросс-платформенных мобильных гибр...
 
Светлана Емельянова, Intel
Светлана Емельянова, IntelСветлана Емельянова, Intel
Светлана Емельянова, Intel
 
Что нового в Android 5.0
Что нового в Android 5.0Что нового в Android 5.0
Что нового в Android 5.0
 
CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...
CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...
CodeFest 2012. Лоенко М. — Разработка и оптимизация Android* приложений под п...
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
Обзор новинок каталога 3 квартала 2014 г. продуктов и решений DEPO Computers ...
 
OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...
OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...
OpenStack Murano: управления приложениями в облаке на платформах Linux, Solar...
 
Embarcadero All-Access
Embarcadero All-AccessEmbarcadero All-Access
Embarcadero All-Access
 
Импортозамещение КРОК
Импортозамещение КРОКИмпортозамещение КРОК
Импортозамещение КРОК
 
[Add 4] crossplatform .net
[Add 4] crossplatform .net[Add 4] crossplatform .net
[Add 4] crossplatform .net
 
InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30 InterBase на разных устройствах быстрый старт. 2017-03-30
InterBase на разных устройствах быстрый старт. 2017-03-30
 
Организация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых средОрганизация автоматизированного развертывания ПО и создание тестовых сред
Организация автоматизированного развертывания ПО и создание тестовых сред
 
Видеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложенииВидеозвонки и шаринг экрана в мобильном приложении
Видеозвонки и шаринг экрана в мобильном приложении
 
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
 
Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?Android: Как создать свое первое приложение?
Android: Как создать свое первое приложение?
 
Продуктовое направление проектирования и разработки ПАК
Продуктовое направление проектирования и разработки ПАКПродуктовое направление проектирования и разработки ПАК
Продуктовое направление проектирования и разработки ПАК
 
продуктовое направление опир пак
продуктовое направление опир пакпродуктовое направление опир пак
продуктовое направление опир пак
 
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic GamesAlexey Savchenko, Evangelist, Unreal Engine/ Epic Games
Alexey Savchenko, Evangelist, Unreal Engine/ Epic Games
 

Plus de CodeFest

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита ПрокоповCodeFest
 
Денис Баталов
Денис БаталовДенис Баталов
Денис БаталовCodeFest
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена ГальцинаCodeFest
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр КалашниковCodeFest
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина ИвановаCodeFest
 
Marko Berković
Marko BerkovićMarko Berković
Marko BerkovićCodeFest
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис КортуновCodeFest
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр ЗиминCodeFest
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей КрапивенскийCodeFest
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей ИгнатовCodeFest
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай КрапивныйCodeFest
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander GraebeCodeFest
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим СмирновCodeFest
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин ОсиповCodeFest
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим ПугачевCodeFest
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene GroeschkeCodeFest
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван БондаренкоCodeFest
 
Mete Atamel
Mete AtamelMete Atamel
Mete AtamelCodeFest
 

Plus de CodeFest (20)

Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Никита Прокопов
Никита ПрокоповНикита Прокопов
Никита Прокопов
 
Денис Баталов
Денис БаталовДенис Баталов
Денис Баталов
 
Елена Гальцина
Елена ГальцинаЕлена Гальцина
Елена Гальцина
 
Александр Калашников
Александр КалашниковАлександр Калашников
Александр Калашников
 
Ирина Иванова
Ирина ИвановаИрина Иванова
Ирина Иванова
 
Marko Berković
Marko BerkovićMarko Berković
Marko Berković
 
Денис Кортунов
Денис КортуновДенис Кортунов
Денис Кортунов
 
Александр Зимин
Александр ЗиминАлександр Зимин
Александр Зимин
 
Сергей Крапивенский
Сергей КрапивенскийСергей Крапивенский
Сергей Крапивенский
 
Сергей Игнатов
Сергей ИгнатовСергей Игнатов
Сергей Игнатов
 
Николай Крапивный
Николай КрапивныйНиколай Крапивный
Николай Крапивный
 
Alexander Graebe
Alexander GraebeAlexander Graebe
Alexander Graebe
 
Вадим Смирнов
Вадим СмирновВадим Смирнов
Вадим Смирнов
 
Константин Осипов
Константин ОсиповКонстантин Осипов
Константин Осипов
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Rene Groeschke
Rene GroeschkeRene Groeschke
Rene Groeschke
 
Иван Бондаренко
Иван БондаренкоИван Бондаренко
Иван Бондаренко
 
Mete Atamel
Mete AtamelMete Atamel
Mete Atamel
 

CodeFest 2014. Коновалов А., Шкурко Д. — Разработка и оптимизация приложений для Android x86

  • 1. Оптимизация приложений для Android x86 Антон Коновалов, Дмитрий Шкурко Intel Corporation
  • 2. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 2 План выступления Обзор  Устройства на базе аппаратуры средств Intel  Инструменты разработки приложений на HTML5  Инструменты разработки приложений для Dalvik* и C/C++ приложений Разработка C/C++ приложений  Инструменты разработки C/C++ приложений  Демо
  • 3. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Телефоны и планшеты на базе x86 архитектуры 3
  • 4. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Следующее поколение u-архитектуры Atom*
  • 5. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Точка зрения пользователя Android Runtime Core Libraries Dalvik Virtual Machine Blink (WebKit) Приложения на базе Android Dalvik* и HTML5 • Должны работать без изменений Приложения, содержащие двоичный код, • Должны работать без изменений, но не с максимальной эффективностью Как правило, популярные приложения используют бинарные библиотеки
  • 6. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Типы приложений, поставляемые в бинарном виде 7 • Порт существующего кода с других платформ • Оптимизация без глобальной переделки • Требования к производительности в условиях ограничения на ресурсы • Обработка видео, аудио, сигналов • Алгоритмы симуляции • Прямой доступ к CPU/HW
  • 7. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Инструменты разработки приложений на HTML5 8
  • 8. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Intel® HTML5 Development Environment (XDK) Создание, отладка и распространение HTML5 приложений на базе общего кода для разных платформ xdk.intel.com
  • 9. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Инструменты разработки приложений для Dalvik* и C/C++ приложений 10
  • 10. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 11 Integrated Native Developer Experience (beta)
  • 11. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 12 Integrated Native Developer Experience (beta) Базовые инструменты разработки Media Pack for Android Threading Building Blocks Инструменты для анализа производительности и отладки Compute Code Builder Intel C/C++ компилятор
  • 12. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 13 Базовые инструменты разработки Android developer tools (ADT) Android NDK Android SDK Eclipse* IDE Android plugin for Visual Studio* Apache Ant* Intel* HAXM Android plugin for Eclipse*
  • 13. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Hardware Accelerated Execution Manager (Intel® HAXM) www.intel.com/software/android HAXM драйвер для эмулятора x86 Образ ОС Android для x86 Готовые образы для эмулятора входят в SDK • Образы для x86 предоставляются, начиная с API 10 Виртуализация ускоряет эмуляцию в 2-4 раза • HAXM на Mac и Windows ОС • KVM на Linux
  • 14. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 15 Демо (тесты на производительность памяти и процессора) HAXM off HAXM on
  • 15. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Compute Code Builder 16 http://software.intel.com/en-us/articles/getting-started-with-compute- code-builder
  • 16. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Возможности Compute Code Builder 17 • Preview JumpStart kit – учебный инструмент для пошагового построения OpenCL проекта • Code editing – Интеграция с популярными IDE: • Синтаксическая раскраска кода • Авто-дополнение кода • Обработка ошибок компиляции
  • 17. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Возможности Compute Code Builder (продолжение) 18 • Compile and Build – компиляция OpenCL ядер, подготовка бинарных файлов на Android устройствах • OpenCL API debug – отладка вызовов OpenCL API, инспектирование объектов и очередей OpenCL. • OpenCL kernel debug – пошаговая отладка на центральном процессоре • Kernel analyze – анализ производительности OpenCL ядер на машинах с графическим процессором Intel® Graphics
  • 18. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 19 Threading Building Blocks • Современная C++ библиотека параллельных алгоритмов для эффективного распараллеливания приложений • Программирование на уровне элементов работы, а не потоков ОС • Динамическое распределение нагрузки • Проверенные алгоритмы • Код доступен https://www.threadingbuildingblocks.org/ под GPL • Коммерческая версия http://software.intel.com/en-us/intel-tbb
  • 19. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Intel® Threading Building Blocks - Тизер #include <tbb/parallel_reduce.h> #include <tbb/blocked_range.h> double getPi() // int_0^1 4dx/(1+x^2) = pi { const int num_steps = 10000000; const double step = 1./num_steps; double pi = tbb::parallel_reduce( tbb::blocked_range<int>(0, num_steps), double(0), [&](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; // body returns updated value of the accumulator }, []( double s1, double s2 ) { return s1+s2; } ); return pi*step; }
  • 20. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Intel® TBB – Использование в приложениях В новых версиях Android обработка зависимостей между библиотеками осуществляется автоматически Android.mk#for including tbb in your project: include $(CLEAR_VARS) LOCAL_MODULE := tbb LOCAL_SRC_FILES := $(TBB_PATH)/lib/android/libtbb.so LOCAL_EXPORT_C_INCLUDES := $(TBB_PATH)/include include $(PREBUILT_SHARED_LIBRARY) #for calling tbb from your lib: LOCAL_CPP_FEATURES += rtti exceptions LOCAL_SHARED_LIBRARIES += tbb LOCAL_CFLAGS += -DTBB_USE_GCC_BUILTINS -std=c++11 APP_ABI := x86 APP_STL := gnustl_shared Application.mk System.loadLibrary("gnustl_shared"); System.loadLibrary("tbb"); System.loadLibrary("YourLib"); Java
  • 21. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 22 Media Pack Media Pack предоставляет код и примеры использования для: • Захвата видео потока с камеры и экрана • Редактирования видео • Включения потокового видео • Обработки звука Media Pack поддерживает x86 и ARM устройств на базе Android версии 4.3 http://software.intel.com/en-us/articles/intel-inde-media-pack-for- android-tutorials-building-samples http://software.intel.com/en-us/articles/intel-inde-media-pack-for- android-tutorials-running-samples
  • 22. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 23 Захвата видео потока http://software.intel.com/en-us/articles/intel-inde-media-pack-for- android-tutorials-video-capturing-for-libgdx-applications http://software.intel.com/en-us/articles/intel-inde-media-pack-for- android-tutorials-video-capturing-for-opengl-applications
  • 23. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 24 • Анализ производительности в реальном времени • Быстрые эксперименты с системными настройками для локализации проблем с CPU и GPU • Множество метрик для определения и оптимизации критичного кода • CPU, GPU, API, RAM, сеть, энергопотребление и т.д. Intel® Graphics Performance Analyzers Инструмент системного анализа ОС Android http://software.intel.com/en-us/vcsource/tools/intel-gpa
  • 24. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Метрики и системные настройки 25 Метрики  BUS/DRAM  CPU  Flash File System I/O  Network I/O  GPU  App Memory  OpenGL API and States  Power Системные настройки для анализа производительности и отладки  1x1 Scissor Rect  Disable Alpha Blending  Disable Alpha Test  Disable Draw Calls  Disable Z-Test  Show Wireframe  Texture 2x2  Hyper Threading Disable  CPU Frequency Override
  • 25. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Инструменты разработки нативных приложений 26
  • 26. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Android* NDK для разработки нативных приложений 27 Зачем он нужен? • Перенос существующего нативного кода с других платформ • Требования к производительности в условиях ограничения на ресурсы, например, на память • Обработка изображений, сигналов • Алгоритмы симуляции • Прямой доступ к CPU/HW • Оптимизация кода без изменения алгоритма http://developer.android.com/tools/sdk/ndk/index.html
  • 27. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Совместимость приложений со всеми устройствами 28 myapp.apk APP_ABI := all Application.mklibs/x86/mylib.so libs/arm/mylib.so libs/arm-v7a/mylib.so libs/mips/mylib.so libs/?/mylib.so
  • 28. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Специализация опций для разных архитектур 29 libs/x86/mylib.so libs/arm/mylib.so libs/arm-v7a/mylib.so libs/mips/mylib.so libs/?/mylib.so ifeq ($(TARGET_ARCH_ABI),x86) LOCAL_CFLAGS := -mtune=atom -msse3 endif ifeq ($(TARGET_ARCH_ABI),armeabi-v7a) LOCAL_CFLAGS := -march=armv7-a Endif Android.mk #ifdef __i386__ strlcat(buf, "__i386__", sizeof(buf)); #endif #ifdef __arm__ strlcat(buf, "__arm__", sizeof(buf)); #endif source.c http://software.intel.com/en-us/android/articles/creating-an-x86-and-arm-apk-using-the- intelr-compiler-and-gnu-gcc
  • 29. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice C/C++ компиляторы для Android x86 30 Поддержка x86 включена, начиная с NDK r6 • Включал или включает до сих пор • GCC 4.4.3, GCC 4.6, GCC 4.7, GCC 4.8 • Clang 3.1, Clang 3.2, Clang 3.3 • ICC 13.1, 14.0 • RenderScript* • Сейчас по умолчанию используется версия 4.6
  • 30. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Рекомендуемые опции GCC 31 Уровни оптимизации -O0, -O1, -O2, -O3, -Os -O0 уровень оптимизации по умолчанию Настройки и оптимизации для заданных микроархитектур • -march=atom (или –mtune=atom) • -march=slm (или –mtune=slm) Настройки точности арифметики • -ffast-math • -mfpmath=sse Другие полезные опции • -flto • -funroll-loops, -funroll-all-loops EEMBC® CoreMark®
  • 31. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 32 Intel® C/C++ Compiler Оптимизация приложений и системы в целом Высокая производительность • Простая рекомпиляция может дать прирост производительности • Совместимость с GNU* GCC компилятором • Intel® Cilk™ Plus – параллелизм данных и задач • Поддержка стандартов IEEE 754-2008, С++11 Оптимизации • Поддержка SSE инструкций от SSE до AVX2 • Автоматическая и полуавтоматическая векторизация • Межфайловые оптимизации • Оптимизации с использованием профиля
  • 32. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Рекомендуемые опции Intel C/C++ компилятора 33 Уровни оптимизации -O0, -O1, -O2, -O3, -Os • -O2 уровень оптимизации по умолчанию • если не включена поддержка отладки –g • -Ofast, -fast Настройки и оптимизации для заданных микроархитектур • -xATOM_SSSE3 • -xATOM_SSE4.2 Настройки точности арифметики • -fp-model fast=1|2 • -no-prec-div Другие полезные опции -ansi-alias, -ipo http://software.intel.com/en-us/android/articles/creating- an-x86-and-arm-apk-using-the-intelr-compiler-and-gnu-gcc
  • 33. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 34 Intel® Cilk™ Plus
  • 34. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 35 Intel® Cilk™ Plus int fib(int n) { if (n < 2) return n; int x = fib(n-1); int y = fid(n-2); return x + y; } int fib(int n) { if (n < 2) return n; int x = cilk_spawn fib(n-1); int y = fid(n-2); cilk_sync; return x + y; } Оригинальный код Оптимизированный код for (int i; i<8; ++i) { do_work(i); } cilk_for (int i; i<8; ++i) { do_work(i); } Оригинальный код Оптимизированный код
  • 35. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 36 Intel® Cilk™ Plus //declaring the function body __declspec((vector)) double ef_add(double x, double y) { return x + y; } //invoking the function using array notation //operations on the whole extent of the arrays a,b,c a[:] = ef_add(b[:], c[:]); //use the full array notation construct to also specify n as an extend and s as a stride a[0:n:s] = ef_add(b[0:n:s], c[0:n:s]); //use the cilk_for construction to invoke the SIMD-enabled function in data parallel context cilk_for (i = 0; i<n; ++i) { a[i] = ef_add(b[i], c[i]); }
  • 36. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 37 Intel® Cilk™ Plus void add_floats(float *a, float *b, float *c, float *d, float *e, int n) { int i; #pragma simd for (int i; i<8; i++) { a[i] = a[i] + b[i] + c[i] + d[i] + e[i]; } } http://software.intel.com/en-us/intel-cilk-plus
  • 37. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 40 Оптимизация приложений с Intel® Cilk™ Plus http://habrahabr.ru/company/intel/blog/202088/
  • 38. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 41 Перенос нативных Android* приложений на x86 • Изменение конфигурации построения (makefiles, файлы конфигурации) • Перенос C/C++ кода • Изменение типов данных • Изменение выравнивания типов данных • Перенос кода с интринсиками • Перенос ассемблерного кода http://software.intel.com/en-us/articles/ndk-android- application-porting-methodologies/
  • 39. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Расположение данных в памяти union { struct TestStruct { int mVar1; long long mVar2; int mVar3; }; int mVar4[6]; } var; Оригинальный код union { struct TestStruct { int mVar1; long long mVar2 __attribute__ ((aligned(8))); int mVar3; }; int mVar4[6]; } var; Исправленный код
  • 40. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice ARM* NEON vs. Intel® SSE 43 http://software.intel.com/en-us/blogs/2012/12/12/from-arm-neon-to-intel-mmxsse- automatic-porting-solution-tips-and-tricks // VADD.I8 d0,d0,d0 int8x8_t vadd_s8(int8x8_t a, int8x8_t b); #ifdef USE_MMX #define vadd_s8 _mm_add_pi8 //MMX #else #define vadd_s8 _mm_add_epi8 #endif NEONtoSSE.h
  • 41. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Примеры 44
  • 42. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 45 Демо (ffmpeg-2.1.4) • Минимум внешних зависимостей • Используется в нескольких проектах • Простое построение • configure • make –j 16 install http://www.ffmpeg.org --disable-shared --enable-static --enable-pic --disable-doc --disable-symver --enable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-avdevice --disable-doc --target-os=linux --arch=atom --enable-cross-compile --cross-prefix=… --sysroot=…
  • 43. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 46 Демо (ffmpeg-2.1.4) Преобразование из формата h265 в формат h264 ICC: 60 sec, FPS 17 • fmpeg_icc -i surfing.265 -t 40 -f mp4 -threads 4 -y /dev/null GCC: 87 sec, FPS 11 • fmpeg_gcc -i surfing.265 -t 40 -f mp4 -threads 4 -y /dev/null Опции GCC 4.8: • -O3 -march=atom -funroll-all-loops -ffast-math -fomit-frame-pointer -mfpmath=sse Опции ICC 14.0.1: • -O3 -xATOM_SSSE3 -no-prec-div
  • 44. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice 47 Демо (Bouncing balls) http://software.intel.com/en-us/videos/intel-c-compiler-for- android-5-optimizing-performance-icc-techniques-to-make- your-app-soar
  • 45. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Intel® Developer Zone (IDZ) • Учебные материалы и техническая поддержка • Обмен опытом • Специализированные сообщества • Новости из мира технологий Intel Android* Developer Website • Перенос нативных приложений • Советы и руководства • Статьи на техническая темы • Форумы и блоги, которые ведутся инженерами Intel • Информация о SW/HW продуктах Intel для разработчиков на Android www.intel.com/software/android Дополнительная информация
  • 46.
  • 47. Copyright © 2014, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others. Optimization Notice Legal Disclaimer & Optimization Notice INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. Copyright © 2014, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries. Optimization Notice Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Notice revision #20110804 50