Floating Point vs Long Long Integer

Jan 27, 2012 15:07


Добрый день!

У меня несколько теоретический и потому несколько праздый вопрос.

Известный уже пример, что 5/2=2.5, а в целочисленной арифметике = 2, и ошибка в 0.5 по отношению к 2 есть 25% -- этот пример, конечно, впечатляет, но только если человек работает в 8 битной картинке. Если файл 16-битный, ФШ отображает _номинальное_ значение, скажем, те же ( Read more... )

rpp technical, q&a

Leave a comment

sail2ithaki January 30 2012, 16:27:11 UTC
> >В Photoshop 15 бит, в ACR/LR - 22
> При 15 битах множитель будет не 256, а 128, что, конечно, пожиже, но тоже прилично.

Данный случай - демозаика, не имеющая к Photoshop'у никакого отношения. В демозаике дело обстоит вот так: http://www.libraw.org/articles/festina-lente.html http://www.libraw.su/articles/festina-lente.html



> Конечно, но раз наш инструмент (ФШ) перевел всё дело в свою шкалу, приходится ее цитировать.

В данном случае - она не позволяет легко осознать эффект.

Reply

andreybvorobyov January 31 2012, 10:10:31 UTC
Илья, спасибо за ссылки!
Для меня, однако, новость, что целочисленноая арифметика перестала быть более быстрой (или существенно более быстрой), чем float-арифметика.
Если заметного преимущества в скорости нет, то мой пост, конечно, не имеет смысла.

Reply

alextutubalin January 31 2012, 16:11:54 UTC
На SSE(AVX) в первом приближении можно считать, что скорость обработки 32-битных целых и 32-битных float - одинаковая. Две 128-битных операции + 1 128-bit load/store на такт.

Другой вопрос, что векторизация - дело такое, непростое, обычные компиляторы справляются плохо.

Reply

andreybvorobyov February 3 2012, 10:57:04 UTC
Да, спасибо, Алекс, похоже я сильно отстал от жизни. Надо будет озаботиться этим делом. И попробовать научиться правильно понукать компилятор, если это уже возможно, ибо в ассемблер спускаться совсем не хочется.

Reply

alextutubalin February 3 2012, 11:22:13 UTC
К сожалению, понукание компилятора требует сильной модификации программ по мелочам
- выравнивание (на 128 бит)
- pointer aliasing (либо restrict либо прагмами)
- длина массива.

Т.е. в случае мелких (но жручих) кусков кода - может быть и проще на "ассемблере" (макросах компилятора).

Reply


Leave a comment

Up