Для современных игр требуются все более мощные процессоры. Системные требования растут и сейчас даже четырех ядер не всегда хватает. Совсем недавно игры кое-как использовали два ядра, что же поменялось? Давайте посмотрим, как влияет на производительность рост числа ядер и почему распараллеливание крайне сложная вещь.

с чего все начиналось

В далеком 1967 году господин учёный по имени Джин Амдал сформулировал закон, описывающий рост производительности от увеличения числа вычислителей, то есть ядер, в нашем понимании. Закон этот не такой точный, не учитывает множества второстепенных факторов, однако, весьма хорошо согласуется с практикой.

Закон Амдала. Наглядно показано ускорение в зависимости от степени параллелизма

Вдаваться в математику нам ни к чему, важно единственное – что бы получить существенный прирост производительности, необходимо максимально распараллелить программу. И процент параллельного кода должен быть более 90% для удовлетворительного результата. Учитывая, что 100% недостижимы в принципе, то линейного прироста добиться невозможно. Эту проблему и решают разработчики, зачастую далеко не очень удачно, многие игры и программы плохо оптимизированы под многоядерные системы. Так же оптимизация под разные процессоры существенно отличается, отсюда и разница в производительности в разных задачах в случае Intel и AMD.

очумелые ручки

А теперь закроем вкладку википедии и доверимся собственной голове, рукам и двухпроцессорной конфигурации с Xeon E5-2690. Ведь каким тестам можно доверять, кроме как своим? В наших руках 16 ядер и 32 потока. Была так же написана простая программа с высокой степенью параллелизма для расчета матрицы заданного размера. И в итоге были получены интересные результаты.

Закон Амдала для маленькой матрицы 500 на 500

Закон Амдала для большой матрицы 3000 на 3000

В итоге получается, что от сложности вычислений растет эффективность распараллеливания. Чем сложнее задача, тем более востребована многопоточность. А для простых задач она может даже приводить к потере эффективности выполнения программы.

После оптимизации нашей программы

Оптимизация позволяет сильно сгладить зависимость и увеличить эффективность использования многопоточности. Все что мы сделали - заставили программу динамически искать свободное ядро и загружать его, как только оно завершит предыдущую задачу.

Что же можно сказать в итоге? При определенном количестве ядер чисто математическая операция  с практически максимально достижимой степенью параллелизма после 22-25 потоков уже не ускоряется. Учитывая, что скорее всего развитие процессоров надолго затормозится после 7 нм техпроцесса, вероятнее всего нас ждет стагнация как компьютерных технологий, так и программных решений. Надежд на многослойные чипы не так уж и много, до сих пор не понятно, как охлаждать такие решения.

А какие выводы можете сделать вы, посмотрев результаты этого маленького теста?

13

Комментарии

Добавить комментарий
Lord RZ
администратор
05.12.2018 — 18:12

Спасибо за исследование, Fenom, это было познавательно. Я думаю, если все это притормозит и долго не будет появляться ничего нового, рынок быстрее перенасытится и цены на топчик поползут вниз. Что было бы неплохо.

Не верю в стагнацию, скорее это будет застой. А уж цены никто нам не скинет это точно- придумают очередную RTX технологию и впарят втридорога, как раньше и бывало.

А какие выводы можете сделать вы, посмотрев результаты этого маленького теста?

Да всё те же....мои железяки устарели и нужно больше золота, ядер и прочего дерьма -_-

я и цены на топчик поползут вниз.

Было бы неплохо

А уж цены никто нам не скинет это точно

А ведь так и будет бро -_-

Если произойдет стагнация в железе, то тогда будет развиваться программный код, потому что сейчас на него мало обращают внимания, типа, а зачем оптимизировать, пусть покупают новое железо. И тогда, глядишь, игры будут переделывать не так, как сейчас, старые под новое мощное железо, а наоборот, под более слабое железо без потери качества:)

Если произойдет стагнация в железе, то тогда будет развиваться программный код, потому что сейчас на него мало обращают внимания, типа, а зачем оптимизировать, пусть покупают новое железо. И тогда, глядишь, игры будут переделывать не так, как сейчас, старые под новое мощное железо, а наоборот, под более слабое железо без потери качества:)

Да, ты прав) Сейчас полностью забивают на код, потому что железо мощное. Собственно многое вообще автоматизировано.

Стагнация в области вычислений в будущем чистый миф и сказки (стагнация началась с 2007 г. и скоро идет ее конец). Все упирается в деньги и не желание применять новые технологии из за их окупаемости и наложенных ограничений (капитализм бич мира). В области вычислений нет реальной конкуренции , капитализм с патентами душит новые разработки (а сколько их выкуплено подчистую и положено в долгий ящик не счесть). Тормозят прогресс гады.

Из последних что смогу вспомнить в этой области

Eternal 5D ru.wikipedia.org/wiki/Eternal_5D
Носитель информации представляет собой наноструктурированный прозрачный материал, запись производится с помощью фемтосекундного лазера, работающего в режиме синхронизации мод. Таким методом возможно записать до 360 терабайт информации на один кристалл, расчётный срок хранения информации составляет порядка миллиардов лет. Уже есть готовый вариант и его применили см вики.

Мемристоры
Мемристоры могут быть использованы не только для хранения данных. Так, М. Ди Вентра и Ю. В. Першиным была предложена концепция вычислительных машин, в которых хранение и обработка информации осуществляется одним и тем же физическим устройством, основанным на мемристорах.

Рассматривается возможность применения мемристоров в качестве искусственных синапсов (весовых модулей) нейропроцессоров и искусственных нейросетей. Поведение мемристора напомининает работу биологического синапса - чем интенсивнее входной сигнал, тем выше пропускная способность синапса ("вес" сигнала). Данное решение позволит сильно упростить конструкцию нейропроцессора и его стоимость, так как хорошо воспроизводится на уже имеющихся технологических линиях по производству микрочипов

Графеновые нанотрубки - как раз они решают полностью проблему с процами. Копировать не стал инфу ее тысячи в интернете.

Ну и сам графен - это конечно прорыв во всех аспектах жизни. От электроники и машин, до медицины. Это будет революция.

А технологий с 2009 года было открыто очень много и они развиваются. И очень скоро они явят себя миру. Как говорят спецы в этой области, мол нас ждет Торнадо технологий. Не зря даже Вовка заострил внимание на Искусственном интеллекте и что в будущем технологии разрабатывать будет сам ИИ ;)

Если ничего не измениться и ничего нового не придумают тогда, скорей всего, мощность ядер будут увеличивать с помощью увеличения размера чипа из-за чего, опять, может увеличится стоимость процессора, как это стало с новым поколением видео карт от nvidia.

Очень интересно было почитать, спасибо!

Вывод напрашивается сам. 10-7-5 нм хватит на ближайшие лет 10-15, за это время удасится сделаить "дешевые" квантовые решения, которые и займут "кремниевый" рынок.

Если ничего не измениться и ничего нового не придумают тогда, скорей всего, мощность ядер будут увеличивать с помощью увеличения размера чипа из-за чего, опять, может увеличится стоимость процессора, как это стало с новым поколением видео карт от nvidia.

Размер чипа невозможно увеличивать бесконечно. Как известно, все операции в процессоре выполняются за счет электрических сигналов, такт занимает наносекунды времени. Так вот скорость света настолько мала, что за одну наносекунду свет в ваккуме проходит всего 30 сантиметров. Учитывая что электрический ток сам по себе медленнее, да и среда у нас полупроводниковая, средний пробег за 1 наносекунду - 5-7 сантиметров. Вобщем увеличение кристалла приведет к снижению производительности, возрастут задержки обращения к кешу и прочие болячки. В видеокартах ядра работают независимо, и они так или иначе все равно обращаются только к медленной видеопамяти, там это не критично, с процессорами гораздо сложнее.

Стагнация в области вычислений в будущем чистый миф и сказки (стагнация началась с 2007 г. и скоро идет ее конец). И все прочее сообщение.

Спешу разочаровать. Во-первых, отказ от х86 архитектуры в нынешней ситуации невозможен. Во-вторых, переход на совершенно новые технологии из-за первого пункта не выгоден никому, слишком много экономических факторов, если бы это было возможно, давно бы все машины были на водороде например, еще годов так с 50х. В-третьих, переход на новые технологии полностью вычеркивает поддержку старых, уже давно существуют гораздо более эффективные процессорные архитектуры, которые производительнее х86, без всяких новых технологий, однако не переходят, потому что теряется совместимость.

Ну и на самом деле, можно бесконечно приводить примеры и аргументы, почему этого не будет. Наука и технологии вещь эфемерная несколько. особенно современная, ибо исследования применения не находят в 99% в настоящий момент времени, потому что это никому сейчас не нужно и применять некуда, делается для портфолио и подъема по карьере ученого. Актуальны только научные заказы государства или компаний, для остального нужно время, если оно вообще когда либо придет. И не подумайте что так только у нас в стране, во всем мире научное сообщество так работает, у них свой междусобойчик.

Более менее последовательно отвечая на вопросы:
Толковое распаралеливание - в общем трудоёмкий процесс со своими накладками. Программеры этим заниматься издавна не любят. Да вон с просто оптимизацией кода нынче полная задница, а мы ещё говорим про толковый параллелизм? Под который нередко нужно разрабатывать иные математические модели решения задачи?
Короче ИМХО многоядерность/многопроцессорность будет, но не то чтобы сильно, оно и сейчас не шибко то востребовано, хотя при желании можно резко больше.

Про стогнацию и застой рынка - тоже не верится. Сейчас маркетинг продвигает товар и спрос, придумают какие "новые" технологии, на которые и будут пересаживать массы. Включая принудительно, как уже впрочем ввела в норму Микрософт в своей Винде. В упор в сторону оптимизации софта соответственно тоже не верю, как минимум в этом не заинтересованы ни производители софта ни в конечном производители железа.

Про площади крисаллов - с одного боку - нет, там больше не в скорости света проблемы а в скажем так защите от помех, полследние растут с увеличением площади кристалла. С другого боку в принципе в одну сборку засунуть и даже несколько кристаллов, тобишь вопрос пары десятков процессоров в одном корпусе - это вопрос скорей теплоотвода и числа ножек у конечной детали. Но и опять-же, нет в массовом секторе софта эффективно использующего хотя-бы десяток процессоров, и наврядли он особо появится в ближайшее время.

Более менее последовательно отвечая на вопросы:

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

Короче ИМХО многоядерность/многопроцессорность будет, но не то чтобы сильно, оно и сейчас не шибко то востребовано, хотя при желании можно резко больше.

Про стогнацию и застой рынка - тоже не верится. Сейчас маркетинг продвигает товар и спрос, придумают какие "новые" технологии, на которые и будут пересаживать массы. Включая принудительно, как уже впрочем ввела в норму Микрософт в своей Винде. В упор в сторону оптимизации софта соответственно тоже не верю, как минимум в этом не заинтересованы ни производители софта ни в конечном производители железа.

Про площади крисаллов - с одного боку - нет, там больше не в скорости света проблемы а в скажем так защите от помех, полследние растут с увеличением площади кристалла. С другого боку в принципе в одну сборку засунуть и даже несколько кристаллов, тобишь вопрос пары десятков процессоров в одном корпусе - это вопрос скорей теплоотвода и числа ножек у конечной детали. Но и опять-же, нет в массовом секторе софта эффективно использующего хотя-бы десяток процессоров, и наврядли он особо появится в ближайшее время.

Всегда стараются компоновать процессор компактнее. Разница в скорости трех уровней Кэша и оперативной памяти напрямую зависит от расстояния.

Авторизуйтесь, чтобы оставить новый комментарий. Или зарегистрируйтесь.