Re[10]: Эльбрус мёртв, да здравствует Эльбрус-Б!
От: Sinclair Россия https://github.com/evilguest/
Дата: 21.05.25 15:32
Оценка:
Здравствуйте, vdimas, Вы писали:

V>И да, ядра с гипертредингом имеют чуть большее кол-во выч.блоков в АЛУ, но небольшое увеличение для 2x и затем еще меньшее увеличения от этого до 4x показывает эффект от аппаратной реализации СМО.

Там нет никаких 2х и 4х. Иначе бы никто не называл это "гипертредингом" и не было бы понятия "честные ядра".

V>Вот как раз в Эльбрусе этих блоков больше, потому что идёт упор на спекулятивное исполнение, а не на ОоО, т.е. конкурирующие результаты вычислений часто отбрасываются.

Как мы в прошлый раз выяснили, в Эльбрусе этих блоков меньше. Независимо от наличия или отсутствия упоров.

V>На обычных многопоточных, даже независимых по данным.

На "обычных многопоточных" данные и так не пересекаются, безо всяких усилий по разметке. Например, при перемножении матриц каждый из потоков работает со своим сегментом матрицы.
При сортировке слиянием каждый из потоков сортирует свой сегмент. И так далее.
Чтобы когерентность начала как-то сильно мешать, надо специально писать многопоточный код так, чтобы потоки наступали друг другу на пятки.

V>Вот у тебя есть некий объект, в нём работает пара потоков, их локальные данные необходимо разносить по линейкам кеша.

V>В мейнстримовых языках пока мало "подсказок" компилятору насчёт этого, приходится размечать память вручную.
Это, КМК, очень специальный случай.

V>И еще бы заранее знать на каких процах оно будет исполняться, т.е. размер линейки кеша... ))

Или учитывать это при джите

V>Размечать блоки данных, которые локальные для некоего потока, т.е. чтобы была возможность разметить несколько таких блоков в лейауте объекта.

V>Дальнейшая автоматизация в компиляторе, потом на реальном железе на уровне загрузчика ОС со стандартной коррекцией адресов в процессе загрузки.
Было бы интересно посмотреть на пример кода, в котором нужно делать рукопашный лейаут, с бенчмарком "тупого" случая по сравнению с "умным".
Ну, и идеи по поводу того, как могла бы выглядеть такая разметка.
V>Да, языки необходимо допиливать, но это надо было начинать делать еще в нулевые, когда многоядерность пошла в мейнстрим десктопа.
Ну так начать-то никогда не поздно. Напилить язык сейчас — дело невыносимо лёгкое. Добавить разметку в какой-нибудь clang, да привинтить поддержку этих метаданных в llvm.

V>Разнесение локальных данных на некоторых алгоритмах даёт до 3-10 раз, кстате, зависит от соотношения стоимости полезных вычислений и стоимости обеспечения когерентности.

Возможно, выбор более удачной структуры данных даст ускорение в 3-10 раз и без ручной подгонки линеек кеша.

V>>>Для этого надо взглянуть на спецификации языка Эль-22, который обещает некий "полный параллелизм".

S>>Я об этом уже написал.

V>Ты написал лишь два базовых вида

Я написал не про два разных вида, а про то, что надо посмотреть на Эль-22.

V>Да нет, они в макетах всё неплохо демонстрировали.

Макеты Эльбрус-Б? Да ладно!
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.