Re[21]: .Net на эльбрусах
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.08.22 16:06
Оценка: :)
Здравствуйте, vdimas, Вы писали:
V>Допустим, у тебя не 4*4 упакованных числа, а 6*6.
V>В этом случае VLIW может в одной инструкции выполнить 4*4 над упакованными данными и еще 2*2 над неупакованными.
А мы сразу предполагаем, что в VLIW вычислительных блоков больше, чем в SIMD? Почему?
К примеру, AVX-512 может обработать 8 упакованных double за одну операцию. И никто не запрещает в суперскаляре параллелить две идущих подряд инструкции, которые складывают между собой соседние вектора из 4х даблов — они же не пересекаются по данным.
Опять же, с неупакованностью есть команды scatter/gather для явной подгрузки, я так понимаю — это аналог эльбрусовского LOAD.

V>Я давал в прошлых сообщениях ссылки, где на тестах HPC уступающий по тактовой Эльбрус разделался с Интел-архитектурой, обогнав примерно в 3 раза, и это был проц, который на сегодня уже морально устарел. Т.е. даже на том проце под облаками потребуется в 3 раза меньше ресурсов на те же вычисления. В новых процах ожидается кратность до 10-ти. Понятно, что Интеллы за ближайшие 3 года тоже чуть подрастут, но я точно знаю, что подрастут несильно, потому что я вижу, что там происходит — ничего. Зеро.

Это было бы интересно, если бы у нас был доступ для пощупать руками.


V>Наши Эльбрусы и их Cray взялись за задачу совместить ужа с ежом — сохранить эффективность на целевом классе вычислений и поиметь хоть какую-то эффективность на "бизнес логике", т.е. где много ветвлений, плюс развитая булевская логика (например, в Эльбрусах есть условная запись предикатов — это объединение примерно двух булевских операций и ненавистного для процессоров ветвления в одну аппаратную команду). Появился конвейер, многомерная спекуляция с отбрасыванием неудачных веток, предвыборка данных и т.д.

V>Дальнейшие поколения Cray и Эльбрусов развивали этот подход.

V>Еще пример.

V>В операциях разложения тригонометрии или корней в ряд добавляются степенные ф-ии, т.е. требуется более одного накопительного регистра (где еще будет накапливаться степень числа).
V>Здесь уже SIMD сливает.
Пока непонятно, в чём именно проблема. Есть несколько способов работать с полиномами в SIMD.

V>Если делать эти же вычисления на квадратичной аппроксимации по предвычисленной таблице, то характер таких вычислений тоже плохо ложится на SIMD, но всё еще хорошо на VLIW.

И опять непонятно, в чём именно проблема аппроксимацией по таблице в SIMD.

V>Еще в таких вычислениях популярна операция ограничения уровня сигнала, в Эльбрусах есть инструкци fmax/fmin, а это тоже ужасная для традиционных архитектур операция, т.к. делается через сравнение+ветвление и т.д.

Ничего ужасного. Инструкций будет не одна, а три, а вот быстродействие я бы померил. Сколько тактов делается эльбрусовский fmax/fmin?

V>В общем, "числомолотилка" — это не только и не столько про кол-во умножений/делений за такт, но и про то, насколько хорошо требуемые вычисления ложатся на архитектуру вычислительного ядра. Толку от кучи умножений за такт на тех же x86-х, если 90% инструкций цикла будут заниматься тусованием данных туда-сюда по регистрам и содержать лишние ветвления?

В SIMD ветвления делаются не так
V>Понятно, что внутреннее переименование регистров, устранение т.н. "ложных зависимостей м/у регистрами", спекулятивность/предсказание часть этой мышиной возни убирают, но как показывают HPC тесты — только часть.
Надо щупать руками.

V>Зато если по одному указателю должно быть ровно 4 числа и по другому указателю ровно 4 числа — это уже примерно оно.

Ну, пусть будет так.

V>Т.е., чтобы SIMD хорошо работал, данные в памяти надо расположить определённым образом.

Это везде так. Чудес-то не бывает.
V>Часто это влечёт за собой лишние телодвижения.

V>Например, по сети приходят фрагментированные пакеты, данные могут быть невыровнены, SIMD непосредственно над данными в памяти уже не катит, требуется предварительное их копирование с выравниванием.

Чего?
V>С некоторой вероятностью даже не тупое копирование, а раскидывание данных из сетевого пакета в отдельные буфера.
V>Зато VLIW может совместить в одной команде предварительную подгрузку невыровненных данных для последующей операции и вычисления над загруженными на предыдущей операции данными с эффективностью SIMD. Разве что с кратной эффективностью, бо это как несколько векторных инструкций SIMD за такт. ))
Не очень понятно, как это так получится, и что помешает суперскаляру исполнять несколько SIMD за такт при тех же вводных.
Проблема с невыровненными данными типа разбора сетевых пакетов, HTTP хидеров или XML/JSON разметки — в том, что мы не знаем, насколько от текущего поинтера надо прыгать (= адрес, откуда грузить), пока не обработаем текущие данные). Пока мне непонятно, как эльбрус собирается это обойти. А если эльбрус это обходит, то точно также это обходит Интел при помощи развёртки цикла и использования регистрового банка для забивания конвеера.

V>Всё так.

V>Но этому компилятору можно много чего подсказывать в прагмах и через интристики.
Воот. А всего один пост назад интринсики SIMD были позорищем
V>Плюс развивается либа по высокоэффективным вычислениям, конечно: EML.
Да, это как раз и есть более-менее проверенный путь работы для всяких экзотических архитектур — разработка DSL. В виде, к примеру, библиотек.
Технология работы, с одной стороны, проще — сиди себе да выписывай интринсики, меняй раскладку данных, и т.п. "Глубина" работы меньше, чем для AOT и JIT компиляторов.
Зато "ширина" гораздо больше — то есть нам опять нужны сотни команд и десятки тысяч вовлечённых людей, чтобы оперативно покрыть весь спектр применений.

V>Для решения этой проблемы в процессор добавили специальный буфер подкачки данных, который работает достаточно прозрачно.

V>Идея такова, что компилятор самостоятельно или программист через инстистики раскидывает инструкции-подсказки относительно предварительной подкачки требуемых данных, а затем при обращении к данным по подкачанным адресам, обращение к таким данным происходит уже без задержки. И без инвалидации полезных данных в кеше.
Где можно про этот буфер почитать? Каков его размер?

V>Вот ребята поугорали, случайно столкнувшись, скорее всего, именно с этим:

Хм. Ребята измеряли работу с диском, а не с памятью. Поэтому сильно сомневаюсь, что там буфера уровня L0/L1 дадут какой-то хороший коэффициент. Надо профилировать.

V>Неужели у тебя претензии лично ко мне? ))

Нет, отчего же. Вы же к МЦСТ отношения не имеете.

V>Всего-то в 20 раз быстрее матрица перемножилась. Какой пустяк...

Относительно практически невекторизованной версии-то? А если скормить эту матрицу настоящей взрослой библиотеке с оптимизацией под AVX2?

V>Поэтому у Эльбруса со спекулятивным исполнением всё неплохо.

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

V>Не поэтому, а потому что рыночек порешал со своей инерцией и нежеланием платить больше ради светлого будущего. ))

Никакой инерции. Смотрите — вот Apple только что выкатила компьютеры на M1, и рыночек решительно закупает их большими тиражами.
В том-то и дело, что никакого светлого будущего не наступило — не получилось написать компилятор, который бы смог эффективно загрузить итаниум прикладной нагрузкой.
Не было у итаниумов никакого решающего преимущества на практике.

V>Он просто делает эти же техники кратно эффективнее в пересчёте на целевые вычисления.

Это смелые утверждения

V>Наоборот, один из удачников.

V>Похоже, ты оперируешь сугубо эмоциональным восприятием материала. ))
V>Найди то обсуждение и пройдись внимательней, что было сказано.
Ну, наверное я вас неверно понял. Не могу найти тот топик, увы.


V>И это неотвратимо, если насыщение технологий объективно, а не исскуственно.

V>Если же у Интел есть какой-нить припасённый козырь в кармане, который она достанет как только ей наступят на пятки — тогда и будем смотреть.
У них основной козырь — это отлаженный конвеер разработки.
Главная угроза для них — доминирующее положение на рынке. Сейчас эту угрозу эффективно устраняет AMD
Эльбрус, достигни он своих целей, мог бы стать тем самым лесником из анекдота.
Но для этого нужно пахать и пахать. Да, гигафлопсы на такт у него убедительные для перемножения матриц. Но сейчас нейронки мало обучают на гражданских CPU — всё больше делегируют в видеокарты. То есть в HPC придётся соревноваться не с ксеонами, а с NVidia. Неспроста AVX512 так плохо идёт: нахрен никому не нужно.
А вот быстрое выполнение гражданского софта — те самые микросервисы в облаке — это то, за что народ готов платить деньги.
V>А пока что будущее ближайших единиц лет более чем прозрачно.
У вас в слове "призрачно" опечатка.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.