Q : Как найти оптимальное количество работников для parfor
на виртуальной машине Amazon?
Аналогично, только частично определенные ситуации, я начинаю с аналогичного набора принципиальных возражений, подобных выше "Оптимально в зависимости от того, какая критериальная функция (полезность утилиты / штраф штрафа) от каких параметров и затрат - [ВРЕМЯ] (первая, частичная задержка результата, завершение E2E), [ПРОБЕЛ] (yesss: следы кэша и ОЗУ), масштабирование, внешние эффекты (затраты на энергию, {собственные | арендованные} -инфраструктурные затраты, затраты на НИОКР, затраты на проектирование / разработку, затраты на обеспечение качества, затраты на валидацию / сертификацию, другие связанные с этим затраты на оплату труда, затраты на снижение рискаполитики - назвать лишь несколько)? ", уже поднятых в предложении № 2 @ Dev-IL , пересказывая мудрость Льюиса Кэрролла, вписанного в Алису в Стране Чудес:
»Алиса: Куда мне идти?
Кошка: Это дзависит от того, куда ты идешь.
Алиса: я не знаю.
Кэт: Тогда не имеет значения, куда ты идешь.
это говорит нам о том, что происходит
, если нет
каких-либо & всех критериев pre -определено:
" (без цели), любая дорога приведет вас туда ... "
Тем не менее, эта проблема уже была решена, около 50 лет назад:
Этот вопрос был решенDr.Gene AMDAHL (1967), основанный на работе проф. Кеннета Э. КНАЙТА (1966), и решение заключается в применении « Закона убывающей отдачи », названного в честь первого закона Амдала. Как для деталей, так и для современной критики наивно-прикладных оригинальных работ (сверхнормативных и атомарных объемов работ) читайте this
Step 0: test / запись чистое время всех чисто- [SERIAL]
-й выполненных секций C од- u nder- R eview ( CuR ), то есть «до» и «после» желаемого иметь parfor
-синтаксический конструктор.
Шаг 1: test / запись сетевое время всех parfor
- { создание экземпляра + завершение } - накладные расходы . Здесь берут все правильно масштабированные параметры для типов и размеров сигнатур вызовов и возвращаемых значений (CuR должен потратить некоторое время на сериализацию / десериализацию всех их на основе каждого вызова, а также дополнительно потратить дополнительное время на SER/ DES на подготовку / транспортировку / сбор каждого из «удаленно» (parfor
-средств) результатов, шкалу MEM-allocs - которая также занимает значительное количество времени по сравнению с CuR, если только некоторая «мелкая» плотность вычисленийили повторное использование областей памяти неэффективное параллельное-CuR, оказывается, учитывается). Некоторые из этих дополнительных издержек (записанных в домене [TIME]) начисляются «внутри» parfor
-декорированных частей кода (и невидимы или не происходят во время выполнения кода * [SERIAL]
)таким образом, тестирование / тестирование производительности может потребовать некоторой работы, чтобы изолировать эти дополнительные затраты «внутри» подозрительных операций раздела parfor
, которые выделяют и никогда не используют больше областей памяти и т. д., если моделирование затрат стремится подсчитатьдо центов оплаченных извне расходов на инфраструктуру).
Шаг 2: test / record введенное атомарностью рабочего места "сиротское" время последнего- пакет рабочих единиц, которые никогда не будут работать быстрее (из-за атомарности рабочего места - неделимой продолжительности работы, которую не поможет никакое другое свободное ядро процессора)
.. .должен использовать номер физического и для которого количество логических ядер ?
Шаг 3 тест / запись фактическое соотношение работы-кражи / нетто-собственной работы для любого из предоставленных (независимо от того, что они помечены как «маркетинговые») типов блоков выполнения кода (виртуальныхустройства, несущие большую часть неэффективности из-за более высоких задержек, более высоких коэффициентов кражи работы - то есть ожидают более низкую эффективность для любой формы, в первую очередь, высокопроизводительных параллельных рабочих)
шаг 4 тест/ запись фактическая частота / размер кэш-памяти / вызванные ОЗУ условия нехватки ЦП, которые приведут к тому, что «единицы работы» фактически «там» -исполняются хуже, чем ожидалось на {local-|private-grid -} - вычислительная инфраструктура.
Шаг 5: сравнить все начисленные затраты для любого количества рассматриваемых ядер / типов, используяи должным образом смягченные по всем указанным выше неэффективностям) параметры из шагов 0: 4 и используя ценовые планы от любого из ваших поставщиков инфраструктуры, вы получите приблизительные затраты на использованиебольше / меньше ресурсов для любого данного временного / финансового бюджета.
Все кредиты достаются Dr.Gene AMDAHL, чью работу ненавидят все маркетологи, продающие как можно больше «дешевых», помеченных, но неэффективныхигрушки «только для совместного использования» (да, виртуализация означает также еще один уровень дополнительных издержек надстройки и приводит к совместному выполнению SHARED на кремнии (0.5 [ns]
истощение кэша за счет множества повторных ~350+[ns]
повторных выборок)ранее уже кэшированных данных снова «через» локальную границу NUMA, в результате чего повторяющиеся узкие места в каналах RAM-I / O-каналов - наименьшая потеря, о которой следует упомянуть)В результате харинга / виртуализации рабочий процесс для тактов ЦП покажет вам количество украденных тиков ЦП, которые ваши вычислительные нагрузки не смогли вычислить в пользу других, «разделяя» эту самую «облачную мечту небес», оплачиваемуюдля вас на основе «почасового использования», за пределами вашей области контроля).
Облака могут подойти для того, чтобы редко запускать какую-то специальную низкую вычислительную интенсивность (которую DSP, очевидно,не так ли? ) с минимальной междоменной связью / координацией, когорта задач разумного размера, которые могут выиграть от распределенного, маскирования задержки, (наивного) выполнения грубой силы многих таких "мелких" и "не-очень трудоемкие "рабочие единицы (во многих случаях неэффективные сами по себе с точки зрения вычислений класса HPC), но очень" дешевые "- ( просто ) - звучащие ценовые планы заставляют понятьто, что собственная, частная инфраструктура будет стоить (если будет принято решение своевременно, до того, как они уже потратят эти расходы) примерно столько же, сколько использовать «дешево» арендованную во второй, третий, ... n-й раз.
Итак, решение ваших оптимальных -оптимальных расходов, сформулированных в вашем контексте, остается за вами. Всегда.