Атомарные операции становятся медленнее, поскольку добавляется больше центральных процессоров?

СОЗДАЙТЕ РЕЗЕРВНУЮ КОПИЮ СВОИХ ДАННЫХ. Изученный, что один твердый способ работать с базами данных клиентов регулярно.

17
задан Joseph Garvin 18 October 2009 в 19:42
поделиться

4 ответа

Вы правы в том, что ограничения топологии так или иначе увеличивают задержку связи между ядрами, как только счетчики начинают превышать пару десятков. Я действительно не знаю, каковы намерения компаний, занимающихся x86, в отношении такого рода масштабирования.

Но блокировки реализованы в терминах атомарных операций. Таким образом, вы действительно не выиграете, пытаясь переключиться на них, если только они не реализованы более масштабируемым способом, чем то, что вы пытались бы сделать с помощью собственных атомарных операций, выполненных вручную. Я думаю, что, как правило, для состязаний, подобных одиночным токенам, атомарные примитивы всегда будут самым быстрым способом, независимо от того, сколько у вас ядер.

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

14
ответ дан 30 November 2019 в 13:05
поделиться

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

1
ответ дан 30 November 2019 в 13:05
поделиться

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

Если вы хотите, чтобы код был последним, постарайтесь в первую очередь избежать блокировки.

4
ответ дан 30 November 2019 в 13:05
поделиться

На вопрос, поставленный в заголовке, короткий ответ - «да», длинный ответ - «это сложно».

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

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

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

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

t, и все, что вы теперь догадались, оказалось неверным. В большинстве случаев оказывается, что код все равно не чувствителен к производительности, поэтому это не имеет значения, но если это так, то правильным решением будет исправить его в будущем, когда вы поймете архитектурные характеристики и характеристики производительности. ваших целевых процессоров.

t, и все, что вы теперь догадались, оказалось неверным. В большинстве случаев оказывается, что код все равно не чувствителен к производительности, поэтому это не имеет значения, но если это так, то правильным решением будет исправить его в будущем, когда вы поймете архитектурные характеристики и характеристики производительности. ваших целевых процессоров.

7
ответ дан 30 November 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: