Автор Тема: Дискуссия на тему производительности DF  (Прочитано 7506 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Andys

  • Ветеран
  • *****
  • Сообщений: 1220
  • Maidophile
    • Просмотр профиля
Увидел вот это : В процессорах Intel Skylake реализован «обратный Hyper-Threading»
Возможно, фпс-смерть нам не грозит, см. график и разницу в производительности при одном нагруженном потоке.
Если раньше это было в виде идеи, не доходящей до масс, то сейчас уже появились реальные процессоры, которые можно будет купить без продажи почки.
Зависит, конечно, от того, насколько ДФ похожа на ту программу, для которой составлялся график, но появилась хотя бы надежда...
Пока что не вижу в инете, чтобы кто-то тестировал ДФ на новых процах, придется ждать появления в продаже

Оффлайн Midas

  • Ветеран
  • *****
  • Сообщений: 1498
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #1 : 19 Августа 2015, 14:24:55 »
Andys, интересно.
Вот узнает Тоади про такую штуку, купит, обрадуется возросшей производительности ДФ и с хихиканьем добьет ФПС до привычного уровня, но уже на новом навороченном процессоре.

Оффлайн Holkin

  • Постоялец
  • ***
  • Сообщений: 172
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #2 : 19 Августа 2015, 15:08:34 »
Увидел вот это : В процессорах Intel Skylake реализован «обратный Hyper-Threading»
Имея некоторый знания в области, нифига не могу понять чего нового и радикального они придумали и главное чем оно может помочь ДФ.
Что бы вы понимали, гипертрединг это штука, которая может быстро переключить контекст между потоками выполнения. Пока один поток ожидает выполнения длинной команды, процессор мог бы перемножить сотню (а то и тысячу пар чисел). Вот это время простоя можно заполнить если по-умному переключать потоки выполнения. Беда в том, что само переключение затратное. Ну им удалось это сделать менее затратным, да еще и уровнем пониже операционной системы (это всегда считалось круто, но часто экономически нецелесообразно).
Теперь они хотят сказать, что они собираются один поток раздробить как только можно? Так это вроде уже давно все сделано. Пока команда выполняется там рядом уже загружена и подготовлена следующая. Именно поэтому они пишут частоту 3 ГГц когда там реально на порядок меньше. А распределить 100 однообразных операций на два потока может и не получиться, если там имеется зависимость по данным. А если там зависимость или нет лучше всего определяется на этапе компиляции программы, в рантайме это не то чтобы нереально, но крайне маловероятно что кто-то когда-то этим будет заниматься (если покопаться, то можно найти чудесное направление развития вычислительной техники, которое зашло в тупик, можно даже фильм снять как мировые корпорации сговорились против dataflow).
Единственных их шанс это избыточность вычислений для ситуаций типа "если А то Б иначе В", когда А, Б и В выполняются параллельно, а потом А решает кто из Б или В прав. Но это в свою очередь гарантирует конфликты  для Б и В (а может и А) доступа к ресурсам.
Если у них получится, то ДФ можно будет повысить производительность. Но это фокусы высшего пилотажа.

Оффлайн Dj007I

  • Постоялец
  • ***
  • Сообщений: 129
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #3 : 19 Августа 2015, 22:13:08 »
Может не подбирать процессоры под дф, а поймать и заставить жабу переписать к следующему релизу всё это говно под многопоточность.
xenofeel, SemonX, FearOfTheLight

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #4 : 20 Августа 2015, 00:53:52 »
Может не подбирать процессоры под дф, а поймать и заставить жабу переписать к следующему релизу всё это говно под многопоточность.
Ага, и ждать следующего релиза лет десять.

Оффлайн Holkin

  • Постоялец
  • ***
  • Сообщений: 172
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #5 : 20 Августа 2015, 10:25:16 »
всё это говно
На минуточку одна из игр с самой глубокой механикой, которую пытались клонировать, но не смогли.

Оффлайн Holkin

  • Постоялец
  • ***
  • Сообщений: 172
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #6 : 21 Августа 2015, 21:35:17 »
Я в печали... и зачем я писал "возможно" и "Зависит, конечно, от того, насколько ДФ похожа на ту программу, для которой составлялся график", если это никто не читает?
Так как раз прочли. Одну лишь ссылку на рекламный проспект я бы не комметировал. А так мне стало интересно что там в деталях и как это в принципе можно было сделать. Запостить решил только затем, что это Интернет и всегда рядом может пробежать какой-нибудь эксперт в экзотических областях, поразиться неведению обывателей (т.е. моему) и рассказать много интересного. Да и изначальная ссылка на материал наверное с той же целью была.

Оффлайн Andys

  • Ветеран
  • *****
  • Сообщений: 1220
  • Maidophile
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #7 : 22 Августа 2015, 01:56:33 »
Я в печали... и зачем я писал "возможно" и "Зависит, конечно, от того, насколько ДФ похожа на ту программу, для которой составлялся график", если это никто не читает?
Так как раз прочли. Одну лишь ссылку на рекламный проспект я бы не комметировал. А так мне стало интересно что там в деталях и как это в принципе можно было сделать. Запостить решил только затем, что это Интернет и всегда рядом может пробежать какой-нибудь эксперт в экзотических областях, поразиться неведению обывателей (т.е. моему) и рассказать много интересного. Да и изначальная ссылка на материал наверное с той же целью была.
"В принципе" - имо, ускорение выполнения вполне реально, но не за счет некоей фиктивной технологии, а за счет ручной оптимизации машинных команд. В силу своего хобби, мне часто приходится дизассемблировать и дебагить экзешники. И, из того, что я видел - процесс компиляции вполне мог бы выиграть за счет человека, проглядывающего конечный бинарник и тупо вырезающего лишнее. Чего стоят встреченные мной (не в дф) последовательности команд типа:
mov eax, [xxxxx]
mov ecx, [xxxxx]
mov ecx, eax
// ну то есть, вторая команда - абсолютно лишняя, ибо в ecx слежующей строчкой записывается другое значение
И это не считая ненужных в некоторых местах DIV и MUL (за которые меня трахали на сдаче зачета в универе, ибо они жрут дохера тактов...). Но это я так, отвлекся.
На самом деле - нам нужна жертва, которую мы заставим потратить 28к на процессор и 10к на матплату, ибо они уже продаются. И тогда мы все узнаем из первых рук :)

А так, по хорошему - что мешает написать некий алгоритм, который прочтет весь машинный код, выделит некие области кода, которые могут выполняться параллельно, и запустит их на разных ядрах одновременно (без вмешательства этого исходного процесса). Дело только за этой обработкой и сложностью исходного алгоритма.
Возможно, что авторы теста запускали что-то типа "обычной офисной нагрузки", а не калькулятор с расчетом 999999!. Поскольку деталей теста нет, а ДФ все же посложнее расчета факториала, то остается надеяться, о чем я и говорил раньше. Я предпочитаю надеяться, да.
« Последнее редактирование: 22 Августа 2015, 02:07:41 от Andys »

Оффлайн Holkin

  • Постоялец
  • ***
  • Сообщений: 172
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #8 : 23 Августа 2015, 12:15:12 »
DIV и MUL должны много жрать на микроконтроллерах и старых процессорах. Умножение точно можно за два такта сделать и оно уже наверняка сделано, с делением так красиво не получается, но оптимизация тоже есть. По тактам эти операции можно считать быстрыми, т.к. кеш промах это на порядок или два больше, а страничный промах это еще на два-три порядка сверху.
Компиляторы неидеальны, это действительно так. Но все эти оптимизации, которые можно сделать просто посмотрев на код, в компилятор добавляются постоянно. Ну по крайней мере почему бы разработчикам компиляторов этого не делать.
Еще есть такая штука, что 90% кода выполняется 10% всего времени, так что нужно знать где оптимизировать. И если человек столько лет уже разрабатывает игру и она у него уперлась в производительность, то он наверняка над этим думал.
Анализировать исполняемый код на возможность распараллеливания это идея интересная. В прицнипе это то чем занимается вычислительная техника последние лет 40. Просто я тут на позициях скептика, который считает что все уже давно придумано, а реализовано только то, что экономически выгодно. Оно вероятно не так.
insolor, Andys, Echo-Six, FearOfTheLight

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #9 : 23 Августа 2015, 13:54:19 »
DIV и MUL должны много жрать на микроконтроллерах и старых процессорах. Умножение точно можно за два такта сделать и оно уже наверняка сделано, с делением так красиво не получается, но оптимизация тоже есть. По тактам эти операции можно считать быстрыми, т.к. кеш промах это на порядок или два больше, а страничный промах это еще на два-три порядка сверху.
Компиляторы неидеальны, это действительно так. Но все эти оптимизации, которые можно сделать просто посмотрев на код, в компилятор добавляются постоянно. Ну по крайней мере почему бы разработчикам компиляторов этого не делать.
Еще есть такая штука, что 90% кода выполняется 10% всего времени, так что нужно знать где оптимизировать. И если человек столько лет уже разрабатывает игру и она у него уперлась в производительность, то он наверняка над этим думал.
Анализировать исполняемый код на возможность распараллеливания это идея интересная. В прицнипе это то чем занимается вычислительная техника последние лет 40.
Соглашусь, оптимизировать нужно не код, а алгоритмы. Если выбран неоптимальный алгоритм, то идеальный машинный код тут не спасет. И даже суперумный компилятор заменить неоптимальный алгоритм на оптимальный не сможет.

По поводу оптимизаций компилятором - иногда хочется убить тех, кто их реализовывал. Вот, например, функция на 200 строк, которая пытается учесть все варианты оптимизаций тупо кода инициализации строки. >:(
Просто я тут на позициях скептика, который считает что все уже давно придумано, а реализовано только то, что экономически выгодно. Оно вероятно не так.
А вот это не понял. Взаимоисключающие параграфы?

FearOfTheLight

  • Гость
Re: Дискуссия на тему производительности DF
« Ответ #10 : 23 Августа 2015, 18:10:45 »
вечный двигатель и многоразовая бумага давно придумана, но её никто не производит т.к. прибыль это не несёт(долгосрочную по крайней мере). так и с процами/компиляторами. компилятор с++ от intel стоит много, компилит хорошо но начинает "высчитывать смысл жизни" если завидит AMD или другие. да и многие алгоритмы после изобретения покрываются NDA чтобы конкуренты не прознали, а другим приходится заново изобретать похожее во имя прогресса или профита.

Оффлайн nadeys

  • Новичок
  • *
  • Сообщений: 32
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #11 : 26 Августа 2015, 16:50:20 »
Продолжу ваш оффтоп грустной новостью - "Intel представила новый Xeon E7 v4 24 ядра и частота 2500 МГц."

Если шас на одном ядре у меня 30 бород при 100 фпс, то при 24 ядрах... это... это... 720 бород! Вот такая грустная новость D:

Оффлайн insolor

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1064
  • Adequate Reverse Engineer
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #12 : 26 Августа 2015, 17:03:28 »
Продолжу ваш оффтоп грустной новостью - "Intel представила новый Xeon E7 v4 24 ядра и частота 2500 МГц."

Если шас на одном ядре у меня 30 бород при 100 фпс, то при 24 ядрах... это... это... 720 бород! Вот такая грустная новость D:
Ну да, все правильно: 720 бород при 4 фпс.
P.S. Если бы "бороды" были абстрактными акторами, общающимися со внешним миром только посредством посылки сообщений - то они отлично бы распараллелились на все 24 ядра. А так - 24 ядра не означают увеличения производительности в 24 раза.

FearOfTheLight

  • Гость
Re: Дискуссия на тему производительности DF
« Ответ #13 : 26 Августа 2015, 18:00:50 »
нужно заразить жаба эрлангом. слава многопоточность! слава параллелизм!
https://www.youtube.com/watch?v=xrIjfIjssLE

Оффлайн Holkin

  • Постоялец
  • ***
  • Сообщений: 172
    • Просмотр профиля
Re: Дискуссия на тему производительности DF
« Ответ #14 : 27 Августа 2015, 04:16:37 »
P.S. Если бы "бороды" были абстрактными акторами, общающимися со внешним миром только посредством посылки сообщений - то они отлично бы распараллелились на все 24 ядра. А так - 24 ядра не означают увеличения производительности в 24 раза.

Хотите ликбез на тему производительности?
Все конечно есть в интернете, но кто будет специально искать.

Если вкратце, то 24 ядра это бред. Меня учили, что больше 16 не стоит, и моя интуиция с этим согласна. 16 это конечно не закон природы, а просто число, но это наверное ближайшое число степерь двойки к тому что уже математически можно посчитать. А причина в доступе к памяти. Даже если нет зависимости по данным память имеет ограниченно количество каналов доступа к ней. Одноканальной явно будет мало.
Так что маркетинг это все. У видеокарты там тысячи ядер внутри, но их видимо продают по количеству видеопамяти. А вот процы по ядрам и гигагерцам, как когда-то фотики по мегапикселям.