Re[24]: .Net на эльбрусах
От: vdimas Россия  
Дата: 22.08.22 23:52
Оценка:
Здравствуйте, Sinclair, Вы писали:

V>>По классике наилучший результат из наивных даёт схема kji.

V>>У авторов схема kij, которая, увы, является наихудшей.
S>Что такое "kji"?

Порядок вложения циклов обхода для приведённого мною алгоритма.


S>Это вы перечисляете переменные итерирования изнутри наружу? Тогда в статье приведён код для kji.


В статье другие идентификаторы, т.е. ijk не те, что я привёл.
Произведи подстановку имён переменных.


V>>А для Интел как ни крути — ничего уже особо не накрутишь.

S>Ну зачем же так сразу. На интеле гонялся наивный код с оптимизацией компилятором. Немножко покрутив его, можно ускорить эту реализацию примерно в 60 раз.

Но почему-то интелловская либа ускоряет только в 10 раз.
Наверно потому что ей недоступны "оптимизации", которые приведены в статье по твоей ссылке?
Ведь характер задачи заранее неизвестен.

Того монстра, что они породили, пусть погоняют на небольших матрицах и увидят, что вряд ли сделали лучше.
Как бы не хуже.
Ну и на матрицах небольшого размера тот код просто упадёт, т.к. некорректный.


4>>>при этом уступает в 20-ть раз тесту с использованием eml.

V>>При этом eml ускорила наихудший вариант вычислений в 100 раз.
S>Ну, он при этом был всё ещё хуже интела.

В сети есть несколько тестов MKL, поэтому в сравнении с EML Интел всё еще отстаёт примерно в два раза, при том что процы работают на разной тактовой.


V>>С чего ты решил, что SIMD не используется?

V>>Компилятор компиллирует с SIMD инструкциями в любом случае.
S>У компилятора довольно вялые возможности по автовекторизации.

Нормальные там возможности у обоих процов, если память правильно обходить.
Обрати внимание, что код под Эльбрус всё еще не использовал интистики и не использовал подкачку данных.


S>Особенно плохо компилятор справляется для матриц. Для векторов ещё куда ни шло — посмотрите на первую половину статьи.


Дык, вектора обходятся в памяти линейно, а при умножении матриц у одной из матриц нужно ходить поперёк памяти.


V>>Просто SIMD бывает очень разный.

V>>Просто надо правильно обходить память и раскручивать циклы, чтобы какие надо SIMD инструкции подставлялись.
S>А то. Вы же не думаете, что в EML написана наивная реализация без оптимизации обхода и раскрутки циклов.

Попахивает манипуляциями.
Ты привёл пример, где вовсю используются SIMD-интистики напрямую.
Т.е. чуть ли не на ассемблере код написан.

В отличе от, подсказки насчёт раскрутки циклов есть и для x86/x64 архитектуры.
Это не то же самое, что писать на асме.


V>>MKL даёт прирост от наихудшей наивной реализации в ~10 раз.

S>Думаю, должно быть не меньше, чем в хабрастатье.

Подумай еще.


V>>Компилятор надо развивать нон-стоп, ес-но, на него вся надежда.

S>Надо. Но для этого надо расширять штат развиваторов. В микрософте ничего не шло вперёд, пока не отдали в опенсорс.

Ты про дотнет?
С этим фруктом всё было понятно изначально.
И заметь — оно пошло вперёд, как только дотнет повернулся к нейтиву лицом, потому что заинтересовал более широкие слои населения.
Не те, коорые просто потребители технологий.

Но компилятор С++ не отдали, и этот компилятор от MS один из лучших в мире, особенно в деле LTO.
И не отдадут в обозримом будущем.

Компилятор Эльбруса тоже показывает себя неплохо именно в деле LTO.


V>>Но что здесь внушает оптимизм — при улучшении компилятора можно перепрогонять им софт и получать профит, не меняя ни исходники, ни железо.

S>Это да, тут вопросов нет.

Зато к коду по твоей ссылке эти вопросы есть.
И это то, чего хотелось бы избегать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.