|
От
|
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 и выше.
Орфографический словарь читал - не помогает :)