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

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


> Безобидный на вид набор вложенных циклов вида for (int i = 0; i < size; ++i) для обращения к элементам массивов может снизить производительность кода откомпилированного для Эльбруса в пару раз.

Примерно все циклы выглядят именно так. И примерно во всех циклах замедления в пару, в пару десятков и в пару сотен раз.

Потому что для обращения к элементам массивов можно использовать только переменные размерности size_t, а еще лучше signed это размерности. Что на Интеле что на Arm это наоборот немного замедляет выполнение. Но если звезды у оптимизатора Эльбрусовского компилятора сложатся по другому то негативный эффект может быть меньше и программист его не заметит.

мелочи.

> Много специфики связано с разницей VLIW и RISC/CISC. Способы оптимизации отличаются очень сильно, гораздо больше чем при работе одного кода RISC и CISC. Тем кто работал с Итаниум наверно будет нормально, а тем кто с ним не работал, а это большинство, придется шишки набивать.

как бы RISC он очень разный. Alpha очень была специфична к оптимизации - ну вот очень сильно отличалась она от своих собратьев. SPARC тоже имел и имеет массу нюансов - регистровые окна, вызовы процедур, обработка аргументов = 0 - всё не как у Intel/AMD, всё не как у POWER.


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

Интеловская MKL - это две разные библиотеки, одна для x86, Другая для Itanium. И больше ни для чего.


>>И тем не менее, часть этих программ, например, замечательно работают на Intel и ужасно на POWER (и наоборот). При минимальном рефакторинге кода разница нивелируется.
>
> Это преувеличение. Посмотрел результаты тех времен когда еще Итаниум и сравнил с близким Ксеоном. Максимум в пользу Итаниума 1.13 минимум 0.63 на одной задаче, остальные 0.86 и выше.

Было-было, на порядок. Я поищу.