Войти
ПрограммированиеФорумОбщее

SIMD оптимизации (18 стр)

Страницы: 117 18 19 2026 Следующая »
#255
(Правка: 16:39) 15:47, 30 окт. 2018

foxes
> У меня к сожалению старый не читаемый код в машинных кодах и тут весь цикл по
> горизонтали

И откуда он? И он не очень хорош походу. Например цвет во флоатах сделан и конвертится в ubyte8. Каждый пиксель. Это плохо.


#256
(Правка: 17:20) 17:10, 30 окт. 2018

Truthfinder
> И откуда он?
технически из 90-2000-x запустить разве что из досбакса получиться, но почему то не работает из за переключения разрешения экрана через биос.
Да это сделано для интерполяции и в этом нет ничего плохого, с текстурами проще на 2 строчки и там нет SSE за ненадобностью - его заменяют две строчки. Для первых процессоров SSE не поддерживало целых чисел поэтому во float.
К этому всему можно добавить еще 3 пикселя если брать SEE. Но у меня только на MMX есть более отработанный вариант.

#257
(Правка: 20:10) 18:34, 30 окт. 2018

foxes
> Для первых процессоров SSE не поддерживало целых чисел поэтому во float.

Целочисленная математика появилась раньше, и называлась MMX. Хоть и с вдвое меньшими регистрами, но для обработки цвета это 2 RGBA пикселя. Ну ты итак их заиспользовал. float4 цвет всё сводит на нет учетверением объёмов работы с памятью.

#258
20:47, 30 окт. 2018

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

> Самое очевидное. Вычисление квадратного корня. Ошибка округления в (B/2)²-A·C может стоить нам половины знаков корня.
А ошибка в A/B/C будет нам стоить гораздо больше, поэтому ошибку округления можно не принимать во внимание.
А вот сама операция квадратного корня неустойчива в районе нуля, за что стоит надавать по ушам криворуким дизайнерам IEEE 754.
Правильный квадратный корень должен давать +0 для отрицательных чисел, ибо ошибка округления легко может перебросить через ноль.

> Другой пример - детерминант 2x2. Как раз таки edge functions, ориентированная площадь и т. д..
Вот для растеризации стоит сначала перевести в fixed-point, а потом считать всякие детерминанты.
Как раз чтобы выкинуть вырожденные треугольники нулевой площади.

> Ещё пример - повышенная точность. Нередко промежуточные результаты охота обрабатывать в повышенной точности
Лично я всего один раз встречался с необходимостью повышенной точности (и то, скорее, теоретически, на реальных расчетах до предела double не дошло).
Это были расчеты по Монте-Карло с большим количеством отсчетов, по которым надо было усреднять.
И даже там я бы предпочел fixed-point требуемой битности с опциональным округлением через рандом.

> Оно нередко используется для faithful-rounded трансцендентных функций
На практике у меня много раз была необходимость считать разные функции с пониженной точностью быстрее, и никогда точнее.

В общем, у меня впечатление, что вся это correctly-rounded движуха — это математическое развлечение, почти не имеющее практической ценности.

#259
(Правка: 3:03) 3:00, 3 ноя. 2018

foxes
> Но у меня только на MMX есть более отработанный вариант.
Truthfinder
> Целочисленная математика появилась раньше, и называлась MMX.
А я то думал я на MMX писал, а это было на самом деле MMX. Ну тогда понятно почему это был 90-2000, это же было раньше до SSE... Спасибо кеп, я теперь понял что я сам написал.
Truthfinder
> float4 цвет всё сводит на нет учетверением объёмов работы с памятью.
Каким же образом интересно? Видимо если только для регистров память используется - это интересны такой процессор, да. Модель не подскажешь?

#260
(Правка: 14:47) 14:39, 3 ноя. 2018

foxes
> А я то думал я на MMX писал, а это было на самом деле MMX.

Спасибо за подмеченную тавтологию.

> Каким же образом интересно?
> Видимо если только для регистров память используется

Пишем по разному. Делаем замеры сами или тулзами. Удивляемся полученным результатам. Получаем бесценный опыт. Гуглим. Читаем инеты. Узнаём, что современные процы в разы быстрее памяти работают. Удивляемся снова.

P.S. Да, раньше было дешевле прокинуть через память/стек (spectrum). Теперь же часто выгоднее пересчитать процом, чем запросить из памяти.

#261
15:19, 3 ноя. 2018

А кто-нибудь пробовал ISPC (https://ispc.github.io/) ?
Есть что хорошего или плохого про него сказать ... ?

#262
(Правка: 17:05) 17:01, 3 ноя. 2018

Truthfinder
> Да, раньше было дешевле прокинуть через память/стек (spectrum)
Не вижу аналогии с моим примером.

Вы как начальник на собеседовании
"Начальник: ну и что произошло на вашем предыдущим месте работы?"
"Петя: Вася свой проект завалил, а мой в одиночку фирму не вытянул, ну и фирму прикрыли."
"Начальник: Ну и зачем вы Васе проект завалили?"
У меня нет слов.
#263
20:43, 3 ноя. 2018

foxes
> Не вижу аналогии с моим примером.

Я тоже не понимаю, что значит для регистров память используется. Можно как-то уточнить о чём речь? Как для регистров может использоваться память?

#264
(Правка: 22:45) 22:44, 3 ноя. 2018

Truthfinder
> Я тоже не понимаю, что значит для регистров память используется. Можно как-то уточнить о чём речь? Как для регистров может использоваться память?

https://www.youtube.com/watch?v=khYWkgbuv9s и ... электромагнит в придачу

#265
22:50, 3 ноя. 2018

FROL

Отстал я от современных мегатехнологий. Это будет прорыв.

#266
22:54, 3 ноя. 2018

Truthfinder
Ага, такой же как электромагнит )

#267
(Правка: 3:14) 3:03, 4 ноя. 2018

Truthfinder
> Как для регистров может использоваться память?
Ну так не я это начал.
Truthfinder
> float4 цвет всё сводит на нет учетверением объёмов работы с памятью.
Так что сам и объясняй. А то получается в огороде бузина, а в Киеве дядька.

#268
7:57, 4 ноя. 2018

foxes
> > float4 цвет всё сводит на нет учетверением объёмов работы с памятью.
> Ну так не я это начал.

Где тут написано про регистры? Я писал про работу с памятью.

#269
11:41, 4 ноя. 2018

Сменим тему )

Кто-нибудь пробовал ISPC (https://ispc.github.io/) ?
Есть что хорошего или плохого про него сказать ... ?

Страницы: 117 18 19 2026 Следующая »
ПрограммированиеФорумОбщее