Абсолютно дилетантское сравнение 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. И до сих пор при расчете для АЭС я периодически встречаю, старые проверенные и сертифицированные, для специальных расчетов программы. Вот, например, модель АЭС необходимая для оценки безопасности, на первый взгляд, вроде все графически визуально наглядно в виде принципиальной схемы. 

Рисунок 1. Расчет переходных процессов в контурах АЭС
Рисунок 1. Расчет переходных процессов в контурах АЭС

Стоит нажать кнопку расчет, и вот оно старое доброе окно 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, часть только под одну из моделирующих программ: 

  1. Цифровой фильтр, который в версии Matlab Simulink 2015 года дико тормозил. Задача цифрового фильтра достаточна маленькая по количеству блоков около 60, но в ней задается ограничение шага интегрирования значение 1e-5 сек, для получения заданной точности, на разрывах. 

  2. Жесткая задача с локальной неустойчивостью, здесь минимальное количество блоков - 6, это всего два уравнения, но сами уравнения неустойчивые. Для правильного решения нужно использовать методы с изменяемым шагом интегрирования. На этой задаче MATLABпридется подбирать шаг для получение правильного решения, с заданной точностью, и можно будет посмотреть, как он это делает на разных процессорах.

  3. Модели сверхзвуковой авиационной ракеты, который выполнена в корейском университете и доступна на github, данная модель требует ToolBox Aerospace, содержит уже значительно большее количество блоков более 600, шаг расчета в этой задаче задается постоянныs 0.001 сек.

  4. Комплексной задачи с электрической частью, конечными автоматами и тепловыми процессами из примеров в Simulink, в которой увеличено время расчета с 1 сек процесса до 5 секунд, в этой задаче интересно влияет на расчет присутствие разной физики процессов. Поскольку тепловые и электрические процесс имеют разные характерные времена процессов и требуют разного шага интегрирования (только для Simulink).

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

Тестируем Simulink

Запускаем MATLAB R2023 в macOS и открываю файл с данными для модели фильтра, и уже сразу вижу маленькую проблему версии по Mac - русские комментарии из старого файла, превратились в крокозябры, это, кстати, может быть проблемой в совместной разработке если ваши коллеги и сокурсники используют Windows версию, или у вас, как у меня, несколько рабочих компьютеров между которыми вы переносите файлы, то на это придется обращать внимание.

Рисунок 2.  Открытие старого файла версии R2008b из Windows в версии macOS
Рисунок 2.  Открытие старого файла версии R2008b из Windows в версии macOS

Для вычисления времени расчета я использую Simulink Profiler, в этом случае, в окне расчета внизу показывает общее время вычисления задачи. Таким образом можно проводит сравнение без секундомера, а пользуясь встроенными средствами.

Для этого выбираю, на закладке DEBAG Кнопку Performance Adviser и выбрать Simulink Profiler.

Рисунок 3. Включения профилировщика для Simulink
Рисунок 3. Включения профилировщика для Simulink

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

Рисунок 4. Результаты расчета в профилировщике
Рисунок 4. Результаты расчета в профилировщике
Рисунок 5. Схема тестовой модели с локальной неустойчивостью
Рисунок 5. Схема тестовой модели с локальной неустойчивостью

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

Рисунок 6. Фазовый портрет неверного решения
Рисунок 6. Фазовый портрет неверного решения

Для правильного решения нужно задать опцию контроля производной в настройках решателя Shape preservationEnable All

Рисунок 7. Настройка решателя для учета разрывов в производной
Рисунок 7. Настройка решателя для учета разрывов в производной

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

Рисунок 8. Фазовый портрет верного решения
Рисунок 8. Фазовый портрет верного решения

Для этого нужно уже вызвать Slover Profiler

Рисунок 9. Вызов профайлера для анализа решения задачи
Рисунок 9. Вызов профайлера для анализа решения задачи

Запускаем расчет с использование профайлера. На графике шага мы видим как решатель МATLAB бодро считает процесс, уверенно роняет шаг, для определения зоны неустойчивости в нужных местах, но почему, то в середине расчета между 1.5 и 2 секундами залипает на маленьком шаге, хотя процесс этого не требует, кажется, не требует, в дальнейшем отлипает снова бодро считает, но общее время уже 8.8 секунд.

Рисунок 10. Изменение шага интегрирования в процессе расчёте локально неустойчивой задачи на процессоре Apple M2
Рисунок 10. Изменение шага интегрирования в процессе расчёте локально неустойчивой задачи на процессоре Apple M2

Если сравнить с графиком переходного процесса, то видно, что залипание между 1.5 и 2 секундами вызвано, не свойствами локальной неустойчивости системы, а накоплением внутренних ошибок в процессе численного интегрирования. В самом, деле при заданной точности 0.001 зоны неустойчивости, требующие такого дробления шага, находятся на временной шкале в моменты смены знака значения для y2. Смотри рисунок 11:

Рисунок 11. Значение Y_2 для локально неустойчивой задачи
Рисунок 11. Значение Y_2 для локально неустойчивой задачи

Причем шаг дробится значительно более, чем это необходимо для решения. Данную задачу можно посчитать с заданной погрешностью, с большим шагом, при коэффициенте множителя 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 меньше, но время расчета все равно оказывается больше.

Рисунок 12. Изменение шага интегрирования в процессе расчёте локально неустойчивой задачи на процессоре Intel Core
Рисунок 12. Изменение шага интегрирования в процессе расчёте локально неустойчивой задачи на процессоре Intel Core

Получается, что результаты математических вычислений разные на разных процессорах!!!!

Повторяем расчет на 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 обеспечивает вывод информации о времени расчета, непосредственно во время расчета. Для этого необходимо в главном меню выбрать «Расчет/Отладочная информация», и в окне на закладке производительность можно посмотреть «Физическое время расчета». Его можно вызывать и во время расчета.

Рисунок 13. Вызов отладочной информации в SimInTech
Рисунок 13. Вызов отладочной информации в SimInTech

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

Для «объективного контроля» воспользуемся регистра том событий в SimInTech, который обеспечивает запись системного времени для любого события. Для этого добавляем в комплексную модель еще один проект, в котором записываем время старта проекта, а также достижения 100 и 200 секунд расчета. Разница между этими отметками как раз и даст реально время расчета.

Рисунок 14. Проекта для оценки скорости вычисления
Рисунок 14. Проекта для оценки скорости вычисления

Задача

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 по поводу загрузки процессора для разных математических моделей. 

Если никаких расчетов не производится, то загрузка процессора отображается следующим образом:

Рисунок 15. Загрузка процессоров без расчета  
Рисунок 15. Загрузка процессоров без расчета  

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

Берем простую модель в SimInTech, ставим бесконечное время расчета и видим, что в виртуальной машине загружены два виртуальных ядра, a macOS показывает, что загружены 4 ядра эффективности и два ядра производительности (см. рис. 16)

Рисунок 16. Загрузка процессоров расчет одного проекта. 
Рисунок 16. Загрузка процессоров расчет одного проекта. 

Запустим комплексную задачу на расчет.

Видно, что загрузка процессоров значительно возросла, причем Windows считает, что есть еще два свободных процессора, macOS показывает, что загрузка есть на всех процессорах (см. рис. 17)

Рисунок 17. Загрузка процессоров расчет комплексной модели.
Рисунок 17. Загрузка процессоров расчет комплексной модели.

Выводы для SimInTech

Выводов три, плохой, очень плохой и хороший.

  1. SimInTech в виртуальной машине на macOS считает медленнее чем в Windows для простых задач.

  2. SimInTech в версии под Mac нет и не предвидится, за понты придётся платить замедлением расчета, на маленьких задачах.

  3. Если у вас большие модели, то Apple M2 Max будет быстрее, чем в Windows. 

Тестовые задачи можно взять здесь...

Модель авиационной ракеты в Simulink

Комментарии (14)


  1. alex_kag
    21.10.2023 19:29
    +2

    Стало интересно, вот программа для расчета - сертифицирована, а сертифицирована ли она для запуска в виртуалке? Просто интересно, как работает эта сертификация....


    1. Lev3250
      21.10.2023 19:29
      +2

      Учитывая, что вещественные числа могут по разному считаться двже на x86 amd и Intel, то вопрос действительно интересный


      1. petuhoff Автор
        21.10.2023 19:29

        И в паспорте атестации указывается опперционная система (но не процессор)


    1. petuhoff Автор
      21.10.2023 19:29

      обычно там в паспорте атестации указывается погрешность расчета например 10% так что в виртуалке должна работать


      1. Lev3250
        21.10.2023 19:29
        +1

        10% погрешности? Можно нам другого безопасника АЭС?


        1. petuhoff Автор
          21.10.2023 19:29
          +1

          Это еще нормальная погрешность, для анализа например доз облучения в величинах биологического эквивалента погрешность 100% нормальная, там если порядок совпал уже хорошо.


  1. iggr63
    21.10.2023 19:29
    +1

    кончеными автоматами

    Очень интересное название:)


  1. kinall
    21.10.2023 19:29

    <товарищ майор мод он>

    Матлаб в Россию больше не поставляется. Откуда он у вас и зачем вы его изучаете?

    <товарищ майор мод офф>


    1. petuhoff Автор
      21.10.2023 19:29
      +1

      Не все так однозначно!


  1. 1dNDN
    21.10.2023 19:29

    Какая единица измерения значений в таблицах?


    1. petuhoff Автор
      21.10.2023 19:29

      В таблице время расчета в секундах, чем меньше тем лучше. Для сравнения используется отношение времени на М2 к времени на Intel или AMD


  1. Yami-no-Ryuu
    21.10.2023 19:29

    Если в виртуалке запускались x86 версии пакетов, то замедление из-за микрософтовского эмулятора x86-arm (то же, что и Rosetta2 в макОС). Parallels ставит arm версию винды.

    В теории можно заставить симулинк компилировать используя VisualStudio, тогда скорость будет как в макОС.


    1. petuhoff Автор
      21.10.2023 19:29

      Интересно а в версии macOS Matlab Simulink использует эмулятор Rossetta2? Или все таки это нативная версия все таки она работает быстрее чем в Parallels


    1. petuhoff Автор
      21.10.2023 19:29

      Судя по свойствам MATLAB R2023a работает под эмулятором Rosseta 2, может версия b будет нативной и тогда работать будет быстрее