Re[14]: Производительность .Net на вычислительных задачах
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.10.20 14:39
Оценка:
Здравствуйте, vdimas, Вы писали:
V>Если промежуточные результаты в регистрах сохранить не получится (а в моих экспериментах не получится с запасом раз так в 50-100), то трафик с памятью будет в любом случае.
Интересно посмотреть на формулы, в которых это так устроено. Откуда берутся промежуточные результаты размером в 100 регистр файлов?

V>Причём, самая мощная из разновидностей, бо способна на произвольные фазовые задержки, т.е. позволяет даже описывать реверберацию и эхо.

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

V>Да пофик.

V>MemoryMarshal.CreateReadOnlySpan<T>(..) и зеркальный ему MemoryMarshal.AsRef<T>(..) — оба имеют нулевую стоимость в рантайм, это просто unsafe-реинтерпретация памяти.

Ну, так-то пофиг, но работать с этим неудобно. Это ж надо весь этот код по приведению Сolor* к Vector256<Color> порождать в MSIL.

V>При слишком большом N разворачивания цикла получается многократное N-дублирование тела цикла.

V>И чем больше в бинаре подобного кода, тем быстрее охлаждается кеш.
V>Всегда есть некий оптимум этого N.
А зачем слишком большой? При работе с SIMD больше чем 2-4 раза разворачивать и не приходится. Там всё равно всё быстро упирается в быстродействие памяти.
V>Включая здравый смысл, Intel не выгодно скрывать от общественности ту информацию, которая поможет скомпиллировать под их процессоры наилучший код.
Я имею в виду, что вряд ли бы они стали перемешивать код просто так, не имея к этому соображений.

V>"Я в курсе" не согласуется с написанным тобой выше:

V>

V>>>Формулы одинаковые для каждого канала, просто в памяти эффективней расположить подряд данные от одного канала, а не "смесь" их.
S>>По-прежнему не вижу обоснования этой эффективности.
S>>Например, если мне нужно умножить оба канала на 0.74, то я просто

Вполне согласуется. Если формула одинаковая, то она будет записываться в виде SIMD хоть для отдельных каналов, хоть для пары каналов через один.
Та же свёртка просто будет не с вектором (a0, a1, a2, a3), а c вектором (a0, a0, a1, a1).
Кстати, каков типичный размер IR для практических фильтров?

V>Например, подобного рода баловство:

V>http://files.rsdn.org/21096/MusicFX.png
Ну, так это ж картинка. Надо смотреть внутрь — как там эти фильтры представлены. И можно ли представить их лучше/удобнее, чем они уже представлены.

V>Для дотнета ничего вменяемого нет.

Ну, так это типичная catch-22: перформанс — отстой, поэтому никто ничего не делает. Поэтому перформанс — отстой.
V>Поэтому, оффлайн-вычисления крутят на Питоне, а реалтаймовые на плюсах.

V>Если ты вплотную к плюсам подобрался, то представления о том, как должны выглядеть современные эксперименты, скажем, в области ИИ, могут малость поменяться. ))
Мои представления изменить нетрудно — я об этом знаю примерно ноль.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.