Комментарий к Статье Практическое применение SSE расширения
прочёл статью - отлично написано. Для меня сейчас одно только неясно - выравнивание надо производить для физического адреса памяти или логичнского выделяемого ОС? кто есть живой просветите плз.
Max_Fly
Относительно 16 байт (и даже 4096) адреса физичекой памяти и логичекой выравнены одниково. Не забивай голову :)
jm
Дарова, дружище!
Наконец-то ты ее дописал :-)
Молодец- мне понравилось! Нам сейчас, как раз, читают нечто похожее на базе.
Очередной раз убедился в том, что не зря называю тебя "фанатом матриц", за что, тут же, сам был назван "человеком-пароходом" ;-)
Себя я тоже считаю виноватым- давно к тебе в IRC не ломился. Постараюсь исправиться :)
Лане привет.
Да простят меня модераторы за офф-топ %)
voxatu
хаха :) пять баллов :).. Ну и с Добрым утром.
_Winnie
согласен - тут я наверное перемудрил. Просто от QNX-а мозги заворачиваются. :). Кстати если перемножать так как на интеле (и в этой статье показательно показано) это получается здорово. А вот при попытке перемножить две матрицы размером этак 1000х500 - фигня выходит. получается тот самый пример - как делать не надо ;-). Кто знает хороший способ транспонирования матриц - не сочтите за наглость - ткните носом.
Классная статья, но.... Вот что у меня получается при попытке компилировать в Release:
pure dp : 0.000002 result: 10.000000
fpu dp : 0.000002 result: 10.000000
sse dp : 0.000003 result: 10.000000
pure cp : 0.000002 result: (-4.000000 8.000000 -4.000000 0.000000)
fpu cp : 0.000002 result: (-4.000000 8.000000 -4.000000 0.000000)
sse cp : 0.000003 result: (-4.000000 8.000000 -4.000000 0.000000)
sse mmm: 0.000009 result:
[0.000000 1.000000 2.000000 3.000000]
[4.000000 5.000000 6.000000 7.000000]
[8.000000 9.000000 10.000000 11.000000]
[12.000000 13.000000 14.000000 15.000000]
sseb mmm: 0.000019 result:
[0.000000 1.000000 2.000000 3.000000]
[4.000000 5.000000 6.000000 7.000000]
[8.000000 9.000000 10.000000 11.000000]
[12.000000 13.000000 14.000000 15.000000]
ssei mmm: 0.000009 result:
[0.000000 1.000000 2.000000 3.000000]
[4.000000 5.000000 6.000000 7.000000]
[8.000000 9.000000 10.000000 11.000000]
[12.000000 13.000000 14.000000 15.000000]
pure mmm: 0.000009 result:
[0.000000 1.000000 2.000000 3.000000]
[4.000000 5.000000 6.000000 7.000000]
[8.000000 9.000000 10.000000 11.000000]
[12.000000 13.000000 14.000000 15.000000]
Я чуть не заплакал, увидев это :-(( проц Athlon Barthon 2500+ , 512 Mb
Freezy
от счастья?
Какое тут счастье? Разве не видно, что Pure C обделывает реализацию на ASM :'(((
Насколько понимаю в статье ошибка. Причём это видно по картинке.
shufps xmm0,xmm0,00011011b не переворачивает, а сохраняет порядок.
Переворачивает как раз shufps xmm0, xmm0, 11100100b
Тема в архиве.