Сообщение Re[21]: Производительность .Net на вычислительных задачах от 03.11.2020 23:48
Изменено 04.11.2020 10:04 vdimas
Re[21]: Производительность .Net на вычислительных задачах
Здравствуйте, Sinclair, Вы писали:
S>Ну, ок, 32 так 32. Всё равно мне пока непонятно, как эффективно делать табличные интерполяции с таким сигналом. С честным int16 мы могли бы просто строить полную таблицу безо всяких умножений и сложений — просто 128 килобайт lookup, описывающий любую потребную нам функцию без потери точности.
Это слишком большая таблица, она будет охлаждать кеш.
Для нелинейных преобразований достаточно 8-10 разрядов + линейной интерполяции по таблице.
S>А с флоатом мы сможем работать только в предположении, что он нормализован в каком-то узком диапазоне. Иначе у нас таблица окажется очень "неравномерной".
1. Ты прав, различные стандарты цифрового аудио-потока регламентируют т.н. "нормальный сигнал", например, -127.0 ... +127.0, -1.0 .. +1.0 (второй вариант мне кажется более естественным)
2. Но это важно только кастомного какого-нить, т.е. заданного по точкам нелинейного искажения.
Если же брать основные нелинейные ф-ии, используемые для искажения сигнала, то все они являются хорошо масштабируемыми.
Это ф-ии:
— log, exp
— atan, acotan
— x^2/sqrt, x^4/sqrt4, ...
Например, вид log/exp не зависит от амлитуды входного сигнала (с точностью до линейных преобразований графика).
Аналогично с x^2 и обратным sqrt.
S>Ну, ок, 32 так 32. Всё равно мне пока непонятно, как эффективно делать табличные интерполяции с таким сигналом. С честным int16 мы могли бы просто строить полную таблицу безо всяких умножений и сложений — просто 128 килобайт lookup, описывающий любую потребную нам функцию без потери точности.
Это слишком большая таблица, она будет охлаждать кеш.
Для нелинейных преобразований достаточно 8-10 разрядов + линейной интерполяции по таблице.
S>А с флоатом мы сможем работать только в предположении, что он нормализован в каком-то узком диапазоне. Иначе у нас таблица окажется очень "неравномерной".
1. Ты прав, различные стандарты цифрового аудио-потока регламентируют т.н. "нормальный сигнал", например, -127.0 ... +127.0, -1.0 .. +1.0 (второй вариант мне кажется более естественным)
2. Но это важно только кастомного какого-нить, т.е. заданного по точкам нелинейного искажения.
Если же брать основные нелинейные ф-ии, используемые для искажения сигнала, то все они являются хорошо масштабируемыми.
Это ф-ии:
— log, exp
— atan, acotan
— x^2/sqrt, x^4/sqrt4, ...
Например, вид log/exp не зависит от амлитуды входного сигнала (с точностью до линейных преобразований графика).
Аналогично с x^2 и обратным sqrt.
Re[21]: Производительность .Net на вычислительных задачах
Здравствуйте, Sinclair, Вы писали:
S>Ну, ок, 32 так 32. Всё равно мне пока непонятно, как эффективно делать табличные интерполяции с таким сигналом. С честным int16 мы могли бы просто строить полную таблицу безо всяких умножений и сложений — просто 128 килобайт lookup, описывающий любую потребную нам функцию без потери точности.
Это слишком большая таблица, она будет охлаждать кеш.
Для нелинейных преобразований достаточно 8-10 разрядов + линейной интерполяции по таблице.
S>А с флоатом мы сможем работать только в предположении, что он нормализован в каком-то узком диапазоне. Иначе у нас таблица окажется очень "неравномерной".
1. Ты прав, различные стандарты цифрового аудио-потока регламентируют т.н. "нормальный сигнал", например, -127.0 ... +127.0, -1.0 .. +1.0 (второй вариант мне кажется более естественным)
2. Но это важно только для кастомного какого-нить, т.е. заданного по точкам нелинейного искажения.
Если же брать основные нелинейные ф-ии, используемые для искажения сигнала, то все они являются хорошо масштабируемыми.
Это ф-ии:
— log, exp
— atan, acotan
— x^2/sqrt, x^4/sqrt4, ...
Например, вид log/exp не зависит от амлитуды входного сигнала (с точностью до линейных преобразований графика).
Аналогично с x^2 и обратным sqrt.
S>Ну, ок, 32 так 32. Всё равно мне пока непонятно, как эффективно делать табличные интерполяции с таким сигналом. С честным int16 мы могли бы просто строить полную таблицу безо всяких умножений и сложений — просто 128 килобайт lookup, описывающий любую потребную нам функцию без потери точности.
Это слишком большая таблица, она будет охлаждать кеш.
Для нелинейных преобразований достаточно 8-10 разрядов + линейной интерполяции по таблице.
S>А с флоатом мы сможем работать только в предположении, что он нормализован в каком-то узком диапазоне. Иначе у нас таблица окажется очень "неравномерной".
1. Ты прав, различные стандарты цифрового аудио-потока регламентируют т.н. "нормальный сигнал", например, -127.0 ... +127.0, -1.0 .. +1.0 (второй вариант мне кажется более естественным)
2. Но это важно только для кастомного какого-нить, т.е. заданного по точкам нелинейного искажения.
Если же брать основные нелинейные ф-ии, используемые для искажения сигнала, то все они являются хорошо масштабируемыми.
Это ф-ии:
— log, exp
— atan, acotan
— x^2/sqrt, x^4/sqrt4, ...
Например, вид log/exp не зависит от амлитуды входного сигнала (с точностью до линейных преобразований графика).
Аналогично с x^2 и обратным sqrt.