- PVSM.RU - https://www.pvsm.ru -
Зачем покупать дорогой ПК, если ваш iPhone быстрее решает SMT?
Задача выполнимости формул в теориях (satisfiability modulo theories, SMT) — это задача разрешимости для логических формул с учётом лежащих в их основе теорий. — Википедия
Несколько дней назад я написал в твиттере [1]: «Любопытный эксперимент: на новом iPhone прувер Z3 работает быстрее, чем на моём (довольно дорогом) десктопном Intel. Пора перевести все формальные методы исследований на телефон».
Я читал о невероятном прогрессе, которого добились разработчики процессоров Apple [4], и что скоро маки переведут на собственные ARM-процессоры от Apple [5]. Эти отчёты обычно ссылаются на некоторые кросс-платформенные тесты, такие как Geekbench [6] для демонстрации, что мобильные процессоры Apple не уступают мобильным и настольным процессорам Intel. Но я всегда немного скептически относился к этим кросс-платформенным тестам (как и к другим [7]) — действительно ли они отражают скорость выполнения реальных задач, для которых я использую свои Mac?
Как исследователю формальных методов, мне регулдярно приходится запускать SMT-решатель, обычно это прувер Z3 [8]. Я потратил немало времени на изучение характеристик производительности Z3. У него есть некоторые особенности, которые не учитываются в тестах (Z3 обычно однопоточный). Недавно я купил новый iPhone XS [9] с последним процессором A12 [10] от Apple. И как-то от нечего делать решил скомпилировать Z3 в iOS и посмотреть, насколько быстро работает новый телефон (или гипотетический будущий Mac).
Кросс-компиляция Z3 оказалась на удивление простой, необходимо изменить всего несколько строчек кода. Я выложил исходники для запуска Z3 на вашем собственном устройстве iOS [11]. Для теста я взял несколько запросов из своей недавней работы по профилированию символических вычислений [12]: для каждого случая извлечена выдача SMT, сгенерированная Rosette [13].
В первом тесте я сравнил iPhone XS с одним из десктопов, который работает на Intel Core i7-7700K — лучший чип Intel для потребительского рынка на тот момент, когда я собирал машину 18 месяцев назад. Предполагалось, что Intel выиграет без особых проблем, но вышло иначе:
В этом 23-секундном тесте iPhone XS оказался примерно на 11% быстрее! Об этом я сообщил в твиттере, но твиттер не оставляет много места для подробностей, поэтому изложу их здесь:
QF_BV
из SMT, поэтому Z3 решает эту часть с помощью трансляции (bit-blasting) и SAT-солвера.Как такое возможно? Core i7-7700K — это же десктопный процессор. На однопоточной задаче он потребляет около 45 ватт и работает на частоте 4,5 ГГц. С другой стороны телефон iPhone, отключенный от сети. Вероятно, он не потребляет и 10% этой мощности и работает (мы надеемся) где-то в диапазоне 2 ГГц. Более того, после сравнительного теста я проверил отчёт об использовании батареи iPhone: там говорилось, что Slack использовал в 4 раза больше энергии, чем приложение Z3, несмотря на меньшее время на экране.
Apple не предоставляет достаточно информации, чтобы понять производительность Z3 на iPhone, но, к счастью, Intel даёт эти сведения для своего процессора. Я некоторое время покопался в VTune [15], чтобы найти узкие места производительности при запуске Z3 на десктопе. Как отметил Мэйт Соос [16], основное время SAT-решатель тратит на распространение [17], которое очень чувствительно к кэшу [18]. VTune соглашается и говорит, что Z3 тратит много времени на ожидание в памяти при переборе наблюдаемых литералов. Таким образом, ключом к производительности, кажется, является размер кэша и задержка памяти. Этот эффект может объяснить, почему iPhone настолько силён в этом тесте: у чипа A12 гигантский кэш L2 с низкой задержкой [19], а также, похоже, лучшая задержка памяти после промаха кэша по сравнению с 7700K.
Чтобы подтвердить результаты, я провёл более обширный эксперимент, собрав все устройства Apple, которые смог достать. Я также выбрал примерно в 10 раз более продолжительный бенчмарк (т.е. 4 минуты на десктопе), чтобы снять опасения по поводу всплесков производительности мобильного CPU.
Вот результаты для этих устройств (с указанием дат их выпуска) относительно A7, первого 64-разрядного пользовательского процессора от Apple:
Сразу нужно отметить, что настольный процессор i7-7700K превосходит iPhone XS на этом более длинном тесте. Но iPhone невероятно конкурентоспособен, показывая результат между i7-7700K и его предшественником i7-6700K, который был самым быстрым потребительским настольным процессором чуть менее двух лет назад.
По приколу я добавил ещё процессор Core m7-6Y75 из своего макбука 2016 года. В тесте Z3 мой телефон примерно на 50% быстрее, чем ноутбук.
Действительно примечательной вещью здесь является тенденция: довольно последовательное улучшение на 30% в год для этого бенчмарка Z3. Очевидно, что не следует делать далекоидущие выводы из одного глупого теста, но похоже, что через пару итераций процессоры Apple станут вполне пригодны для рабочих нагрузок.2 [20]. Я честно не ожидал, что мы уже так близко: современные архитектуры смартфонов просто невероятны!
Спасибо Меган Коуэн [21], Максу Уиллси [22] и Эдди Яну [23] за помощь в проведении тестов на других устройствах.
iPad Pro [25] ещё быстрее благодаря большему ↑ [26]
Автор: m1rko
Источник [27]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/matematika/298598
Ссылки в тексте:
[1] написал в твиттере: https://twitter.com/siderealed/status/1057682481334218752
[2] pic.twitter.com/9Faz9qNvAI: https://t.co/9Faz9qNvAI
[3] October 31, 2018: https://twitter.com/siderealed/status/1057682481334218752?ref_src=twsrc%5Etfw
[4] разработчики процессоров Apple: https://www.bloomberg.com/graphics/2018-apple-custom-chips/
[5] собственные ARM-процессоры от Apple: https://www.bloomberg.com/news/articles/2018-04-02/apple-is-said-to-plan-move-from-intel-to-own-mac-chips-from-2020/
[6] Geekbench: https://www.geekbench.com/
[7] другим: https://www.realworldtech.com/forum/?threadid=136526&curpostid=136666
[8] прувер Z3: https://github.com/z3prover/z3
[9] iPhone XS: https://www.apple.com/iphone-xs/
[10] A12: https://en.wikipedia.org/wiki/Apple_A12
[11] запуска Z3 на вашем собственном устройстве iOS: https://github.com/jamesbornholt/z3-ios
[12] профилированию символических вычислений: https://unsat.cs.washington.edu/projects/sympro
[13] Rosette: https://emina.github.io/rosette
[14] 1: #1
[15] VTune: https://software.intel.com/en-us/vtune
[16] Мэйт Соос: https://www.msoos.org/
[17] тратит на распространение: https://www.msoos.org/2010/07/propagating-faster/
[18] очень чувствительно к кэшу: https://www.msoos.org/2010/04/optimisations/
[19] гигантский кэш L2 с низкой задержкой: https://www.anandtech.com/show/13392/the-iphone-xs-xs-max-review-unveiling-the-silicon-secrets/3
[20] 2: #2
[21] Меган Коуэн: https://cowanmeg.github.io/
[22] Максу Уиллси: https://mwillsey.com/
[23] Эдди Яну: https://homes.cs.washington.edu/~eqy/
[24] ↑: #1_1
[25] iPad Pro: https://www.apple.com/ipad-pro/
[26] ↑: #2_2
[27] Источник: https://habr.com/post/429318/?utm_campaign=429318
Нажмите здесь для печати.