Покажу вам одну картинку с работы. Тут есть над чем поразмыслить. Измеряется скорость работы симулятора нашего хитрого вычислителя для нейронных сетей машинного обучения. Испытываются три компьютера: ноукбук Macbook Pro, сервер Intel Xeon и десктоп iMac с процессором Intel i9. Пробуем два компилятора: Clang и GCC.
Для бенчмарка я взял одну из самых толстых нейронных сеток из нашей внутренней коллекции. Не буду уточнять, какую именно, скажу только, что после компиляции сетки в систему команд вычислителя объём бинарной программы получается 225 мегабайт. И ещё данных несколько сот мегабайт.
Чип, который мы сейчас выпускаем и предлагаем юзерам - это первая версия архитектуры. К ней имеем симулятор "А". Он однопоточный, то есть нагружает только одно ядро компьютера.
Вторую версию архитектуры мы закончили в прошлом году, и к ней сделали симулятор "B". Он уже многопоточный: по умолчанию задействует все имеющиеся ядра процессора. Но для целей сравнения мы будем его запускать также и в однопоточном режиме. Как сделана многопоточность - я уже
рассказывал в одном из постов.
А дальше глядите на картинку и делайте выводы. Тут несколько аспектов.
- Можно сравнивать между собой архитектуры ARM (Apple M2) и Intel (Xeon, i9).
- Можно оценивать эффективность компиляторов Clang супротив GCC. Режим оптимизации здесь -O3 -ftree-vectorize. Версия компилятора тоже влияет.
- Можно смотреть на рост производительности при включении многопоточности. Платформы заметно отличаются. На Apple M2 имеется 12 ядер, на Xeon 16 ядер, на i9 тоже как бы 16, но только восемь физические.
- Можно задаться вопросом про влияние SIMD-сопроцессора: Neon на архитектуре ARM и SSE на Интеле.
