Абсолютно дилетантское сравнение MacBooк на процессоре Apple M2 Max с другими хорошими компьютерами.
Процессор MacBooк на процессоре M2, доступен уже достаточно давно. Обзоров производительности уже достаточно много. Но вот тестирование на производительности на специализированные инженерные задачи, а в частности использования средств структурного моделирования, типа MATLAB, Simulink (не говоря уже о SimInTech) я не нашел даже на английском.
Поэтому будем тестировать. Я как старый яблодрочер, буду сравнивать Mac c Mac-ом, а так же возьму случайно оказавшийся на руках новый ноутбук от ASUS на процессоре AMD.
В наличие есть:
MacBook c процессором Apple M2 Max 3.5 ГГц c 32 Гб памяти на борту.
Apple iMac настольный с Intel Core i7 10 поколения 3.8 ГГц 2020 года.
Ноутбук ASUS AMD Ryzen 7 5800 3.20 ГГц.
Лирическое отступление
Наверное, есть правоверные пользователи, которые используют Mac правильно, без всякой греховной Windows, но я лично людей такой святой жизни не встречал. У всех моих знакомых и у меня лично, каюсь грешен, на Macbook стоит виртуальная машина Parallels Desktop, с прости господи, Windows.
Мой первый Macbook Аir 2010 года, я использовал еще с Windows XP в виртуальной машине. У меня в использовании было несколько расчетных программ, что работали только в Windows и даже в DOS. И до сих пор при расчете для АЭС я периодически встречаю, старые проверенные и сертифицированные, для специальных расчетов программы. Вот, например, модель АЭС необходимая для оценки безопасности, на первый взгляд, вроде все графически визуально наглядно в виде принципиальной схемы.
Стоит нажать кнопку расчет, и вот оно старое доброе окно DOS cmd.exe. И даже заставка в псевдографике и трогательная дата первой разработки 1996 год. Код аттестован для применения при расчетах переходных процессов проверен на тысячах расчетах и используется уже 30 лет и, наверное, еще столько же будет использоваться. Причем, если его перенести под Linux, то процедуру аттестации нужно проходит заново. Так что “..не виноватая я, он сам пришел..” и использование Windows на Mac, для некоторых случаев неизбежно. Слаб человек и грешен.
Помню свои первые впечатления от Mac. Я переносил с c Sony Vaio, одно время это был ноутбук для фентиперсовых пацанов и манагеров звена выше среднего, и выглядел стильно круто, дорого богато, но в нем стоял HDD, как и везде, в те далекие времена. Поэтому переход на МакBook с диском на флеш памяти, вызвал непрерывный восторг, переходящий в оргазм. Всем своим знакомым в то время я показывал такой трюк: кликал по ярлыку документа Word на рабочем столе в Mac, в это время запускалась виртуальная машина, Parallels в ней стартовала Windows XP, запускался Word, и открывался документ и это было быстрее, чем открывать документ Word в Windows на Sony Vaio. Восторгу не была предела.
С таким скоростями работы настроив режим Coherence, можно вообще не парится в Windowsили Mac работают приложения. Поэтому если была программа под Windows, я не задумываясь ставил ее в виртуальную машину и использовал, не затрудняя себя поиском Mac версии, для офисных программ это вполне себя оправдывает, но вот для расчетных программ, когда идет моделирования и расчет требует вычислительных ресурсов процессора, тут приходится разбираться, ставить ли Windows версию в виртуальную машину, или родную версию в macOS.
Тестовые задачи
MATLAB как раз такая расчетная программа и периодически появляются задачи которые хочется посчитать, а главное отладить быстрее. И в этом случае в полный рост встает вопрос, насколько будет быстрее, если купить Apple M2 Max. А второй вопрос как замедлит расчет использование виртуальной машины от Parallels, на процессорах Apple M2 Max. Из популярных средств структурного моделирования возьмем MATLAB Simulink и SimInTech, и тестировать будем на реальных задачах Simulink и SimInTech.
Так же исследуем работу Simulink в режиме ускорения, когда модель предварительно конвертируется в код Си, компилируется и запускается ядром как готовая программа. На разных процессорах в принципе может быть разное ускорение, так как подключаются компиляторы, которые могут быть больше или меньше оптимизированы под конкретный процессор.
Ссылки на модели, использованные в данном тестировании приведены в конце, и каждый может забрать их себе и протестировать что бы понять, насколько их текущая конфигурация может быть ускорена с переходом c Intel на Apple M2 Max.
В качестве тестового набора, мы возьмем следующие модели, часть из них есть в версиях под Simulink и SimInTech, часть только под одну из моделирующих программ:
Цифровой фильтр, который в версии Matlab Simulink 2015 года дико тормозил. Задача цифрового фильтра достаточна маленькая по количеству блоков около 60, но в ней задается ограничение шага интегрирования значение 1e-5 сек, для получения заданной точности, на разрывах.
Жесткая задача с локальной неустойчивостью, здесь минимальное количество блоков - 6, это всего два уравнения, но сами уравнения неустойчивые. Для правильного решения нужно использовать методы с изменяемым шагом интегрирования. На этой задаче MATLABпридется подбирать шаг для получение правильного решения, с заданной точностью, и можно будет посмотреть, как он это делает на разных процессорах.
Модели сверхзвуковой авиационной ракеты, который выполнена в корейском университете и доступна на github, данная модель требует ToolBox Aerospace, содержит уже значительно большее количество блоков более 600, шаг расчета в этой задаче задается постоянныs 0.001 сек.
Комплексной задачи с электрической частью, конечными автоматами и тепловыми процессами из примеров в Simulink, в которой увеличено время расчета с 1 сек процесса до 5 секунд, в этой задаче интересно влияет на расчет присутствие разной физики процессов. Поскольку тепловые и электрические процесс имеют разные характерные времена процессов и требуют разного шага интегрирования (только для Simulink).
Большую комплексную модель турбины с системой управления и операторским пультом управления, здесь так же решается совместная задача, расчета физики тепловых процессов и работы системы автоматического управления, разные модели, разные шаги интегрирования и проблема синхронизации (только для SimInTech).
Тестируем Simulink
Запускаем MATLAB R2023 в macOS и открываю файл с данными для модели фильтра, и уже сразу вижу маленькую проблему версии по Mac - русские комментарии из старого файла, превратились в крокозябры, это, кстати, может быть проблемой в совместной разработке если ваши коллеги и сокурсники используют Windows версию, или у вас, как у меня, несколько рабочих компьютеров между которыми вы переносите файлы, то на это придется обращать внимание.
Для вычисления времени расчета я использую Simulink Profiler, в этом случае, в окне расчета внизу показывает общее время вычисления задачи. Таким образом можно проводит сравнение без секундомера, а пользуясь встроенными средствами.
Для этого выбираю, на закладке DEBAG Кнопку Performance Adviser и выбрать Simulink Profiler.
После этого появляется закладка, где можно запускать на расчет и получать данные анализа, нас интересуют только время расчета, поскольку сравнивать мы будет одинаковые модели с одинаковыми настройками.
Причем если по умолчанию разрешить MATLAB определять метод и шаг интегрирования, то решение будет быстрым, но неверным см. рис. 6 По умолчанию выбреется метод ode15s, который не может правильно рассчитать данную модель при заданных параметрах.
Для правильного решения нужно задать опцию контроля производной в настройках решателя Shape preservation: Enable All
Правильное решение на следующем рисунке 8. Как видим, для правильного решения время уже увеличилось сразу почти в 60 раз. В связи этим интересно посмотреть на график величины расчетного шага во время расчета, как математическое ядро меняет шаг, чтобы поймать точку локальной неустойчивости модели.
Для этого нужно уже вызвать Slover Profiler
Запускаем расчет с использование профайлера. На графике шага мы видим как решатель МATLAB бодро считает процесс, уверенно роняет шаг, для определения зоны неустойчивости в нужных местах, но почему, то в середине расчета между 1.5 и 2 секундами залипает на маленьком шаге, хотя процесс этого не требует, кажется, не требует, в дальнейшем отлипает снова бодро считает, но общее время уже 8.8 секунд.
Если сравнить с графиком переходного процесса, то видно, что залипание между 1.5 и 2 секундами вызвано, не свойствами локальной неустойчивости системы, а накоплением внутренних ошибок в процессе численного интегрирования. В самом, деле при заданной точности 0.001 зоны неустойчивости, требующие такого дробления шага, находятся на временной шкале в моменты смены знака значения для y2. Смотри рисунок 11:
Причем шаг дробится значительно более, чем это необходимо для решения. Данную задачу можно посчитать с заданной погрешностью, с большим шагом, при коэффициенте множителя 1е7, достаточное шага интегрирования 1e-8, но MATLAB роняет шаг глубже и при этом шаг дробится там, где это можно не дробить, на стабильных участках.
Переключаемся в виртуальную машину с Windows 11 и повторяем расчеты. Общие результаты приведены в сводной таблице 1.
Для задачи с локальной неустойчивостью на M2 Max MATLAB Windows 11 в Виртуальной машине, изменения шага интегрирования не обнаружено, ровно на тех же местах на оси времени, происходит ровно такое же дробление шага, как и при работе в нативном приложение по macOS.
Это говорит, о том, что версия macOS и Windows виртуальной машине считают на одном процессоре считают абсолютно одинаково.
Переносим модели на Apple iMac настольной с Intel Core i7 10 поколения 3.8 ГГц и повторяем все расчеты.
Тут хочется отметить изменение в расчете модели с локальной неустойчивостью. Анализ шага интегрирования показывает отличие в вычислениях, зона дробления результат отличается, и она явно меньше, чем на компьютере с M2. Сравни рис. 12 с рис.10. Количество шагов интегрирования на процессоре Intel меньше, но время расчета все равно оказывается больше.
Получается, что результаты математических вычислений разные на разных процессорах!!!!
Повторяем расчет на ASUS AMD Ryzen 7 5800 3.20 GHz и получаем шаги моделирования полностью совпадающие с шагам на Apple M2.
Я не поленился и запустил тот же расчет на еще одно ноутбуке Intel Core i7 – 8564U 1700 GHz, и получил график изменения шага интегрирования ровно такой же, как и для Intel Core i7 10 поколения 3.8 ГГц 2020, что в настольном iMac.
Если судить по шагам интегрирования, то AMD Ryzen и Apple M2 считают одинаково, но не совсем так как Intel Core i7.
Сводная таблицы результатов соревнования MATLAB на процессорах Intel и Apple M2, приведены ниже.
В таблицах принято следующие кодирование:
ЛН – локальной неустойчивая задача
Фильтр – модель цифрового фильтра
АСП – авиационное средство поражения, сверхзвуковая ракета
АirCond - пример совместного моделирования электрической системы и системы кондиционирования автомобиля
Mac – MATLAB запускается в версии под macOS
Win – MATLAB запускается в версии под Windows в виртуальной машине
норма – нормальный режим моделирования Simulink
ускорен. – режим моделирования Simulink с компиляцией кода Си
Задача/OS/режим |
Intel Core i7 |
AMD Ryzen 5800 |
Apple M2 Max |
Ускорение |
Версия под macOS |
|
|
|
|
ЛН/Mac/ норма |
8.9 |
9.6 |
4.8 |
1,85 |
ЛН/Mac/ ускорен. |
6.6 |
7.7 |
2.4 |
2,75 |
Фильтр/Mac/норма |
66.59 |
55.1 |
30.7 |
2,17 |
Фильтр/Mac/ускорен. |
53.78 |
47.3 |
22.6 |
2,38 |
АСП /Mac/норма |
7.25 |
6.5 |
4.8 |
1,51 |
АСП /Mac/ускорен. |
2.39 |
2.5 |
1.93 |
1,24 |
AirCond/Mac/норма |
46.1 |
44.3 |
35 |
1,32 |
AirCond/Mac/ускорен. |
36.7 |
36 |
31.8 |
1,15 |
|
|
|
Среднее |
1,65 |
Windows в VM |
|
|
|
|
ЛН/Win/ норма |
9.77 |
|
8.7 |
1,11 |
ЛН/Win/ ускорен. |
8.68 |
|
7.5 |
1,16 |
АСП /Win/норма |
8.87 |
|
10.16 |
1,02 |
АСП /Win/ускорен. |
2.92 |
|
2.27 |
1,29 |
Фильтр/Win/норма |
100.5 |
|
98.7 |
0,87 |
Фильтр/Win/ускорен. |
85.15 |
|
66.2 |
1,29 |
AirCond/Win/норма |
61.77 |
|
94.65 |
0,65 |
AirCond/Win/ускорен. |
46.77 |
|
84 |
0,56 |
|
|
|
Среднее |
0,92 |
Результаты получились не очевидные.
Для маленьких задач в MATLAB под macOS (первых двух) увеличение скорости расчета более чем в два раза. Даже почти в 3, в случае локального неустойчивого в режиме ускоренного моделирования. Для задач с большим количество блоков ускорение меньше чем в 1,5 раза. Среднее по больнице 1,65.
При работе в виртуальной машине под Windows ускорение составляет всего от 10% до 30%. И есть задачи, где Intel Соre выигрывает у M». В одном случает почти в два раза.
В итоге при работе в виртуальной машине «среднее по больнице» ускорение от перехода на M2, превратилось в замедление на 8%.
Так же видно, что для MATLAB под AMD AMD Ryzen 5800, на ноутбуке с Windows примерно равен по скорости Intel Core i7 (чуть более быстрый). И отстает на малых задачах от Apple M2 почти в 2 раза. Но с ростом сложности задачи, увеличения количества блоков в модели отставание сокращается, так же, как и для Intel Core i7.
Получается, чем сложнее задача (больше блоков), тем меньше выигрыш от скорости
Из полученных данных можно так же посмотреть, как замедляет расчет, использование виртуальной машины с Windows в macOS, для этого сравним расчеты в виртуальной машине и macOSдля каждого процессора
Таблица 2. Ускорение расчетов MATLAB Simulink в macOS по сравнению с расчетами виртуальной машине Windows
Задача/режим |
Intel Core i7 |
Apple M2 Max |
ЛН/ норма |
1.09 |
1.81 |
ЛН/ ускорен. |
1.32 |
3.13 |
Фильтр/норма |
1.51 |
3.21 |
Фильтр/ускорен. |
1.58 |
2.93 |
АСП /норма |
1.22 |
2.12 |
АСП /ускорен. |
1.22 |
1.18 |
AirCond/норма |
1.27 |
2.7 |
AirCond/ускорен. |
1.16 |
2.64 |
Среднее |
1.32 |
2.13 |
По данным таблицы 2 видно, что использование виртуальной машины на процессорах M2 снижает производительность значительно сильнее, чем при использовании Intel, это возможно связано с временными недоработками Windows или виртуальной машины Parallels под процессоры Apple, и в дальнейшем такой разницы возможно не будет.
Ну и напоследок сравним работу режима ускорения MATLAB Simulink на разных процессорах, в тестовых задачах.
Задача/OS/ |
Intel Core i7 |
Apple M2 Max |
ЛН/Mac/ |
1.35 |
2.0 |
ЛН/Win/ |
1.24 |
1.36 |
Фильтр/Mac/ |
3.03 |
2.49 |
Фильтр/Win/ |
1.26 |
1.10 |
АСП /Mac/ |
1.12 |
1.16 |
АСП /Win/ |
1.18 |
1.16 |
AirCond/Mac/ |
1.32 |
1.10 |
AirCond/Win/ |
1.26 |
1.13 |
Здесь результаты близкие, но видно, что ускорение при использовании в нативного MATLAB в macOS оказывается больше на обоих процессорах, чем ускорении в виртуальной машине.
Выводы для Simulink
Эксперимент показал, что расчет MATLAB в виртуальной машине, и в версии под MacOSсчитают математически одинаково. А вот для разных процессоров получаются разные шаги интегрирования – явно разные результаты, конечно, в рамках погрешности (будем на это надеется), но математически разные.
Виртуальная машина от Parallels на Intel замедляет расчет меньше, на Apple M2, но это может быть связано с недоработками самой виртуальной машины и на обновленных процессах этой разницы уже не будет.
Apple M2 Maх с MATLAB по macOS быстрее, чем Intel Core i7 10 поколения 3.8 ГГц, но если у вас виртуальная машина Paralles Windows в MacOS, возможно на ваших задачах он будет медленнее.
Тестируем SimInTech
Что касается SimInTech на Mac, то для маководов, здесь все печально: версии под macOS нет и не предвидится, поэтому сравнение идет только в виртуальной машине под Mac и под Windows на AMD Ryzen 7 5800, так же пришлось убрать из тестового набора модель линейную с неустойчивостью, поскольку время расчета слишком маленькое, для адекватной оценки и сравнения.
SimInTech обеспечивает вывод информации о времени расчета, непосредственно во время расчета. Для этого необходимо в главном меню выбрать «Расчет/Отладочная информация», и в окне на закладке производительность можно посмотреть «Физическое время расчета». Его можно вызывать и во время расчета.
В качестве большой модели используется комплексная модель турбины, в которой используется тепло-гидравлические модель реактора и турбины. Но при этом возникает проблема точного отображения времени расчета. Поскольку проектов несколько, и они должны синхронизироваться по модельному времени (более быстрые ждут более медленных), скорость расчета определенная в рамках одного проекта не будет показывать объективное время, поскольку время ожидания между тактами синхронизации не учитывается в отладочной информации.
Для «объективного контроля» воспользуемся регистра том событий в SimInTech, который обеспечивает запись системного времени для любого события. Для этого добавляем в комплексную модель еще один проект, в котором записываем время старта проекта, а также достижения 100 и 200 секунд расчета. Разница между этими отметками как раз и даст реально время расчета.
Задача |
Intel Core i7 |
AMD Ryzen 5800 |
Apple M2 Max |
|
WM |
Win |
WM |
Фильтр |
14.82 |
11.65 |
31.7 |
АСП |
0.76 |
0.57 |
0.86 |
Турбина |
57 |
76 |
70 |
Видим, что на простых задачах Apple M2 Max проигрывает в 2 раза Intel Core i7 а современному ноутбуку под Windows почти в 3 раза. Это фиаско bro!
На средних по сложности задачах, отставание сокращается, но все равно почти в два раза медленнее чем в Windows.
И только когда задача становится действительно большой и комплексной Apple M2 Max начинает обгонять конкурентов.
Посмотрим, что отражается в системах MacOS и в виртуальной машине Windows по поводу загрузки процессора для разных математических моделей.
Если никаких расчетов не производится, то загрузка процессора отображается следующим образом:
Виртуальная машина Windows считает, что вообще ничего не происходит, macOS показывает загрузку процессоров эффективности.
Берем простую модель в SimInTech, ставим бесконечное время расчета и видим, что в виртуальной машине загружены два виртуальных ядра, a macOS показывает, что загружены 4 ядра эффективности и два ядра производительности (см. рис. 16)
Запустим комплексную задачу на расчет.
Видно, что загрузка процессоров значительно возросла, причем Windows считает, что есть еще два свободных процессора, macOS показывает, что загрузка есть на всех процессорах (см. рис. 17)
Выводы для SimInTech
Выводов три, плохой, очень плохой и хороший.
SimInTech в виртуальной машине на macOS считает медленнее чем в Windows для простых задач.
SimInTech в версии под Mac нет и не предвидится, за понты придётся платить замедлением расчета, на маленьких задачах.
Если у вас большие модели, то Apple M2 Max будет быстрее, чем в Windows.
Комментарии (14)
Yami-no-Ryuu
21.10.2023 19:29Если в виртуалке запускались x86 версии пакетов, то замедление из-за микрософтовского эмулятора x86-arm (то же, что и Rosetta2 в макОС). Parallels ставит arm версию винды.
В теории можно заставить симулинк компилировать используя VisualStudio, тогда скорость будет как в макОС.
petuhoff Автор
21.10.2023 19:29Интересно а в версии macOS Matlab Simulink использует эмулятор Rossetta2? Или все таки это нативная версия все таки она работает быстрее чем в Parallels
petuhoff Автор
21.10.2023 19:29Судя по свойствам MATLAB R2023a работает под эмулятором Rosseta 2, может версия b будет нативной и тогда работать будет быстрее
alex_kag
Стало интересно, вот программа для расчета - сертифицирована, а сертифицирована ли она для запуска в виртуалке? Просто интересно, как работает эта сертификация....
Lev3250
Учитывая, что вещественные числа могут по разному считаться двже на x86 amd и Intel, то вопрос действительно интересный
petuhoff Автор
И в паспорте атестации указывается опперционная система (но не процессор)
petuhoff Автор
обычно там в паспорте атестации указывается погрешность расчета например 10% так что в виртуалке должна работать
Lev3250
10% погрешности? Можно нам другого безопасника АЭС?
petuhoff Автор
Это еще нормальная погрешность, для анализа например доз облучения в величинах биологического эквивалента погрешность 100% нормальная, там если порядок совпал уже хорошо.