Войти
ФлеймФорумПрограммирование

Буст pow2 (3 стр)

Страницы: 1 2 3
#30
15:45, 6 мар. 2018

}:+()___ [Smile]
> на ассемблер что-то ругается, отключил
"Yz"


#31
21:51, 6 мар. 2018

FordPerfect
> "Yz"
Не помогло, надо разбираться.
Кстати, я в тот раз забыл добавить -march=native и это, походу, основной флаг при оптимизации на современных компьютерах:

+ результаты
#32
8:25, 8 мар. 2018

Судя по тому, что введение зависимости (ret+=f(x+ret);) увеличивает время деления в 2.5 раза - деления действительно выполняются одновременно.

> Не помогло, надо разбираться.
Хм. Замена "+Yz" на "+x" на rextester работает:
http://rextester.com/AIUZO37958

Всё-равно загадочно, как __exp2f_finite так быстро работает.

#33
9:28, 8 мар. 2018

FordPerfect
> Всё-равно загадочно, как __exp2f_finite так быстро работает.
Вот это, кажется, оно. Таблицы + полином 2-й степени.
Кстати, в свежей версии таблицы серьезно подсократили, а полином сделали 3-й степени.

#34
10:42, 8 мар. 2018

}:+()___ [Smile]
О, здорово. Лениво было искать.

/*
ULP error: 0.502 (nearest rounding.)
Relative error: 1.69 * 2^-34 in [-1/64, 1/64] (before rounding.)
Wrong count: 168353 (all nearest rounding wrong results with fma.)
Non-nearest ULP error: 1 (rounded ULP error)
*/
Вот, эту информацию я искал. В "старой" такого нету.

В "старой" считают во float, в "новой" - в double.

Ну и таблица. Т. е. с SIMD-ификацией не очень хорошо.

#35
19:33, 8 мар. 2018

FordPerfect
> Ну и таблица. Т. е. с SIMD-ификацией не очень хорошо.
Если таблица маленькая и SIMD свежий, то нормально (SSSE3 pshufb, AVX2 vpermps).

Страницы: 1 2 3
ФлеймФорумПрограммирование

Тема в архиве.