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

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

Страницы: 16 7 8 9 10 11 Следующая »
#120
(Правка: 14:54) 14:46, 20 окт. 2019

eDmk

Вообще то такие вещи уже разруливаются через анализ cpuid и брать нужную функцию (через указатель например инициализировать), и эта функция как раз работает через максимально возможный набор инструкций. Intel Optimization Guide об этом упоминает, и даёт даже один из вариантов решений. Но там плюсы. На паскалях чуть иначе, но идея та же.

Короче, я реально понимаю твою мотивацию, поэтому мой софтрендер в базе написан SSE3 max + статическая линковка. Чтобы запускалось везде. Но производительность ты при этом сильно теряешь. Есть смысл работать через указатели. Сделай тестово на примере действительно важной функции умножения матрицы на массив векторов.
И разные реализации под разный набор инструкций. Ну на плюсах типа такого метода: void mul_mtx4_vtx4s(vector<vec4>& r, mtx4 const& m, vector<vec4> const& verts);

Ну и определяй нужный через cpuid и используй. На C/C++ просто на старте берётся указатель на функцию и инициализируется один раз нужной функций по результатам cpuid. Довольны будут все, и на старом железе, и на новом.

#121
(Правка: 15:19) 15:12, 20 окт. 2019

Truthfinder
> Или ты 32 битные процы не рассматриваешь?
>
>
Ниже Core 2 Duo не рассматриваю. Они уже ничего не стоят, но люди покупают.
В купе со средней видюшкой поиграть можно. Очень дешевая сборка получается.
За 7-10к целый комп собрать можно. Не у всех денег лом.

#122
(Правка: 19:58) 15:22, 20 окт. 2019

Truthfinder
> разные реализации под разный набор инструкций
Да я понимаю. У меня везде перегрузка функций сделана.
Я просто не успеваю писать пока. Я же не программист. Я дизайнер :)
Иначе основная работа стоять будет. Программинг так - хобби.

#123
19:23, 20 окт. 2019

Truthfinder

> Да это с первого поста было видно, что тут демагогия сплошная будет
Демагогия - это "видел/не видел", "я сильно сомневаюсь" и "вряд ли даст". Если ты не понял, о чем я говорю - просто проходи мимо.

> Ваши советы далеки от реальности, что там имеет смысл, а что нет.
Ого, у нас на форуме завелось мерило реальности.

#124
(Правка: 19:32) 19:32, 20 окт. 2019

Truthfinder

> тестово на примере действительно важной функции умножения матрицы на массив векторов.
Самая важная функция только-что называлась "умножение матрицы на вектор".

#125
(Правка: 20:46) 20:21, 20 окт. 2019

Ghost2
> на таких дубовых компиляторах, как у дельфей
Не пишите глупости про Delphi пожалуйста.
По скорости ничем от C++ не отличается. Ибо оба бинарные компиляторы.

Нормальные программисты не меряются «инструменами».
Они просто обсуждают алгоритмы.

Вот труфайндер пишет на Ц++, а я на паскале - и о боже, общий язык найден :)

#126
(Правка: 20:30) 20:30, 20 окт. 2019

Ghost2
> > тестово на примере действительно важной функции умножения матрицы на массив
> > векторов.
> Самая важная функция только-что называлась "умножение матрицы на вектор".

Ну так чем они отличаются то? Я видел ответ AoS SoA. Странно.

#127
9:34, 21 окт. 2019

eDmk

> По скорости ничем от C++ не отличается.
На самом деле, отличаются. Компиляторы C/С++ намного, намного медленнее работают. Потому что пытаются оптимизировать код.

> Нормальные программисты не меряются «инструменами».
Я не хотел задеть ничьих чувств, когда написал, что компилятор дельфей дубовый. Это просто факт. Мне очень жаль, что ты обиделся, приношу свои искренние извинения. Потом, я не программист. И ты там выше написал, что не программист. Нам нечем меряться только поэтому.

Truthfinder

> Ну так чем они отличаются то?
OMG, это невозможно. Отличается тем, что оптимизируется вся операция, а не составная ее часть. Ну вот и выше ты вспомнил про разные наборы. Попробуй так сдаелать с отдельной функцией - производительность будет засажена тупо косвенным вызовом помноженным на количество операций. На практике (опять же, не знаю как там в реальности) можно сделать базовые классы SIMD операций с виртуальными функциями и унаследовать конкретные реализации.

> Я видел ответ AoS SoA. Странно.
Ты увидел "например". На бумажке они ничем не отличаются, как были в девятнадцатом веке матрицы и векторы, так и сейчас они ими и остались.

#128
(Правка: 13:41) 9:39, 21 окт. 2019

Ghost2

> Потом, я не программист.

Это объясняет советы уровня джуниора.

> На самом деле, отличаются. Компиляторы C/С++ намного, намного медленнее
> работают. Потому что пытаются оптимизировать код.

Вот что правда, то правда. Умеете же толково, когда захотите. Оптимизатор реально сильно замедляет сборку. Я уже молчу про тот же simd. На делфях такой фокус с godbolt не провернёшь, как нам тут показывали, где gcc c O3 перемножение матриц делает по сути идеально.

> Попробуй так сдаелать с отдельной функцией

Да не буду я уже ничего пробовать. Потому что я не пробовал, а делал. И чем отличается знаю.
Один из важных (действительно важных) пунктов: матрица всегда в регистрах, не надо для каждого вектора её отдельно туда пихать. При одиночных вызовах это не так. Остальное и без меня сообразите, вы же тоже что-то понимаете в этом.

Остальное без комментариев, так как не несёт полезной информации.

#129
14:16, 21 окт. 2019

Truthfinder

> Это объясняет советы уровня джуниора.
Это не советы, а основы оптимизации под SIMD. Печально, что такой сеньор как ты, не в состоянии этого понять после первого сообщения. Если ты дальше хочешь поспорить хоть над одним моим заявлением в этой теме, то предлагаю тебе начинать с цитирования, а не с оценок реальности или моего уровня.

> Потому что я не пробовал, а делал.
То есть ты делал косвенный вызов на каждое отдельное умножение для поддержки разных наборов инструкций? Браво, конечно, но я бы на твоем месте об этом никому не рассказывал. Особенно в темах про оптимизацию чего-либо.

#130
(Правка: 14:27) 14:23, 21 окт. 2019

Ghost2
> Это не советы, а основы оптимизации под SIMD. бла-бла-бла...

Правила оптимизации они общие, касаются не только SIMD. Например: преждевременная оптимизация - зло. В книге Кнута ещё до этих ваших симдов написано.

> То есть ты делал косвенный вызов на каждое отдельное умножение для поддержки
> разных наборов инструкций?

Ну потому что ты не программист, и как и положено ничего не понял. А на эмоциях тут же сдампил бяку в пост. (Психанул то есть, для джунов норм, они часто эмоциональные)
Косвенный вызов делается не для мелких операций вроде сложения двух векторов, а для ресурсоёмкой, например: отрисовки треугольника, обработки массива. Тогда стоимость одного косвенного вызова стремится к нулю, на фоне стоимости более крупной операции. Например, отрисовка треугольника тысячи - десятки тысяч тактов. Сколько будет стоить одна косвенная адресация в данном контексте, в процентах от той, которую она вызывала?

#131
(Правка: 16:25) 16:22, 21 окт. 2019

Truthfinder

> Ну потому что ты не программист, и как и положено ничего не понял
Вот примерно как развивался диалог про косвенные вызовы:
G: Попробуй так сделать с отдельной функцией - производительность будет засажена
T: Да не буду я уже ничего пробовать. Потому что я не пробовал, а делал
G: Это круто, но с отдельной функцией так делать не надо
T: Сам дурак, потому что я имел в виду совсем не это, а вот это

То, что речь о "вот этом" идет еще с поста #127 (а глобально - с #89), сеньорам почему-то непонятно. Что-то я сейчас засомневаюсь, что ты сеньор.

А если с самого первого моего сообщения в теме начинать, то это звучало так:
G: Нет смысла оптимизировать отдельное умножение
T: Покажи как надо
G: Нужно умножать на массив
T: Какие отличия
G: Например, в раскладке данных
T: Nonsence по поводу реальности софтрендеров и размеров МПХ

Ты адекватный вообще?

#132
(Правка: 16:34) 16:26, 21 окт. 2019

Ghost2
> Что-то я сейчас засомневаюсь, что ты сеньор.

Я себя синьором не называл. Так что это чья-то фантазия. Остальное видимо тоже.

> Ты адекватный вообще?

Видно же как ты все диалоги переврал, они не отражают действительности, а только то, что ты так видишь. Ну то есть такие же фантазии, как и то, что я синьор.
А вот мою адекватность может определить только стороннее лицо, а не я и не ты. Потому что мы заинтересованные лица. Позови Suslik, пусть он рассудит. Ему то ты веришь?

#133
17:33, 21 окт. 2019

Truthfinder

> Я себя синьором не называл.
Ну, за 15 лет на форуме можно уже и сеньором стать. Хотя бы для того, чтобы в джуниоры кого-то определять.

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

> Позови Suslik, пусть он рассудит. Ему то ты веришь?
Вопрос про адекватность был риторическим. В том смысле, что ответ на него сам по себе не очень интересен. И не думаю, что мнение суслика что-то в этом плане изменит.

#134
(Правка: 17:38) 17:38, 21 окт. 2019

Ghost2
> Ну, за 15 лет на форуме можно уже и сеньором стать.
Мне надо?
> Какая именно фраза тебе не нравится?
Тебе зачем?
> Вопрос про адекватность был риторическим. В том смысле, что ответ на него сам
> по себе не очень интересен. И не думаю, что мнение суслика что-то в этом плане
> изменит.
Психиатр, в неадекватные определять?

Страницы: 16 7 8 9 10 11 Следующая »
ПроектыФорумОцените