От tarasv Ответить на сообщение
К S. Engineer Ответить по почте
Дата 07.11.2022 03:37:41 Найти в дереве
Рубрики Современность; ВВС; Версия для печати

Re: Прочитал в...

>> В Эльбрусе заметно больше способов выстрелить себе в ногу при написании кода на ЯВУ чем когда целевая платформа Интел или АРМ.
>Спорное высказывание, требующее пруфов.

Безобидный на вид набор вложенных циклов вида for (int i = 0; i < size; ++i) для обращения к элементам массивов может снизить производительность кода откомпилированного для Эльбруса в пару раз. Потому что для обращения к элементам массивов можно использовать только переменные размерности size_t, а еще лучше signed это размерности. Что на Интеле что на Arm это наоборот немного замедляет выполнение. Но если звезды у оптимизатора Эльбрусовского компилятора сложатся по другому то негативный эффект может быть меньше и программист его не заметит.
Много специфики связано с разницей VLIW и RISC/CISC. Способы оптимизации отличаются очень сильно, гораздо больше чем при работе одного кода RISC и CISC. Тем кто работал с Итаниум наверно будет нормально, а тем кто с ним не работал, а это большинство, придется шишки набивать.

>Пока не приходилось встречать чисто вычислительного кода, прилично работающего вот сразу на нескольких платформах. Например, для упомянутых выше Интел и АРМ рекомендации по оптимизации кода различаются.

Интеловская MKL например, код общий, все остальное делает компилятор.

>И тем не менее, часть этих программ, например, замечательно работают на Intel и ужасно на POWER (и наоборот). При минимальном рефакторинге кода разница нивелируется.

Это преувеличение. Посмотрел результаты тех времен когда еще Итаниум и сравнил с близким Ксеоном. Максимум в пользу Итаниума 1.13 минимум 0.63 на одной задаче, остальные 0.86 и выше.


Орфографический словарь читал - не помогает :)