Arm и eyesight разработали совместное решение для 3d распознавания жестов с помощью arm mali gpu

Графические ускорители ARM: Adreno, GeForce ULP, PowerVR и другие

Современные смартфоны и планшетные ПК просто-таки нельзя представить без графического ускорителя, который входит в состав однокристальной системы (system-on-a-chip). Сейчас графическое ядро требуется не только для запуска трехмерных игр, но и для прорисовки интерфейса операционной системы и воспроизведения видео сверхвысокого разрешения (4K).

Первопроходец Intel

В начале 2000-х мобильные телефоны и КПК обрабатывали графику в играх исключительно с помощью центрального процессора. При этом картинка в играх была предельно примитивной.

Лед тронулся в 2006 году, когда компания Intel представила мобильное графическое ядро 2700G с производительностью на уровне игровой консоли Sony PlayStation One.

Правда, операционные системы Windows Mobile и Symbian не смогли наполную раскрыть его потенциал.

Dell X50v – КПК с графическим ускорителем Intel 2700G

Мобильные графические ускорители стали эффективно использоваться лишь с выходом Apple iPhone и Android-смартфонов. Так, первое поколение iPhone строилось на базе процессора Samsung ARM 1176JZ(F)-S с графикой Mbx lite (от компании Imagination Technologies). Первым же графическим ядром для Android стало Adreno 130, о котором речь пойдет чуть ниже.

Qualcomm Adreno

В 2005 году компания Qualcomm, до этого занимавшаяся исключительно оборудованием для сотовых сетей, получила у ARM Limited лицензию на производство и, что важнее всего, модификацию процессоров архитектуры ARM. Несколько лет у нее ушло на разработку собственной архитектуры под названием Scorpion (набор инструкций ARMv7) и внедрение энергоэффективного графического ускорителя ATI Imageon.

В 2008 году в продажу поступил WindowsMobile-коммуникатор HTC Touch Diamond с процессором Qualcomm MSM7201A и графикой Adreno 130 (переименованная ATI Imageon).

А вскоре мир увидел первый Android-смартфон – HTC Dream (операторское название T-Mobile G1) с точно такой же однокристальной системой.

Окрыленная успехом на рынке Android, компания Qualcomm выкупила подразделение мобильной графики AMD.

Современная графика Qualcomm представлена как бюджетными моделями (Adreno 203, 205 и 305), так и настоящими 3D-монстрами (Adreno 320, 330 и 420).

В отличие от родоначальницы Adreno 130, в которой применялась устаревшая конвейерная архитектура с фиксированными функциями блоков, современная графика Qualcomm строится на унифицированной шейдерной архитектуре. Исключением стала лишь Adreno 205 с VLIW-архитектурой.

NVIDIA GeForce ULP

Компания NVIDIA, многолетний лидер индустрии компьютерной графики, не могла долго оставаться в стороне быстрорастущего рынка мобильных гаджетов.

И если первое поколение чипов NVIDIA Tegra нигде кроме медиаплеера Microsoft Zune HD не применялось, то второе поколение произвело настоящий фурор. Так, LG Optimus 2X на базе Tegra 2 стал первым в мире двухъядерным Android-смартфоном.

Да и львиная доля модельного ряда Android-планшетов 2011 года строились именно на втором поколении Tegra. Мобильное графическое ядро Tegra 2 получило 8 ядер и громогласное имя GeForce ULP.

В третьем поколении однокристальных систем NVIDIA число ядер графики увеличилось до 12, а в четвертом – до 72 штук. Настоящим же откровением стал анонс чипа Tegra K1 с графикой аж на 192 ядра и, что важнее всего, взрослой архитектурой Kepler.

Наконец-то появилась возможность сравнивать смартфонно-планшетную графику NVIDIA с ее же видеокартами для ПК.

Если не делать поправку на невысокую частоту графического ядра и видеопамяти Tegra K1, то можно предположить, что она всего лишь вдвое медленнее ноутбучной NVIDIA GeForce 740M (384 ядра Kepler).

Imagination PowerVR

Несмотря на сильные рыночные позиции Qualcomm и авторитет NVIDIA, именно мобильная графика PowerVR от компании Imagination Technologies является самой распространенной в мире. По некоторым данным, ее доля достигает 50 процентов рынка. Впрочем, оно и не странно, ведь графику PowerVR применяют в своих однокристальных системах сразу несколько крупных производителей.

Так, графические ускорители PowerVR SGX 531 и SGX 544MP в своих ARM-процессорах использует компания MediaTek. Модель PowerVR SGX 545 вполне себе неплохо подружилась с процессорными ядрами х86 в чипах Intel Atom. Нельзя забывать и про портативную игровую консоль Sony PlayStation Vita с графикой PowerVR SGX 543MP4+.

Приоритетным же заказчиком для Imagination остается компания Apple. Именно ей Imagination предоставляет право первыми использовать свои новейшие разработки. Так было в 2011 году с PowerVR SGX 543MP2 с двумя кластерами ядер (для iPad 2 и iPhone 4S), точно также произошло в прошлом году с PowerVR G6430 с уже четырьмя кластерами (для iPad Air, iPad mini 2gen и iPhone 5S).

А ведь в арсенале Imagination имеется еще более мощная графика – PowerVR GX6650 с 192 ядрами, как у NVIDIA Tegra K1. Так почему же качество картинки в мобильных играх так медленно двигается вперед? Об этом мы тоже расскажем ниже.

ARM Mali

Британская компания ARM Limited, которая в 1980-х и придумала одноименную процессорную архитектуру, проектирует не только процессорные, но и графические ядра.

А ее партнеры сами решают, лицензировать только первое, или еще и второе.

Пробой пера для ARM Limited стала графика Mali 55, которая применялась в мобильном телефоне LG Renoir не столько для игр, сколько для плавности анимации меню.

Источник: https://gagadget.com/cellphones/14136-graficheskie-uskoriteli-arm-adreno-geforce-ulp-powervr-i-drugie/

Мобильная графика Mali или Adreno — что лучше?

В большинстве чипсетов для современных смартфонов используется процессорная архитектура ARM, которая разработана одноименной компанией. Некоторыми компаниями осуществляется лицензирование готовых решений ARM, тогда как другие практикуют создание своих, используя разработки компании в качестве основы.

К базовым решениям, которые созданы ARM, относятся процессорные ядра и графические ускорители Mali. Они используются такими, например, чипмейкерами как Samsung, MediaTek, Huawei (HiSilicon Kirin), Spreadtrum и Nvidia.

У американского чипмейкера Qualcomm другой подход к этому вопросу — топовых чипсетов она практикует использование собственных вычислительных ядер Kryo и фирменной графики Adreno, которая разработана она специалистами компании.

Дать однозначный ответ на означенный вопрос очень сложно. Так же как и принимать решение, чьим графическим чипам следует отдать пальму первенства.

Надо сказать что тут имеет значение не только ситуация, но и конкретные поставленные задачи. И в зависимости от этого, чаша весов может склониться в одну или другую сторону.

Данная статья предназначена оказать помощь тем, кто хочет полностью разобраться в этом вопросе.

Плюсы и минусы графики Qualcomm Adreno

Плюсы

Высокий показатель производительности. Теоретические расчёты говорят о более высоком максимальном быстродействии графики Adreno относительно Mali. Они справедливы, если используются в чипсетах одинакового класса.

Так, для Snapdragon 625 показатель вычислительной мощности Adreno 506 равен порядка 130 GFLOPS (речь идёт о миллиардах вычислений за одну секунду с плавающей запятой).

Его же конкурент MediaTek Helio P10, имеющий графику Mali T860 MP2 имеет показатель 47 GFLOPS.

Поддерживаются более совершенные API. У чипов Adreno последнего поколения имеется больший набор API (программные инструменты для разработки), к тому же версии их новее.

Например, с момента выхода Adreno из пятисотой версии прошёл уже год. И им поддерживаются Open GL ES 3.2, DirectX12, OpenCL 2.0 и Vulkan.

Тогда как Mali не поддерживается DirectX12, да и OpenCL доступны только для серии G 2016, которая появилась в относительно недавно.

Они меньше перегреваются. У графических процессоров Adreno не так высока склонность к перегреву, как у Mali. При этом надо сказать, что у Qualcomm имелись некоторые процессоры, которым было свойственно впадать в троттлинг.

Но это были процессоры, отличавшиеся повышенной мощностью, соответственно и ядра центрального процессора обладали горячим нравом.

Практически на одном уровне с конкурентами они работали, когда соблюдался режим сниженной производительности.

Минусы

Довольно высокая стоимость. На разработку своей графики Qualcomm приходится затрачивать большее количество денег, если сравнивать с суммой, в которую обходится конкурентам лицензирование ARM Mali. По этой причине стоимость чипсетов от американского производителя выше чем, скажем у MediaTek.

Софт оптимизируется хуже. Порядка 25% от всех реализуемых в мире смартфонов производятся Samsung, а они пользуются графикой Mali. Компанией Huawei в своих чипах Kirin также практикуется внедрение стоковых ГП от ARM. И MediaTek предпочитают использовать ARM-графику, не пользуясь никакой другой.

Результатом этого является большая доля Mali на мировом рынке. А потому разработчиками игр отдаётся предпочтение при оптимизации своей продукции Mali. Можно сказать, что имея меньшее количество GFLOPS, Mali в чипах, относящихся к среднему и бюджетному уровню незначительно хуже в играх, чем Adreno.

В рендеринге Fillrate меньше. Чипы Adreno обладают относительно слабым доменом текстурирования, на котором лежит ответственность за процесс формирования конечного изображения. Adreno 530 под силу провести рендеринг порядка шестисот миллионов треугольников, формирующих 3D-картинку, за одну секунду. А Mali G71 — 850 000 000.

Плюсы и минусы графики ARM Mali

Плюсы

Высокий показатель распространённости. В связи с, эталонностью графики Mali для чипсетов смартфонов, оптимизация игр под неё происходит лучше, чем под Adreno.

Невысокий ценовой порог. Стоимость лицензии на производство чипсетов с Mali обходится достаточно дёшево.

Что позволяет даже незначительными компаниям, не имеющим возможности производить миллионные вложения, производить чипы с Mali.

А это провоцирует подстегивание конкуренции и способствует стимуляции компании ARM подвигая её на разработку новых решений. К тому же пользователям графики Mali приходится в итоге тратить меньше денег.

Высокий уровень тактовых частот. Частоты, используемые в графических процессорах Mali равны 1 ГГц. А у конкурентов этот показатель не превышает 650 МГц. Более высокая частота на чипах Mali позволяет лучше проводить игры, которыми многопоточная обработка 3D поддерживается хуже.

Мощность домена рендеринга. Топовому ARM Mali G71 под силу произвести рендирование около восьмисот пятидесяти треугольников на протяжении одной секунды, что идентично двадцати семи миллиардам пикселей. И это притом что Adreno 530 в состоянии обработать только 8 миллиардов. А значит, его лучше использовать в процессе работы с графикой HD-текстур, имеющих высокое разрешение.

Минусы

Шейдерных ядер меньше. Графические процессоры Mali имеют меньшее количество шейдерных ядер, чем у продукции фирм-конкурентов. Mali хуже и в части максимальной производительности в GFLOPS. Кроме того, они хуже приспосабливаются к играм, которые способны к эффективному распараллеливанию нагрузок на ГП.

Конфигурации ограничены. Собственно отставание графических процессоров Mali от Adreno незначительно.

Однако в реальной жизни производители предпочитают использование готовых решений не очень сложных, имеющих не очень большое количество вычислительных кластеров.

Так, в Mali T720 предусмотрено содержание порядка восьми блоков, однако наибольшее распространение получил Mali T720 MP2, имеющий всего два кластера.

Предрасположенность к перегреву. Высокий уровень тактовых частот решения Mali более универсальны, однако, в качестве побочного эффекта, они обладают способностью перегреваться. Именно по этой причине не получается встроить в чипсет значительное число кластеров графики.

Mali или Adreno — что лучше?

На основании всего вышеизложенного, можно сказать, что Adreno обладает более мощными вычислительными блоками, лучше поддерживает новые технологии и не создаёт проблем с перегревом. При этом на стороне Mali популярность, доступность, мощность домена рендеринга, а также тактовая частота. И, как следствие, первоочередная оптимизация софта под эту графику.

Но надо сказать, что это только теоретические выкладки.

Реальность же указывает на то, что для использования в моделях, относящихся к бюджетному и начально-среднему уровням, предпочтение отдаётся Mali.

Тогда как прерогатива Adreno — модели твёрдого среднего класса и флагманские. И это вполне естественно, ведь современная действительность не позволяет рассматривать графику отдельно от чипсета.

Источник: https://night-smart.ru/mali-vs-adreno/

ARM и eyeSight разработали совместное решение для 3D распознавания жестов с помощью ARM Mali GPU

Компания eyeSight, в партнерстве с ARM, представила завершенное решение для распознавания жестов с использованием графического процессора Mali T600.

Производители, использующие процессоры ARM Mali, получили преимущество функциональных возможностей с естественным ощущением и улучшенным управлением жестами от компании eyesight, оптимизированными с графическим процессором GPU Compute для усовершенствованной эксплуатационной надежности, точности и энергоэффективности.

Усовершенствованная эффективность вычисления жестов путем использования графического процессора также улучшит разнообразие новых приемов использования, таких как лицевое и эмоциональное распознавание, дистанционное слежение за перемещением пальцев, и даже распознавание 3D перемещения (таких как, указание пальцем для выделения области).

Графический процессор ARM Mali T600 GPU Compute, который имеет оптимизированную подсистему от компании eyesight, позволит выполнять распознавание жестов мобильными телефонами, планшетами и телевизорами и многими другими устройствами.

С помощью данной технологии устройства с процессорами Mali могут распознавать большой набор языка жестов, включая направленную жестикуляцию (такую как движение вверх, направо, волной и т.д.

), знаки руками (например, ‘большой палец вверх’), и слежение за перемещением рук и даже пальцев (как точность положения курсора мыши).

“Применение ARM предоставило возможность оптимизации нашего программного обеспечения для использования его как части программного пакета ARM Mali GPU.

Это показывает, что ARM способен удовлетворить рыночные требования к нашему программному обеспечению и технологии жестов, которые быстро становятся отличительной чертой устройств различных типов”, завил Гидеон Шмуель (Gideon Shmuel), генеральный директор компании eyeSight.

“Внедряя распознавание жестов в приборы на основе ARM, компании eyeSight и ARM прокладывают путь для систем распознавания жестов в массы. Этому будет способствовать наше сотрудничество с компанией ARM’.

Устройство от компании eyesight для предварительной обработки сигнала располагается между камерой и устройством контроля жестов, ‘улучшает’ изображение, чтобы формы и движения руки и пальцев могли быть распознаны, даже когда оригинальное изображение неудовлетворительное, улучшая общую производительность в условиях с низкой освещенностью, или когда используются камеры с низким разрешением. Графические процессоры Mali будут способны обрабатывать жесты в трех плоскостях, с помощью устройств с двумя (‘стереоскопическими’) камерами и устройствами с инфракрасным восприятием глубины.

Источник новости

Источник: http://cxem.net/electronic_news/electronic_news194.php

Представлено процессорное ядро ARM Cortex-A76 и GPU Mali-G76

Компания ARM представила новые процессорные и графические ядра для мобильных однокристальных систем. Новое процессорное ядро называется Cortex-A76. Оно быстрее Cortex-A75 в среднем на 35%, энергоэффективнее не 40%, а в задачах машинного обучения быстрее вчетверо.

Новое ядро рассчитано на техпроцесс 7 нм и работу на частоте от 3 ГГц. Правда, некоторые специалисты сомневаются, что в первых платформах с Cortex-A76 эти ядра будут работать на столь высокой частоте.

Поддерживается технология DynamIQ, но пока я ни одного решения с её использованием не видел. Точнее сказать, я не видел ни одной платформы, которая была бы построена с использованием тех возможностей, которые отличают DynamIQ от big.LITTLE. Если кто не знает, big.

LITTLE позволяет объединять в кластеры разные процессорные ядра одного семейства. К примеру, Cortex-A75/A73 и Cortex-A55/A53. А вот DynamIQ позволяет объединять ядра разных семейств. К примеру, в процессор с восемью ядрами Cortex-A55 добавить ядро Cortex-M, которое выполняло бы определённые нересурсоёмкие задачи.

Сейчас при необходимости такое ядро добавляется отдельно.

В общем, время покажет. А пока добавлю также, что новое процессорное ядро интересно ещё и тем, что оно разработано с нуля на основе новой архитектуры Armv8-A (Harvard). ARM утверждает, что CPU с Cortex-A76 смогут посоперничать с процессорами Intel, но мне пока мало верится.

Вторая новинка — GPU Mali-G76. Это новое графическое ядро, основанное на той же архитектуре, что и предыдущее решение ARM. Компания почему-то не говорит о приросте производительности, указывая лишь, что Mali-G76 на 39-65% опережает Mali-G72 по соотношению производительности к площади GPU.

Также говорится о 30-процентном улучшении энергоэффективности и росте производительности в задачах машинного обучения в 2,7 раза. Mali-G76 поддерживает OpenGL ES 1.1, 2.0, 3.1, 3.2, Vulkan 1.1 и OpenCL 1.1, 1.2, 2.0 Full Profile.

Максимальная конфигурация такого GPU может включать 20 ядер, но таких платформ будет крайне мало. Если вообще будут.

Самая незаметная, но от этого не менее интересная новинка — видеоядро Mali-V76. Оно выделяется тем, что способно работать с видео 8K, причём не только воспроизводить, но и декодировать при 60 к/с.

Все эти прелести мы увидим в мобильных платформах в следующем году. Причём я не возьмусь предполагать, кто первый какое из этих решений использует.

Samsung уже два года сама делает высокопроизводительные процессорные ядра Mangust, беря у ARM лишь энергоэффективные. Но именно Samsung, скорее всего, в своей новой платформе для Galaxy S10 первой задействует GPU Mali-G76.

Если, конечно, уже не разработала собственное графическое ядро, потому что такие слухи ходят по сети уже не первый год.

А первой, кто использует Cortex-A76, может быть либо MediaTek, либо Huawei. Учитывая, что вторая зачастую выкатывает новую топовую платформу Kirin во второй половине года, пока ставлю на MediaTek.

Источник: https://keddr.com/2018/06/predstavleno-protsessornoe-yadro-arm-cortex-a76-i-gpu-mali-g76/

Рейтинг графических процессоров смартфонов и планшетов

При чтении спецификаций смартфонов и планшетов большинство пользователей прежде всего обращают свое внимание на характеристики центрального процессора и количество его ядер, объем оперативной памяти, размер экрана, встроенный накопитель и камеру. При этом они подчас забывают о таком важном компоненте девайса, как графический процессор (GPU).

Обычной графический процессор от той или иной компании ассоциируется с определенным центральным процессором. К примеру, известные процессоры Qualcomm Snapdragon всегда интегрируются с графическими чипами Adreno.

Тайваньская компания MediaTek обычно поставляла свои чипсеты с графическими процессорами PowerVR от Imagination Technologies, а с недавних пор — с ARM Mali.

К китайским процессорам Allwiner обычно прилагаются графические процессоры Mali. Центральные процессоры Broadcom работают вместе с графическими процессорами VideoCore Graphic. Intel использует со своими мобильными процессорами графические процессоры PowerVR и графику NVIDIA.

Ресурсом s-smartphone.com был составлен рейтинг из трех десятков лучших по своим параметрам графических процессоров, предназначенных для использования в смартфонах и планшетах.

Каждому современному пользователю важно знать о том, зачем нужен графический процессор и как он работает.

Данный рейтинг основан на данных ресурсов Notebookcheck и Androidauthority, полученных в результате тестирования бенчмарками GFXBench, 3DMark и AnTuTu.

1. Qualcomm Adreno 430, используемый в смартфоне Xperia Z3+ и делающий его одним из лучших игровых девайсов;

2. NVIDIA GeForce Tegra K1, 192-ядерный процессор, способный работать также в игровых консолях;

3. PowerVR GX6450;

4. Qualcomm Adreno 420;

5. ARM Mali-T760 — графический процессор наиболее привлекательных смартфонов сезона Samsung Galaxy S6 и Edge;

6. PowerVR G6430, используемый в планшете Nokia N1;

7. Qualcomm Adreno 330;

8. PowerVR G6200;

9. ARM Mali-T628;

10. PowerVR GSX 544 MP4;

11. ARM Mali-T604;

12. NVIDIA GeForce Tegra 4;

13. PowerVR SGX543 MP4;

14. Qualcomm Adreno 320;

15. PowerVR SGX543 MP2;

16. PowerVR SGX545;

17. PowerVR SGX544;

18. Qualcomm Adreno 305;

19. Qualcomm Adreno 225;

20. ARM Mali-400 MP4;

21. NVIDIA GeForce ULP (Tegra 3);

22. Broadcom VideoCore IV;

23. Qualcomm Adreno 220;

24. ARM Mali-400 MP2;

25. NVIDIA GeForce ULP (Tegra 2);

26. PowerVR GSX540;

27. Qualcomm Adreno 205;

28. Qualcomm Adreno 203;

29. PowerVR 531;

30. Qualcomm Adreno 200.

Графический процессор является важнейшим компонентом смартфона. От его технических возможностей зависит производительность графики и в первую очередь наиболее графически интенсивных приложений — игр.

Поскольку рейтинг составлялся в первой половине года, с тех пор в нем могли произойти некоторые изменения.

Как вы считаете, соответствует ли позиции процессоров в данном рейтинге их реальной производительности?

Рейтинг графических процессоров смартфонов и планшетов Олег Довбня

Источник: https://AndroidInsider.ru/zhelezo/reyting-graficheskih-protsessorov-smartfonov-i-planshetov.html

1. OpenCV шаг за шагом. Введение

Оглавление
1. OpenCV шаг за шагом. Введение.

Про OpenCV (Open Source Computer Vision Library) было немного рассказано здесь.

Это библиотека, которая до 1-й версии разарабатывалась в Центре разработки программного обеспечения Intel (причём, российской командой в Нижнем Новгороде).

OpenCV написана на языке высокого уровня (C/C++) и содержит алгоритмы для: интерпретации изображений, калибровки камеры по эталону, устранение оптических искажений, определение сходства, анализ перемещения объекта, определение формы объекта и слежение за объектом, 3D-реконструкция, сегментация объекта, распознавание жестов и т.д.

Эта библиотека очень популярна за счёт своей открытости и возможности бесплатно использовать как в учебных, так и коммерческих целях.

Фактически, OpenCV – это набор типов данных, функций и классов для обработки изображений алгоритмами компьютерного зрения.

Основные модули библиотеки:

cxcore — ядро

* содержит базовые структуры данных и алгоритмы: — базовые операции над многомерными числовыми массивами — матричная алгебра, математические ф-ции, генераторы случайных чисел — Запись/восстановление структур данных в/из XML — базовые функции 2D графики

CV — модуль обработки изображений и компьютерного зрения

— базовые операции над изображениями (фильтрация, геометрические преобразования, преобразование цветовых пространств и т. д.) — анализ изображений (выбор отличительных признаков, морфология, поиск контуров, гистограммы) — анализ движения, слежение за объектами — обнаружение объектов, в частности лиц — калибровка камер, элементы восстановления пространственной структуры

Highgui — модуль для ввода/вывода изображений и видео, создания пользовательского интерфейса

— захват видео с камер и из видео файлов, чтение/запись статических изображений. — функции для организации простого UI (все демо приложения используют HighGUI)

Cvaux — экспериментальные и устаревшие функции

— пространств. зрение: стерео калибрация, само калибрация — поиск стерео-соответствия, клики в графах — нахождение и описание черт лица

CvCam — захват видео

— позволяет осуществлять захват видео с цифровых видео-камер ( поддержка прекращена и в последних версиях этот модуль отсутствует )

Текущая (на момент правки статьи) стабильная версия 2.4.1.

Скачать библиотеку можно здесь:

http://sourceforge.net/projects/opencvlibrary/ В версии 2.2 структура библиотека реорганизована — теперь вместо больших универсальных модулей (cxcore, Cvaux, Highgui, Cvaux) библиотека OpenCV разделена на небольшие модули по функцианальному использованию:

opencv_core — ядро: базовые структуры, вычисления (математические функции, генерация псевдослучайных чисел, DFT, DCT, ввод/вывод в XML и т.п.)

opencv_imgproc — обработка изображений (фильтры, преобразования и т. д.).
opencv_highgui — простой UI, загрузка/сохранение изображений и видео.
opencv_ml — методы и модели машинного обучения (SVM, деревья принятия решений и т. д.).
opencv_features2d — различные дескрипторы (SURF).
opencv_video — анализ движения и отслеживание объектов (оптический поток, шаблоны движения, устранение фона).
opencv_objdetect — детектирование объектов на изображении (вейвлеты Хаара, HOG и т. д.).
opencv_calib3d — калибровка камеры, поиск стерео-соответстсвия и элементы обработки трехмерных данных.
opencv_flann — библиотека быстрого поиска ближайших соседей (FLANN).
opencv_contrib — сопутствующий код, еще не готовый для применения.
opencv_legacy — устаревший код, сохраненный ради обратной совместимости.
opencv_gpu — ускорение некоторых функций OpenCV за счет CUDA (NVidia).

Читать далее: 2. OpenCV шаг за шагом. Установка.

Книга про OpenCV:

Gary Bradski, Adrian Kaehler «Learning OpenCV. Computer vision with the OpenCV library.»

Ссылки

ru.wikipedia.org/wiki/OpenCV
opencv.org
docs.opencv.org
www.compvision.ru/forum/index.php?showforum=4

Источник: http://robocraft.ru/blog/computervision/264.html

Чем архитектура ARM отличается от x86

В наше время существует две самые популярные архитектуры процессоров. Это x86, которая была разработана еще 80х годах и используется в персональных компьютерах и ARM — более современная, которая позволяет сделать процессоры меньше и экономнее. Она используется в большинстве мобильных устройств или планшетов.

Обе архитектуры имеют свои плюсы и минусы, а также сферы применения, но есть и общие черты. Многие специалисты говорят, что за ARM будущее, но у нее остаются некоторые недостатки, которых нет в x86. В нашей сегодняшней статье мы рассмотрим чем архитектура arm отличается от x86. Рассмотрим принципиальные отличия ARM или x86, а также попытаемся определить что лучше.

Что такое архитектура?

Процессор — это основной компонент любого вычислительного устройства, будь то смартфон или компьютер. От его производительности зависит то, насколько быстро будет работать устройство и сколько оно сможет работать от батареи.

Если говорить просто, то архитектура процессора — это набор инструкций, которые могут использоваться при составлении программ и реализованы на аппаратном уровне с помощью определенных сочетаний транзисторов процессора.

Именно они позволяют программам взаимодействовать с аппаратным обеспечением и определяют каким образом будут передаваться данные в память и считываться оттуда.

На данный момент существуют два типа архитектур: CISC (Complex Instruction Set Computing) и RISC (Reduced Instruction Set Computing).

Первая предполагает, что в процессоре будут реализованы инструкции на все случаи жизни, вторая, RISC — ставит перед разработчиками задачу создания процессора с набором минимально необходимых для работы команд. Инструкции RISC имеют меньший размер и более просты.

Архитектура x86

Архитектура процессора x86 была разработана в 1978 году и впервые появилась в процессорах компании Intel и относится к типу CISC. Ее название взято от модели первого процессора с этой архитектурой — Intel 8086.

 Со временем, за неимением лучшей альтернативы эту архитектуру начали поддерживать и другие производители процессоров, например, AMD. Сейчас она является стандартом для настольных компьютеров, ноутбуков, нетбуков, серверов и других подобных устройств.

Но также иногда процессоры x86 применяются в планшетах, это довольно привычная практика.

Первый процессор Intel 8086 имел разрядность 16 бит, далее в 2000 годах вышел процессор 32 битной архитектуры, и еще позже появилась архитектура 64 бит.

Мы подробно рассматривали разрядность процессоров в отдельной статье.

За это время архитектура очень сильно развилась были добавлены новые наборы инструкций и расширения, которые позволяют очень сильно увеличить производительность работы процессора.

В x86 есть несколько существенных недостатков. Во-первых — это сложность команд, их запутанность, которая возникла из-за длинной истории развития.

Во-вторых, такие процессоры потребляют слишком много энергии и из-за этого выделяют много теплоты. Инженеры x86 изначально пошли по пути получения максимальной производительности, а скорость требует ресурсов.

Перед тем, как рассмотреть отличия arm x86, поговорим об архитектуре ARM.

Архитектура ARM

Эта архитектура была представлена чуть позже за x86 — в 1985 году. Она была разработана известной в Британии компанией Acorn, тогда эта архитектура называлась Arcon Risk Machine и принадлежала к типу RISC, но затем была выпущена ее улучшенная версия Advanted RISC Machine, которая сейчас и известна как ARM.

При разработке этой архитектуры инженеры ставили перед собой цель устранить все недостатки x86 и создать совершенно новую и максимально эффективную архитектуру. ARM чипы получили минимальное энергопотребление и низкую цену, но имели низкую производительность работы по сравнению с x86, поэтому изначально они не завоевали большой популярности на персональных компьютерах.

В отличие от x86, разработчики изначально пытались получить минимальные затраты на ресурсы, они имеют меньше инструкций процессора, меньше транзисторов, но и соответственно меньше всяких дополнительных возможностей. Но за последние годы производительность процессоров ARM улучшалась. Учитывая это, и низкое энергопотребление они начали очень широко применяться в мобильных устройствах, таких как планшеты и смартфоны.

Отличия ARM и x86

А теперь, когда мы рассмотрели историю развития этих архитектур и их принципиальные отличия, давайте сделаем подробное сравнение ARM и x86, по различным их характеристикам, чтобы определить что лучше и более точно понять в чем их разница.

Производство

Производство x86 vs arm отличается. Процессоры x86 производят только две компании Intel и AMD. Изначально эта была одна компания, но это совсем другая история. Право на выпуск таких процессоров есть только у этих компаний, а это значит, что и направлением развития инфраструктуры будут управлять только они.

ARM работает совсем по-другому. Компания, разрабатывающая ARM, не выпускает ничего. Они просто выдают разрешение на разработку процессоров этой архитектуры, а уже производители могут делать все, что им нужно, например, выпускать специфические чипы с нужными им модулями.

Количество инструкций

Это главные различия архитектуры arm и x86. Процессоры x86 развивались стремительно, как более мощные и производительные.

Разработчики добавили большое количество инструкций процессора, причем здесь есть не просто базовый набор, а достаточно много команд, без которых можно было бы обойтись. Изначально это делалось чтобы уменьшить объем памяти занимаемый программами на диске.

Также было разработано много вариантов защит и виртуализаций, оптимизаций и многое другое. Все это требует дополнительных транзисторов и энергии.

ARM более прост. Здесь намного меньше инструкций процессора, только те, которые нужны операционной системе и реально используются. Если сравнивать x86, то там используется только 30% от всех возможных инструкций. Их проще выучить, если вы решили писать программы вручную, а также для их реализации нужно меньше транзисторов.

Потребление энергии

Из предыдущего пункта выплывает еще один вывод. Чем больше транзисторов на плате, тем больше ее площадь и потребление энергии, правильно и обратное.

Процессоры x86 потребляют намного больше энергии, чем ARM. Но на потребление энергии также влияет размер самого транзистора. Например, процессор Intel i7 потребляет 47 Ватт, а любой процессор ARM для смартфонов — не более 3 Ватт.

Раньше выпускались платы с размером одного элемента 80 нм, затем Intel добилась уменьшения до 22 нм, а в этом году ученые получили возможность создать плату с размером элемента 1 нанометр.

Это очень сильно уменьшит энергопотребление без потерь производительности.

За последние годы потребление энергии процессорами x86 очень сильно уменьшилось, например, новые процессоры Intel Haswell могут работать дольше от батареи. Сейчас разница arm vs x86 постепенно стирается.

Тепловыделение

Количество транзисторов влияет еще на один параметр — это выделение тепла. Современные устройства не могут преобразовывать всю энергию в эффективное действие, часть ее рассеивается в виде тепла. КПД плат одинаковый, а значит чем меньше транзисторов и чем меньше их размер — тем меньше тепла будет выделять процессор. Тут уже не возникает вопрос ARM или x86 будет выделять меньше теплоты.

Производительность процессоров

ARM изначально не были заточены для максимальной производительности, это область преуспевания x86. Отчасти этому причина меньше количество транзисторов. Но в последнее время производительность ARM процессоров растет, и они уже могут полноценно использоваться в ноутбуках или на серверах.

Выводы

В этой статье мы рассмотрели чем отличается ARM от x86. Отличия довольно серьезные. Но в последнее время грань между обоими архитектурами стирается.

ARM процессоры становятся более производительными и быстрыми, а x86 благодаря уменьшению размера структурного элемента платы начинают потреблять меньше энергии и выделять меньше тепла.

Уже можно встретить ARM процессор на серверах и в ноутбуках, а x86 на планшетах и в смартфонах.

А как вы относитесь к этим x86 и ARM? За какой технологией будущее по вашему мнению? Напишите в комментариях! Кстати, Линус Торвальдс предпочитает x86.

На завершение видео о развитии арихтектуры ARM:

Источник: https://losst.ru/chem-arhitektura-arm-otlichaetsya-ot-x86

Как выбрать смартфон или планшет? Часть 10 – Графический ускоритель

Автор: adminkost2 26.06.2017

В предыдущем выпуске мы рассмотрели процессор. Выяснили место и значение в мобильной платформе. В этой части погорим о графическом ускорителе (GPU, видеоускоритель или видеопроцессор).

Как и процессор, GPU входит в мобильную платформу в виде отдельного блока, чаще в составе двух и более ядер. Данный компонент обрабатывает графику в играх, отрисовывает интерфейс ОС и т.д. Далее подробно рассмотрим составные части видеоускорителя, а так же параметры, которые стоит учитывать при выборе смартфона или планшета.

Разновидность видеопроцессоров. Основные достоинства и недостатки

Условно GPU делятся на два типа: сторонней или собственной разработки.

Сторонний вариант представляет собой готовые графические блоки, выполненные другими компаниями. Это упрощает процесс сборки, сокращает время на разработку и тестирование.

А не высокая стоимость лицензирования GPU, способствует сокращению расходов. С другой стороны снижается эксклюзивность, так как конкуренты используют те же наработки.

Ограниченное влияние на мощность и возможности ускорителя, поскольку при проектировании графических блоков, мнение сторонних компаний не учитывается.

Разработка собственных графических ускорителей, занимает больше времени и ресурсов. Как результат увеличивается стоимость готовой продукции. При этом сохраняется эксклюзивность, упрощается внедрение новых технологий и функций. Так же это позволяет задавать вектор развития для текущих и будущих видеопроцессоров.

Выделяют четыре типа графических ускорителей: Imagination PowerVR, Arm Mali, Qualcomm Adreno и Intel Hd Graphics.  

PowerVR специализируется на производстве GPU для других компаний: MediaTek, Allwinner или Intel. Ускорители обладают хорошей производительностью и работают на частотах до 700 МГц, что благоприятно сказывается на автономности. При этом низкая распространенность, вынуждает разработчиков игр учитывать GPU PowerVR в последнюю очередь.

Видеопроцессор Mali так же разрабатывается для сторонних компаний. Главные покупатели: Samsung, Huawei, MediaTek и Xiaomi. Благодаря этому по распространенности Mali занимает первое место, что стимулирует разработчиков лучше оптимизировать софт. Не высокая мощность компенсируется повышенными до 900-920 МГц частотами. Из-за этого падает автономность и растет тепловыделение.

Ускорители Adreno используется только в SoC Snapdragon, и демонстрируют лучшие показатели производительности среди конкурентов.

Работают на частоте 450-650 МГц, что способствует низкому тепловыделению и потреблению энергии. По распространенности уступают только Mali, но разработчики охотно оптимизируют софт и игры под Adreno.

Кроме того у GPU имеется запас мощности, что позволяет компенсировать нехватку оптимизации.

Hd Graphics применяется только в чипах Intel. Мощность сопоставима с PowerVR при одинаковых частотах. Распространенность и оптимизация низкая, из-за чего SoC не используют больше в смартфонах, а только в планшетах.

Мощность графических ускорителей

Производительность GPU измеряется в GFlops – количество выполняемых операций с плавающей запятой в секунду. Чем цифра выше, тем лучше.

В таблице ниже, выборка некоторых актуальных SoC:

GPU SoC Позиционирование Частота, МГц GFlops
Adreno 530 Snapdragon 821 Флагманский 650 519.2
Adreno 506 Snapdragon 626 Средний 650 130
Adreno 505 Snapdragon 435 Бюджетный 450 48.6
Mali-T880 MP4 Helio X27 (MT6797X) Топовый 875 119
Kirin 955 Топовый 900 122.4
Mali-T860 MP2 Helio P15 (MT6755T) Средний 800 54.4
HD Graphics 400 Atom x5-Z8300 Средний 700 134.4
PowerVR G6430 MP4 Atom Z3590 Средний 640 163.8

Стоит отметить, на производительность GPU влияет не только тактовая частота, но и количество шейдерных ядер. Эти блоки главные составные части современных графических ускорителей, которые занимаются вычислением и обработкой данных. Например, в Adreno 405 – 48 блоков, а в Adreno 418 – 128.

При выборе мобильного устройства, учитывать тактовую частоту или количество блоков не стоит. Достаточно взглянуть на количество GFlops из таблицы, что бы представить ориентировочную мощность. В таблице ниже перечислены популярные задачи и ориентировочное количество GFlops для оптимальной работы.

GFlops Задачи
25-35 Общение в соцсетях, интернет, YouTube, видео 1080р
45-60 Игры с низкими настройками графики
80-130 Запись и просмотр 4К видео, игры на средних настройках
180-240 Игры на высоких установках, трансляция 4К видео
320+ Игры на максимальных графических настройках

Драйвера

Для обработки графики пользовательского интерфейса, игр, видео и т.д., производители закладывают ряд драйверов, инструментов и библиотек: OpenGL ES, OpenCL, Vulkan и DirectX. Чем новее SoC, тем современнее драйвера, а устройство демонстрирует лучшие показатели производительности или возможностей, при выполнении привычных задач.

Традиционно лучшие наработки получают мобильные платформы топового и флагманского сегмента. Жизненный цикл, поддержка и обновление таких чипов в приоритете. Тогда как средний или бюджетный сегмент обновляется в последнюю очередь, либо не получает обновы вообще. Поддержка Qualcomm в среднем 2-3 года; MediaTek 1-1.5 года, нижний сегмент обновляется только с выходом новых чипов.

Учитывать версии драйверов стоит в том случае, если смартфон или планшет покупается с запасом на будущее. Тогда лучший выбор – свежий SoC, топового или флагманского сегмента.

Вывод

В мобильной платформе, графический ускоритель – неотъемлемая часть процессора. Поэтому требуется выбирать оптимальное сочетание обоих элементов, исходя из нагрузки в процессе эксплуатации.

Наилучший вариант – связка Snapdragon-Adreno. Ускоритель не так распространен, как Mali, но поддержка производителя в 2 раза дольше конкурентов. Кроме того имеется запас мощности, что легко компенсирует недостаток оптимизации.

Не рекомендуется рассматривать ускоритель Mali в чипах MediaTek. Это гарантия отсутствия будущих обновлений ОС Android. Так же производительность сопоставимая с ускорителями Adreno 2-4 летней давности.

Кроме того стоит учесть ежегодное увеличение требований системы и недостаток оптимизации. Поэтому важно иметь запас в 20-40 GFlops, для компенсации через 1-2 года эксплуатации.  

Источник: https://androfon.ru/article/kak-vybrat-smartfon-ili-planshet-chast-10-graficheskiy-uskoritel

Бюджетная виртуализация с помощью архитектуры ARM

Архитектура ARM хорошо зарекомендовала себя на рынке мобильных и сетевых устройств, за счет компактности, низкого энергопотребления и низкой себестоимости. В 2007 году около 98 % из более чем миллиарда мобильных телефонов, продаваемых ежегодно, были оснащены по крайней мере одним процессором ARM. 

Также популярны следующие микро-компьютеры системы-на-чипе (SoC) на базе ARM:

  • Raspberry PI  
  • Arduino Due
  • MK802 (компьютер-флешка)
  • PandaBoard
  • CubieBoard
  • Odroid
  • Virt2Real

ARM и x86

Современные версии процессоров ARM становятся все более схожи с процессорами x86 по тактовые частоте, многоядерности, поддержке виртуализации.

Но в отличие от архитектуры x86, которая использует полный набором команд (CISC),  благодаря сокращённому набору команд (RISC), процессоры ARM более дешевы и потребляют меньше энергии и выделяют меньше тепла.

Эти факторы очень важны как для мобильных пользователей так и для центров обработки данных (датацентров) так как позволяют использовать альтернативные источники электроэнергии КПД которых значительно ниже чем традиционных источников энергии.

    Также в ARM-процессорах принята практика переноса вычислительной нагрузки из процессора в сопроцессоры благодаря чему, например, обработка и воспроизведение видео в высоком разрешении может выполняться без мощного процессора.   Однако компьютеры на архитектуре ARM имееют и свои недостатки:   1.

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

3. Малое присутствие на рынке серверов. В 2012 году продажи серверов на ARM составили менее 1 % рынка серверов.

Перспективы

Ожидается что архитектура ARM в скором будущем продолжит свое развитие как серверная платформа и достигнет новых высот благодаря выходу на рынок новых производителей ARM-процессоров. 

Ожидается что в конце 2014 года компания AMD начнет выпуск серверных ARM-процессоров на ядре Cortex-A57 под кодовым названием “Hierofalcon” со следующими характеристиками:

  • Разрядность: 64bit
  • Количество ядер: 4 или 8  
  • Техпроцесс: 28нм
  • PCI: 3.0
  • Ethernet: 10Gbps
  • TDP: 15-30 Вт.

Cortex-A57

Само по себе процессор Cortex-A57 заслуживает отдельного рассмотрения. Так как является реальным конкурентом процессоров x86.

  • Архитектура: ARMv8 с поддержкой ARMv7
  • Разрядность: 64bit с поддержкой 32bit
  • Количество ядер: 4 или 8  
  • Встроенный графический ускоритель “ARM Mali”
  • Аппаратная виртуализация

Приобретение

Так как ARM-компьютеры не так распространены как сотовые телефоны, в основном их можно заказать только через Интернет-магазин у производителя или у посредника на интернет-аукционе. Некоторые торговые сети предлагают ARM-компьютеры, но их ассортимент зачастую очень скуден.

ARM-компьютеры распространяются в виде системы-на-чипе (SoC) – это подразумевает то что их нельзя будет модернизировать, по этой причине о технических характеристиках нужно задуматься заблаговременно.

Софт и виртуализация

Наибольшее распространение в архитектуре ARM получили операционные семейства Unix а именно Apple iOS (BSD) и GNU/Linux (свободное unix-подобное ядро). Также существуют версии операционной системы Windows поддерживающие ARM: Windows CE, Windows RT, Windows Phone.

Согласно исследованию IDC операционные системы имеют следующие доли рынка смартфонов во втором квартале 2013 года: 

  • Android – 79.3%
  • iOS – 13.2%
  • Windows Phone – 3.7%
  • BlackBerry OS – 2.9%
  • Linux – 0.8%
  • Symbian – 0.2%

Гипервизоры XEN и QEMU портированы на ARM. Благодаря чему возможно создание узлов виртуализации для аппаратной эмуляции процессоров ARM и программной эмуляции процессоров x86.  

Благодаря низкой стоимости, на основе ARM-устройств можно создавать бюджетные (Beowulf) кластеры. Это позволяет снизить порог входа к знаниям о кластерных и облачных вычислениях:

  • Кластер из 5 узлов
  • Кластер из более 20 узлов

Вывод

Пока не получили развитие процессоры Cortex 57 и процессоры на его базе, Архитектура ARM еще не может тягаться с архитектурой x86 в секторе виртуализации, однако в скором будущем может все изменится. Несмотря на это, уже сегодня можно собрать бюджетный домашний кластер на базе ARM-компьютеров.

Источник: http://umvirt.ru/node/136

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}