Войти
ПроектыФорумОцените

SR64 (тестирование) (4 стр)

Страницы: 13 4 5 611 Следующая »
#45
13:32, 14 окт. 2019

Truthfinder
> P.S. Повторюсь, это алгоритмы Intel.
Вот это и есть транспонирование.

У меня также сделано.

+ Показать

#46
13:33, 14 окт. 2019

eDmk

Вот и разобрались. Но это оба алгоритма интеловские. Так что смысл тут воевать? Равно как и умножение.

#47
(Правка: 13:36) 13:34, 14 окт. 2019

Truthfinder
> Будет интересно прогнать через Intel® Architecture Code Analyzer и сравнить эти
> алгоритмы.
Не получится. Уже пробовал. Код Delphi ничем не анализируется.
Все приблуды от Microsoft и Intel не понимают его. Структура EXE другая.

#48
13:35, 14 окт. 2019

Truthfinder
> Так что смысл тут воевать?
Я не воевал. Это народ навязчивый, как агрессивные комивояжеры.
Надо так делать и все тут. Это и напрягает.

#49
13:36, 14 окт. 2019

eDmk
> Не получится. Уже пробовал. Код Delphi ничем не анализируется.
> Все приблуды от Microsoft и Intel не понимают его.

А зачем мне делфи? Если у меня найдётся время на интринсики перевести ваш D алгоритм, можно будет сравнить.

#50
(Правка: 13:39) 13:38, 14 окт. 2019

eDmk
> Я не воевал. Это народ навязчивый, как агрессивные комивояжеры.
> Надо так делать и все тут. Это и напрягает.

Ну там все хороши. Вопросами "А почему не так?" задолбают без вариантов всегда. Но и спорить по поводу транспонирования шафлами тоже не стоило. Вы же ошиблись. Если бы shuffle работал как shufd (один регистр), то да, а shuf работает с 2мя регистрами.

#51
13:50, 14 окт. 2019

eDmk
> Они дали мне ссылку на супер-пупер код, который не работает.

Этот код неправильный, да. Если делать транспонирование шаффлами, то нужно перемешивать разные регистры, а не один (код сишной _MM_TRANSPOSE4_PS приводили, там разные).
Ну ладно, ошиблись комментаторы. Но вместо того, чтобы посмотреть _MM_TRANSPOSE4_PS и найти ошибку, вы занимаетесь склочничеством.
Хотя это же вам нужно - ускорять ваш код.
В сообщении 26 я расписал, как обойтись вообще без транспонирования. О чём, кстати, вы должны были прочитать самостоятельно по ссылке, кот. вам давали. Но вы похоже не читаете ни то, ни другое, вас волнует только то, что вас на Хабре не уважают.
Вот за это и не уважают.

Сравнение с сишным кодом: MatrixMul

#52
13:51, 14 окт. 2019

Truthfinder
> Вы же ошиблись.
Для своего случая я не ошибся. Для их случая возможно. Но мне их способы не подходят.
Несовместимый код. Что я и пытался до них донести, но им наплевать. Меня заминусовали за безобидную фразу «У меня нет C++. Я не могу проверить». Это нормально?
В общем я снес статью и комментарии. Пускай друг-друга кусают.

>А зачем мне делфи?
Вы же спрашивали про анализ, я вам ответил, что у меня дельфи и код не поддается анализу.
У эмбаркадеро нет таких приблуд для анализа. Есть сторонние, но я их не использую. Они денег стоят.
И вообще я никогда никому не навязывал Delphi. Просто это аналогичная среда и в ней тоже можно что-то делать. Нет у меня C++. Вы меня забаните теперь? ;)

#53
13:59, 14 окт. 2019

eDmk
> И вообще я никогда никому не навязывал Delphi. Просто это аналогичная среда и в
> ней тоже можно что-то делать. Нет у меня C++. Вы меня забаните теперь? ;)

Делфи тут ни при чём, ассемблер он одинаковый. Просто ваш вариант можно ещё больше ускорить.

#54
(Правка: 14:05) 14:01, 14 окт. 2019

eDmk

Фишка в том, что независимые умножения/сложения(add,mul,fmadd) могут выполнятся по две за такт (CPI=0.5). А вот горизонтальные сложения например нет (CPI=2). То есть если можно от второго свести к первому, то алгоритм будет эффективнее.

#55
(Правка: 14:32) 14:29, 14 окт. 2019

Truthfinder
> Просто ваш вариант можно ещё больше ускорить.
Да не вопрос. Вот последний вариант:

+ Показать

Если можно ускорить я только рад буду.
Главное чтобы не нарушилось умножение и сложение. Чтобы правила умножения матриц соблюдались.

Кстати разница по скорости между insertps и unpcklps /unpckhps всего 12,5%.
Т.е. мой блок транспонирования почти такой же шустрый как и интеловский.

#56
(Правка: 14:38) 14:38, 14 окт. 2019

eDmk
> Т.е. мой блок транспонирования почти такой же шустрый как и интеловский.

А зачем транспонирование я не могу понять только? Транспонированные матрицы можно умножать без транспонирования. На вектор тоже самое.

#57
(Правка: 14:49) 14:41, 14 окт. 2019

Truthfinder
> А зачем транспонирование я не могу понять только?
В #42 ссылка на правила умножения матриц.
Если лень читать, то вкратце правила умножения:
Ряды умножаются на столбцы с последующим сложением элементов.
Можно не транспонировать, но матрица B уже должна быть транспонированной по отношению к матрице A. Это просто математические правила. Программирование тут не при чем.

Если народным языком, то умножается сикось-накось, а не сикось на сикось :)

#58
14:47, 14 окт. 2019

Вообще на мой взгляд правильно не транспонирование, а транспозиция от англ. Transpose.
Просто перестановка элементов.

#59
14:48, 14 окт. 2019

eDmk

Теперь понятно, спасибо. Ты транспонируете одну матрицу, перемножаете, и дальше используете горизонтальные сложения.
...
PROFITПечаль

Страницы: 13 4 5 611 Следующая »
ПроектыФорумОцените