Заблокирован Статус: Не в сети Регистрация: 07.04.2008 Фото: 4
Yalg писал(а):
Неее, ты не понял, там материнки 200-ого чипсета!
Цитата:
преемниками Skylake станут 14-нм процессоры поколения Kaby Lake, которые смогут работать в существующих материнских платах на базе наборов логики Intel "сотой серии"
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
motnahp писал(а):
Вот именно, берем ИИ 100%,добавляем физику 100% и основной поток где все обрабатывается воедино 100%, получаем 3 полностью загруженных ядра(в реале конечно будет ближе к 80%) и по мелочи, т.е. больше 4х потоков/ядер некоторым играм не надо. Думаю именно об этом и хотел сказать vbh99.
ПРикол в том, что нормально написанные приложения пишутся под любое число ядер. Типичный жизненный пример - 7z и прочие архиваторы. Хоть 200 ядер делай, в 200 раз будет быстрее.
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Member
Статус: Не в сети Регистрация: 02.10.2007 Откуда: Пермь Фото: 1
fobos40 писал(а):
Уважаемый поЦреот.
Я не знаю, что это слово значит, но предлагаю если у слова патриот (это вообще тот, кто любит свою Родину (я лично ничего плохого в этом не вижу)) есть ругательное слово. Предлагаю называть всех тех, кто свою Родину ненавидит говнарями.
Вот именно, берем ИИ 100%,добавляем физику 100% и основной поток где все обрабатывается воедино 100%, получаем 3 полностью загруженных ядра(в реале конечно будет ближе к 80%) и по мелочи, т.е. больше 4х потоков/ядер некоторым играм не надо. Думаю именно об этом и хотел сказать vbh99.
Бог с ней, с физикой, ее действительно кое-как можно выделить в отдельный поток (хотя и не сильно рационально, зачастую). Но как выделить ИИ в отдельный поток, если большая часть его действий будет напрямую зависеть от основного потока? Если уж хотите потоки - то это независимые друг от друга последовательности операций. Или вы решили там ИИ на нейронных сетях запустить? Так я напомню, что для этого нужно будет минимум с месяц эту нейронную сеть потренировать. Да, ее симуляция и больше сожрет ресурсов, вот только зависимость ее от основной ветки кода никто не отменял.
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Nimrael при чем тут нейронная сеть? Если у тебя 10 персонажей, то их нельзя параллельно в 10 потоках всех обсчитать? Такое ощущение, что сбежали с лаб по информатике/статей на хабре и начинают показывать, что они знатоки информационных систем "Основная ветка кода" А это что, как выглядит?
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Оптимизация делается или под много ядер (>1), или не делается вообще, иксперд, никаких мифических "под 2, под 4" не бывает.
Ну почему мифических?) Если рассмотреть цепочку 1, 2, 4, 8 ядер, то, например, в WOT будет 55, 65, 65, 65 фпс (игра однопоточная, но от второго ядра всё равно будет прирост по понятным причинам); в GTA4 20, 35, 70, 70 (давно известно, что игре нужно 4 потока, от 6 и далее прирост нулевой), и напоследок Crysis третий 20, 35, 60, 75 (а вот эта игра с удовольствием воспринимает 6 и более потоков, поэтому и прирост имеется). Все данные написал от былды, но на основе того, как эти игры работают и какой прирост они они получают на разных конфигурациях. То есть если коротко - ты не прав.
Добавлено спустя 3 минуты 23 секунды:
Psilon писал(а):
ПРикол в том, что нормально написанные приложения пишутся под любое число ядер.
Потому-что эти приложения работают с данными, которые легко разбить по потокам и эти потоки будут равнозначны. Окей, можно пойти другим путём. Как ты считаешь игра GTA4 однопоточная или многопоточная?
Заблокирован Статус: Не в сети Регистрация: 14.02.2005
Psilon писал(а):
ПРикол в том, что нормально написанные приложения пишутся под любое число ядер. Типичный жизненный пример - 7z и прочие архиваторы. Хоть 200 ядер делай, в 200 раз будет быстрее.
Умник нашёлся, архиватор сравнивает с играми.
#77
Код:
Есть несколько важных моментов, которые нужно помнить, глядя на эту иллюстрацию
Не все задачи должны выполняться параллельно. В этом примере мы оставили обработку входных данных выполняться последовательно. Может быть и для просчета логики игры, и анимации необходимы наши входные данные, а может быть Вам просто нужно будет, чтобы какая то задача выполнялась сама по себе, без каких либо других параллельных ей. Просто помните, что это тоже осуществимо, и рано или поздно, Вы наверняка захотите этим воспользоваться.
Задачи должны быть независимы друг от друга. Так как они выполняются параллельно, не просто обеспечить обмен данными между ними, поэтому нам нужен механизм передачи данных между параллельными задачами. В идеале мы должны иметь совершенно независимые друг от друга задачи, но в играх это редко осуществимо. Для анимации нам нужна физика и данные ИИ. Для ИИ также нужны данные физики, а для рендеринга нужны данные вообще всех наших задач. Мы рассмотрим этот момент немного позже в этой статье.
Одна из самых важных вещей — мы должны помнить, что, не смотря ни на что, производительности в игре ограничена скоростью выполнения самой медленной задачи. В этом примере, не смотря на то, что мы используем 2 потока и делим задачи примерно пополам, время выполнения одного кадра вряд ли будет даже половина от времени параллельного выполнения всех задач. Мы можем выделить каждую задачу в отдельный поток, но так или иначе мы не добьёмся времени просчёта кадра меньше, чем просчет всей физики (в нашем примере физика — самая длительная задача). Обмен данными между потоками, а также синхронизация потоков — тоже расходы, которые составляют часть итогового времени.
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
striderbyhl2 писал(а):
Потому-что эти приложения работают с данными, которые легко разбить по потокам и эти потоки будут равнозначны. Окей, можно пойти другим путём. Как ты считаешь игра GTA4 однопоточная или многопоточная?
Я в GTA вообще не играл Если не ситать развлекалово в Vice City лет 10 назад на плойке.
Amigo* писал(а):
Умник нашёлся, архиватор сравнивает с играми.
Да, буду, потому что я хотя бы в теме разбираюсь, а не бросаюсь жиденькими цитатками
#77
Картинка так себе, физика как раз-таки не так уж много жрет, учитывая, что она ускоряется на гпу. А вот просчет сложного ИИ это задача намного сложнее. А т.к. ИИ обычно в игре много, то каждого персонажа можно просчитывать отдельно. И как правило они независимы друг от друга, в крайнем случае сгруппированы по несколько штук, но все равно когда персонажей переваливает за сотню (любая локация типа придворного бала), то все.
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Nimrael при чем тут нейронная сеть? Если у тебя 10 персонажей, то их нельзя параллельно в 10 потоках всех обсчитать? Такое ощущение, что сбежали с лаб по информатике/статей на хабре и начинают показывать, что они знатоки информационных систем "Основная ветка кода" А это что, как выглядит?
Для "спесьяГлистов" - любое действии ИИ является реакцией на: 1) действия игрока 2) действие другого ИИ. До получения ответа от обработки основного потока, который обслуживает игрока (надеюсь, это достаточно понятный ответ?), любой такой ИИ сможет выполнить крайне ограниченное кол-во действий, иначе просто "оторвется от реальности". И будет постоянно требовать данных от основного потока обработки. Т.е. будет "эффективно простаивать" большую часть времени. То же самое с физикой и прочим - только идиот будет просчитывать сложные физические явления, если они будут происходить "за спиной" игрока и не будут видимы ему. Иначе придется расчитывать всю локацию целиком а потом уже анализировать, что там попало в кадр, а что нет. Ладно в сингле, но в мульти это будет просто ад. Возвращаясь к ИИ - их, конечно, можно сдклать "не завязанными на игроке", но.... опять же, это: 1) потребует просчета всех ИИ в локации одновременно. 2) потребует в десятки раз более сложных скриптов поведения. Иначе получатся болванчики.
Добавлено спустя 5 минут 2 секунды:
Psilon писал(а):
Да, буду, потому что я хотя бы в теме разбираюсь, а не бросаюсь жиденькими цитатками
Visual Studio.... .NET Эти продукты иначе чем гробовщиками индустрии назвать сложно.
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Nimrael Мир рассчитывается один раз, после чего все потоки могут независимо читать инфу, ибо shared readonly память потокобезопасна. Поэтому никаких прооблем с распараллеливанием нет. Связи с тем, чтобы не рисовать невидимые эффекты - никакой. Сделать перед обработкой всего массива данных 2-3 простых операции, это конечно сложный рокет саенс.
Nimrael писал(а):
Visual Studio.... .NET Эти продукты иначе чем гробовщиками индустрии назвать сложно.
Быстро же лучшая IDE из ныне существующих оказалась в помойке Про дотнет я молчу, у многих больная тема. Наверное потому что зачастую и быстрее плюсов, и приятнее для написания.
Amigo* писал(а):
И много ты ААА тайтлов разработал на ПК и консоли? Если такой прошаренный, то согласишься с тем что все три пункта справедливы, особенно третий.
а ты?
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Поэтому никаких прооблем с распараллеливанием нет.
Чувак, неужели ты думаешь, что в игроиндустрии работают люди глупее тебя? Даже мне далёкому от игропрома ясно, что игрок видит картинку всё время меняющуюся, и никоим образом, "предварительный расчёт мира" не может этому помочь. Как можно вообще рассчитать заранее все возможные ракурсы обзора для игрока? Игра что заранее может узнать куда двинется игрок в следующую секунду и заранее в параллельном процессе расчитает освещение, тени, действия ботов и т.д.?
Ага в Интел дураки сидят. Чувак, если ты так гениален, то ты должен быть миллионером.
Как то раньше здесь на форуме был чувак, он упоминал о "Законе Амдала" https://ru.wikipedia.org/wiki/Закон_Амдала , почитай там математически доказывается, что "Согласно этому закону, ускорение выполнения программы за счёт распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.".
Если алгоритм содержит всего 10% последовательных вычислений, то при 10 ядрах он будет работать в 5,263 раза быстрее чем на одном ядре, а на 1000 ядрах в 9,91 раза быстрее. Думаю разница в стоимости производства такого количества ядер к ничтожному увеличению производительности ясна.
Member
Статус: Не в сети Регистрация: 20.03.2011 Откуда: Москва
Amigo писал(а):
Что за мода стрелы метать. Ни одного ААА тайтла ты не сделал, отвечай как есть по факту.
Я больше скажу, ни один разрабочтик за всю историю игростроения не сделал ААА-тайтл
adsqwerty писал(а):
Чувак, неужели ты думаешь, что в игроиндустрии работают люди глупее тебя? Даже мне далёкому от игропрома ясно, что игрок видит картинку всё время меняющуюся, и никоим образом, "предварительный расчёт мира" не может этому помочь. Как можно вообще рассчитать заранее все возможные ракурсы обзора для игрока? Игра что заранее может узнать куда двинется игрок в следующую секунду и заранее в параллельном процессе расчитает освещение, тени, действия ботов и т.д.?
Разработчики не глупее, конечно. А вот про их менеджмент и ресурсы я совсем иного мнения. "Пили фичу быстрее, фикс в DLC засунем" и все такое. Разработчик не виноват, если ему сроки в 3 раза ужимают, естественно он будет хреначить лишь бы работало, иначе чем кормить семью и ипотеку?
А вот у кого лучше менеджмент - у меня или у них, почти наверняка уверен что у меня.
adsqwerty писал(а):
Как можно вообще рассчитать заранее все возможные ракурсы обзора для игрока? Игра что заранее может узнать куда двинется игрок в следующую секунду и заранее в параллельном процессе расчитает освещение, тени, действия ботов и т.д.?
Заранее на каждом кадре, конечно же, всего лишь около 60 раз в секунду, это как бы вообще не нагрузка посчитать полтора значения с такой частотой. Проблемы начинаются дальше. Ну и да, игре при расчете действий ботов на тени и прочую мишуру насрать. Как правило важно только видно-невидно, ну иногда еще звук добавляется, но он тоже тривиально решается.
При чем тут интел непонятно.
adsqwerty писал(а):
Как то раньше здесь на форуме был чувак, он упоминал о "Законе Амдала" �акон_Амдала , почитай там математически доказывается, что "Согласно этому закону, ускорение выполнения программы за счёт распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.".
без сомнения. Впредь не надо говорить о играх и о том, какие они должны быть, если ты не знаешь какие они есть.
Кроме GTA игр нет? Например ведьмак 3, действия ВСЕХ персонажей нужно просчитать, и они друг с другом не связаны. И я уверен, что они как раз отлично параллелятся, игра сделана очень качественно. И она намного сложнее всяких гта в плане ИИ или сложности архитектуры.
А еще ты мастер выдергивать слова из контекста и игнорировать все остальное Красава, так держать.
Добавлено спустя 8 минут 51 секунду: А вообще о чем речь? Что в мало текущих игр хорошо параллелятся? С этим никто не спорит. Что так и должно быть и это сделать очень сложно? Ну, некоторая сложность тут действительно есть, да, но основной ресурс это время. Если разработчику дают время - он делает ведьмаков и все довольны. Нет времени - делает на коленке ГТА и выпускает што получилось.
Ну и кстати на практике закон Амдала не так уж сильно работает Например очень часто стоит задача сортировки данных (например каждый раз когда кто-то делает поисковый запрос в гугле/яндексе или лазит по магазинам, отбирая товары), так вот многопоточная сортировка на 12 ядерной машине в 11 раз быстрее одноядерной. Да и в принципе правило профилирования гласит, что обычно очень малый объем кода выполняется дольше всего, и как правило его можно распараллелить так или иначе.
_________________ I would tell you a joke about UDP, but you probably wouldn't get it.
Member
Статус: Не в сети Регистрация: 29.01.2008 Фото: 0
Psilon писал(а):
ПРикол в том, что нормально написанные приложения пишутся под любое число ядер. Типичный жизненный пример - 7z и прочие архиваторы. Хоть 200 ядер делай, в 200 раз будет быстрее.
Прикол 7z в том что он обрабатывает потоковые данные, а они легко параллелятся, тот же рендер или обработка мультимедиа тоже самое, а вот в играх такое непросто сделать, но ситуация меняется (возможно благодаря многоядерности последних консолей). Кстати много ядер не всегда бывают загружены теми же архиваторами, например на оптеронах с его 32мя потоками (2 проца) бывают такие провалы в многопоточке (рендер), что они выдают результат как 8 ядерные.
Psilon писал(а):
Картинка так себе, физика как раз-таки не так уж много жрет, учитывая, что она ускоряется на гпу
Не всегда и не везде, да и под "физикой" могут скрываться обычные скрипты.
Psilon писал(а):
Nimrael Мир рассчитывается один раз, после чего все потоки могут независимо читать инфу, ибо shared readonly память потокобезопасна.
Это если игры делать в 2000х, сейчас мир меняется, в процессе игры, например снес здание или дверь вынес, которая разлетелась в щепки, зацепив окружение. Или например едешь на транспорте и врезался в дерево, которое повалилось на крышу здания, которую пробило и завалило врагов и т.д.
Psilon писал(а):
И как правило они независимы друг от друга
независимы? так это если толпа тупо заскриптованных чуваков бежит на тебя с оружием, то да, а если один персонаж увидел игрока, то он должен сообщить другим, те должны что-то сделать (скрыться, прикрывать, начать отстреливаться), в общем взаимодействовать друг с другом иначе они опять таки просто побегут на игрока как заскриптованные, это конечно можно распараллелить, но все равно сложно (как раз таки часто упоминаемый тут закон Амдала)))).
Psilon писал(а):
Ну и кстати на практике закон Амдала не так уж сильно работает
Да, можно просто зарезервировать один поток, который будет заниматься распараллеливанием, т.е. разбивать код на куски, кидать по потокам, а потом собирать (примерно похожее пытаются сделать силами ОС), но не все так разбивается, например длинные/сложные логические цепочки со сложными ветвлениями.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения