Покупка нового компьютера. Выбор модели и комплектации

Discussion in 'Машинное отделение' started by Crest, 5 May 2009.

  1. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.494
    Likes Received:
    3.126
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Поток - это абстракция уровня операционной системы или приложения. На одноядерной системе все потоки могут исполняться на одном ядре. С точки зрения пользователя их работа будет выглядеть одновременной. В случае четырёх ядер планировщик потоков, скорее всего, равномерно распределит их по всем ядрам, так что в среднем каждое ядро будет исполнять одновременно по два потока (в чередующихся квантах времени).
    Как всегда, возможны отклонения и особенности, в зависимости от настроек конкретной системы. Но в общем случае так.
  2. pk27pk Старожил

    • Участник
    • Старожил
    Member Since:
    03.04.2008
    Message Count:
    1.031
    Likes Received:
    74
    Репутация:
    1
    Оффлайн
    WinPooh Сколько движков в Aquarium 2018 можно будет задействовать в компьютере с процессором 4 ядра и 8 потоков?!
  3. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.494
    Likes Received:
    3.126
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Windows будет видеть такой процессор как восьмиядерный. Так что ответ - без замедления работы одновременно можно запустить восемь движков. Можно и больше, но уже с замедлением.
  4. pk27pk Старожил

    • Участник
    • Старожил
    Member Since:
    03.04.2008
    Message Count:
    1.031
    Likes Received:
    74
    Репутация:
    1
    Оффлайн
    Благодарю!
  5. nh2008 Старожил

    • Участник
    • Старожил
    Member Since:
    01.12.2013
    Message Count:
    3.961
    Likes Received:
    5.379
    Репутация:
    379
    Location:
    Украина
    Оффлайн
    Без замедленя работы чего?
    Интерфейс, система, антивирус, фоновые процессы, другие приложения?
  6. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.494
    Likes Received:
    3.126
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Имеется в виду - без замедления поиска в каждом отдельном потоке движка.
    До восьми движков, скажем, каждый будет выдавать по 1000 килонодов в секунду - а если их станет 9 и больше, то эта скорость начнёт плавно уменьшаться. При 16-ти движках будет по 500 килонодов, и т.д. Потому что отдельные движки начнут разделять между собой время одного ядра, а не работать на нём монопольно.
    Про другие приложения вообще ничего сказать нельзя, тут всё очень индивидуально.
  7. nh2008 Старожил

    • Участник
    • Старожил
    Member Since:
    01.12.2013
    Message Count:
    3.961
    Likes Received:
    5.379
    Репутация:
    379
    Location:
    Украина
    Оффлайн
    И во сколько раз будет увеличиватья скорость расчёта по сравнению с одним потоком? Что выгоднее с точки зрения прироста скорости рассчёта: увеличение тактовой частоты отдельного, единсвтенного, ядра процессора, на котором работает движок, в N раз или увеличение в те же N раз количества ядер, отданных в распоряжение движка?
    Мне кажется, что первый вариант всегда предпочтительнее.
  8. WinPooh В.М.

    • Команда форума
    Member Since:
    13.02.2006
    Message Count:
    9.494
    Likes Received:
    3.126
    Репутация:
    95
    Location:
    Москва
    Оффлайн
    Да, это именно так. Производительность с увеличением числа ядер растёт нелинейно, т.е. 2 ядра дают прирост скорости не в 2, а в 1.7 (например) раз, 4 ядра - в 2.5, и т.п. От конкретного движка ещё зависит, некоторые параллелятся лучше, некоторые хуже...
    Правда, количество ядер увеличивать всё-таки проще, чем тактовую частоту одного ядра - для частоты предел наступает довольно быстро.
  9. Scaramuccia Старожил

    • Участник
    • Старожил
    Member Since:
    13.01.2012
    Message Count:
    3.182
    Likes Received:
    2.090
    Репутация:
    61
    Онлайн
    В случае с Hyperthreading это не совсем верно - 8 потоков будут чуть слабее чем 4 потока - что-то вроде по 1000 килонодов на 4 потоках и по 800 на 8 поскольку логические ядра не идеальные, но максимум производительности все равно будет на 8.
    WinPooh likes this.
  10. nh2008 Старожил

    • Участник
    • Старожил
    Member Since:
    01.12.2013
    Message Count:
    3.961
    Likes Received:
    5.379
    Репутация:
    379
    Location:
    Украина
    Оффлайн
    А если ядер будет много очень много, не возможна ли такая ситуация, что абсолютное количество просчитанных узлов окажется при N задействованных ядрах (по одному на поток) меньше, чем при N-1 при том, что останутся ещё свободные ядра для работы системы и прочих приложений?
  11. EugeneZ Начинающий

    • Начинающий
    Member Since:
    23.11.2016
    Message Count:
    4
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    А если есть два схожих процессора (техпроцесс, частота, TDP одинаковые), но один 4х4, а другой 4х8, то не получится ли, что с точки зрения эффективности работы шахматного движка второй (4х8) будет хуже ? Ведь во втором случае, чтобы использовать всю мощь процессора из 4 ядер, придется гонять 8 потоков, а это кажется менее эффективным при распараллеливании, чем честных 4 ?
  12. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Второй будет лучше. Современные движки хорошо параллелятся.

    Но, вообще говоря, выбирать между процессорами не нужно. Гипертрейдинг легко отключается BIOS'е
    Комсюк likes this.
  13. Комсюк народный модератор

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    17.07.2011
    Message Count:
    19.250
    Likes Received:
    23.518
    Репутация:
    1.270
    Нарушения:
    27
    Оффлайн
    Rom, никогда не заморачивался этим, играя адванс на двух ядрах без НТ :)
    Какая фактическая разница между четырьмя с гипером и восемью в анализе?
    Циферки скорости будет показывать приблизительно одинаковые, эт я знаю
  14. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Вообще-то гипертрейдинг должен заметно поднять скорость движка, от 30 до 70% (см. бенчмарки у ипмана) за счет большей загрузки процессора. Это касается современных движков с распараллеливанием методом LazySMP, то есть почти всех топовых.

    Если такого не происходит, значит либо Гипертрейдинг работает не очень, либо Турбобуст на вашем процессоре компенсирует недозагруз повышением частоты. В таком случае особой разницы нет - увеличение числа потоков повышает "ширину" поиска, а увеличение частоты повышает глубину. Правда, за сверхдолгий анализ не поручусь - данных нет.
    Комсюк likes this.
  15. EugeneZ Начинающий

    • Начинающий
    Member Since:
    23.11.2016
    Message Count:
    4
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Именно лучше, а не эквивалентен? За счет чего лучше?
    И ведь 4х8 будет хуже для старых движков, которые умеют работать только на одном потоке, т.к. на нем смогут получить только 1/8 мощи, так ?
    (про отключение HT я понял, обязательно попробую у себя, спасибо)
  16. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Потому что на 30-70% быстрее. Уже проведено немало тестов показывающих, что при включении гипертрейдинга движки попросту сильнее играют.
    Однопоточный движок получит в своё распоряжение одно ядро целиком, если конечно вы не перегрузите свой компьютер иными задачами. Таким образом это будет 1/4 производительности машины. Или даже 1/3, поскольку турбобуст обычно повышает частоту недозагруженного процессора.
  17. nh2008 Старожил

    • Участник
    • Старожил
    Member Since:
    01.12.2013
    Message Count:
    3.961
    Likes Received:
    5.379
    Репутация:
    379
    Location:
    Украина
    Оффлайн
    Что такое "ширина" поиска?
  18. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Branching Factor - среднее количество продолжений, рассматриваемых в каждом узле. Долгое время считалось, что чем меньше мы смотрим продолжений в каждом узле, тем лучше, поскольку таким образом достигается бОльшая глубина и решения становятся более обоснованными. Но современные движки, по-видимому, отсекают так агрессивно, что многим неплохим ходам уделяется слишком мало внимания, поэтому увеличение Branching Factor (сопутствующее использованию метода распараллеливания LazySMP), неожиданно оказалось эффективным.
  19. EugeneZ Начинающий

    • Начинающий
    Member Since:
    23.11.2016
    Message Count:
    4
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Ой!!! По вашему получается, что при распараллеливании движок играет по другому!? Ой!

    Почему быстрее, сможете объяснить? Почему комп 4х8 может считать быстрее компа 4х4 при прочих равных?
  20. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Да, а что такого? :cool: Главное, и удвоение ядер и удвоение скорости/контроля заметно усиливает игру. Порядка нескольких десятков пунктов при любом из удвоений. Точнее я вам сказать не могу.

    Читайте про гипертрейдинг:
    https://ru.wikipedia.org/wiki/Hyper-threading :)

    Давайте, например, посмотрим на внутреннюю структуру одного ядра процессора Ryzen:
    https://3dnews.ru/948466

    Как видите, каждое ядро содержит по 8 вычислительных блоков - четыре ALU, и по два ADD и MUL. В определенном смысле каждый из таких блоков можно сравнить с обычным калькулятором, но с ограниченным набором возможных математических операций ("кнопок"). Нам сложно загрузить сразу все эти блоки параллельной работой одновременно, поскольку обычный микропроцессор в общем-то в первую очередь адаптирован для выполнения последовательного порядка операций над числами. То есть операций, для начала которых требуются результаты предыдущих операций.

    Даже несмотря на все ухищрения, навроде спекулятивных предварительных вычислений, часть блоков все равно остается не занятой. Но мы можем запустить на этом ядре второй поток расчетов. И в те моменты, пока первый поток вычислений частично или полностью простаивает, мы можем выполнять расчеты для второго потока. Понятно, что двухкратного увеличения скорости не будет, но прибавка будет очень и очень значительной.
    Alhimik88 likes this.
  21. EugeneZ Начинающий

    • Начинающий
    Member Since:
    23.11.2016
    Message Count:
    4
    Likes Received:
    0
    Репутация:
    0
    Оффлайн
    Спасибо! :)
    В принципе, этого хватило для моего понимания! Очень многое прояснилось простейшей ссылкой, которую я сам поленился открыть ранее. Я смотрел на это все значительно проще.

    Однако, я все еще хочу оспорить про Branching Factor. :) Возможно не так понял. Кажется, что Branching Factor (судя по статье под ссылкой, вы имеете ввиду "Effective Branching Factor", т.е. речь про "реально просмотренные продолжения") - все же важнейшая характеристика конкретной сборки движка, и не должен меняться в зависимости от мощности железа, кол-ва ядер и наличия HT (в одной и той же позиции и глубине поиска). То есть, одна и та же сборка движка за N перебранных узлов пройдет один и тот же путь по дереву независимо от мощности железа и кол-ва потоков, на котором ее запустили (но за разное время само собой). Так ведь?
  22. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Чем больше потоков/ядер, тем больше BF. Каждый поток по сути запускает своё дерево перебора, практически независимое от других (потоки обмениваются данными только через хэш-таблицу). Таким образом, чем больше потоков, тем больше "деревьев", больше позиций смотрится на каждой глубине, соответственно больше BF.
  23. nh2008 Старожил

    • Участник
    • Старожил
    Member Since:
    01.12.2013
    Message Count:
    3.961
    Likes Received:
    5.379
    Репутация:
    379
    Location:
    Украина
    Оффлайн
    А разве нельзя координировать движки, чтобы они не рассматривали повторяющиеся позиции?
  24. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Раньше так и делали. Расщепляли единое дерево перебора, раздавали каждому потоку индивидуальную ветку, на которой он работал. Только метод оказался не очень эффективным. При превышении 16-ти потоков прибавки в силе, по факту, нет. Возможно из-за того, что последние потоки получали худшие ветки, в которых вряд ли можно что-то найти (ИМХО). Кроме того, потоки часто простаивали в ожидании задания.

    Я знаю, это звучит контринтуитивно, но текущий метод лучше работает. Он демонстрирует хорошую прибавку в силе как минимум до 384-х потоков. [1] [2]
  25. crem Учаcтник

    • Участник
    Member Since:
    24.11.2016
    Message Count:
    140
    Likes Received:
    203
    Репутация:
    14
    Оффлайн
    Насчёт hyperthreading:

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

    Поэтому ускорение от двух потоков в рамках одного ядра зависит от характера задач. Для некоторых (очень редко) ускорение действительно может быть почти в два раза, но для большинства вычислительно сложных задач, когда все потоки делают одно и то же, ускорение относительно одного потока обычно от 0 до 30%.
    Именно для шахмат я нигде информации не читал, но думаю, что ускорение от hyperthreading небольшое.
    Challenger Spy likes this.
  26. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Данные есть у Ипмана, например:
    Хочу так же обратить внимание, что под гипертрейдингом частота ядер может автоматически немного снижаться.

    Это типичные случаи, но есть и более экстремальные прибавки, например:
    В обычных шахматных движках потоки практически независимы друг от друга, поэтому они хорошо ускоряются от гипертрейдинга.
  27. crem Учаcтник

    • Участник
    Member Since:
    24.11.2016
    Message Count:
    140
    Likes Received:
    203
    Репутация:
    14
    Оффлайн
    Не, надо отличать потоки ("threads") которые являются объектами операционной системы, от hyperthreads.

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

    hyperthreads — это способ выполнения нескольких потоков (threads) одновременно на одном ядре, и в этом случае случается потеря производительности дополнительная к замедлению из-за синхронизации threads.
    При этом для hyperthreads совсем не важно, зависимы потоки или нет. Важно, какие инструкции процессора они выполняют.

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

    У шахмат все потоки делают одно и то же (целочисленная арифметика и битовые операции), поэтому с первого взгляда кажется, что шахматам hyperthreads не поможет.
    Но с другой стороны на современных процессорах обычно 16 или даже 32 ALU на ядро (arithmetic logic unit, модуль как раз-таки для целочисленной арифметики и битовых операций), и может одному потоку процессора не всегда удаётся занять их всех.
    Alhimik88 and Challenger Spy like this.
  28. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Согласен со всем написанным далее. Но в любом случае движки получают большой плюс от гипертрейдинга.

    Четыре ALU на ядро:
    https://3dnews.ru/assets/external/illustrations/2017/03/02/948466/slide-1.png
    https://3dnews.ru/assets/external/illustrations/2017/07/07/955164/xa_12.png

    Вектора не в счёт. От них, по факту, всего 10 % прибавки к скорости обычных шахматных движков.
  29. Rom Старожил

    • Участник
    • Старожил
    Member Since:
    12.02.2012
    Message Count:
    645
    Likes Received:
    276
    Репутация:
    28
    Оффлайн
    Насколько я понимаю, в программах присутствует много ветвлений (Branch), есть логические операции (Bool), в битбордах есть битовый сдвиг (Shift). Конечно же есть деление (Divide). Ну и операций с плавающей точкой (FP) очень даже не мало. Так что загрузить всего 4 порта, если скажем какие-то из них не заняты целочисленной арифметикой, найдётся чем. Это не 32 Cuda-Core на один Warp в видеокарте.
    Отсюда и значительная прибавка в скорости движков на гипертрейдинге.
  30. Сергей С. Питер Старожил

    • Участник
    • Старожил
    Member Since:
    31.03.2006
    Message Count:
    1.194
    Likes Received:
    60
    Репутация:
    11
    Оффлайн
    Напрашивается аналогия, когда есть 2 бригады по решению шахматно-шашечных задач. В одну набрали по 10 мастеров шахмат и по 10 мастеров шашек. Заказчик дает задания, бригада решает. Когда дают 15 шахматных задач в час, 5 шашечных. Шашечные мастера простаивают. Когда наоборот - простаивают шахматные специалисты. А у конкурирующей бригады 20 шахматных мастеров, являющихся одновременно мастерами по шашкам. У них такой гипертрейдинг будет повышать производительность. Никто не простаивает, все 20 мастеров в работе.
  31. Vladik.S Счетовод градусов настроения

    • Заслуженный
    • Ветеран
    • Старожил
    Member Since:
    28.11.2009
    Message Count:
    12.829
    Likes Received:
    7.031
    Репутация:
    375
    Оффлайн
  32. BSE Новичок

    • Новичок
    Member Since:
    30.12.2016
    Message Count:
    51
    Likes Received:
    12
    Репутация:
    2
    Location:
    Минск, Владивосток
    Оффлайн
    app-4 (1).png

    Это новый 12-ядерный AMD Ryzen 3900X, но в потребительском сегменте ещё должна быть 16-ядерная модель 3950X.
  33. Scaramuccia Старожил

    • Участник
    • Старожил
    Member Since:
    13.01.2012
    Message Count:
    3.182
    Likes Received:
    2.090
    Репутация:
    61
    Онлайн
    AMD внезапно выносит интел с рынка. Для того чтобы выбрать сейчас интелловский проц как основу нового компьютера нужны очень специфические требования.
  34. JIexa Алексей

    • Участник
    Member Since:
    02.02.2009
    Message Count:
    245
    Likes Received:
    28
    Репутация:
    3
    Location:
    Екатеринбург
    Оффлайн
    Хотелось бы надеяться и видяшки подкрутят постепенно. Хотя мне и моей rx570 за глаза. А Проца Интел и не бывало никогда.
  35. Drinkenman Учаcтник

    • Участник
    Member Since:
    25.07.2020
    Message Count:
    500
    Likes Received:
    325
    Репутация:
    3
    Оффлайн
    У меня дома стоИт 3 компа (все принудительно шахматами занимаются и я в том числе :))
    Первый самый древний (2013 года рождения) Проц 2яд AMD 1600, оперативная память 4гб, на программе Фриц11 Стокфиш 9 перебирает примерно 800 позиций в секунду. Далее Ноутбук (2018гв) Процессор 4яд Интел Пентиум Силвер 1100 (полный тормоз) оперативной памяти 4гб, на программе Фриц 11 стокфиш 10 обрабатывает примерно 650 позиций в секунду, но при этом набирает условную глубину 35 ощутимо быстрее чем первый компьютер (почему, если позиций в секунду он меньше смотрит). Ну и я сейчас работаю - 4яд Интел Кор ай3, 3600, оперативной памяти 8гб, на программе Фриц 11 движок Стокфиш 11 перебирает примерно 1800 позиций в секунду. На таком железе работать конечно приятней. Ну брат у меня - точно не знаю что у него за железо, но знаю что супер дорого, на программе Фриц16 перебирает аж 22000 позиций в секунду

Share This Page