что значит использовать только физические ядра

Влияние количества ядер на производительность процессора

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Ядра центрального процессора

Ядро – это основная составляющая ЦП. Именно здесь производятся все операции и вычисления. Если ядер несколько, то они «общаются» между собой и с другими компонентами системы посредством шины данных. Количество таких «кирпичиков», в зависимости от поставленной задачи, влияет на общую производительность процессора. В целом, чем их больше, тем выше скорость обработки информации, но на деле имеются условия, при которых многоядерные CPU уступают своим менее «упакованным» собратьям.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Физические и логические ядра

Многие процессоры Intel, а с недавнего времени и AMD, способны производить расчеты так, что одно физическое ядро оперирует двумя потоками вычислений. Эти потоки называются логическими ядрами. Например, мы можем увидеть в CPU-Z вот такие характеристики:

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Отвечает за это технология Hyper Threading (HT) у Intel или Simultaneous Multithreading (SMT) у AMD. Здесь важно понять, что добавленное логическое ядро будет медленнее физического, то есть полноценный четырехъядерный ЦП мощнее двухъядерного того же поколения с HT или SMT в одних и тех же приложениях.

Игровые приложения построены таким образом, что вместе с видеокартой над расчетом мира трудится и центральный процессор. Чем сложнее физика объектов, чем их больше, тем выше нагрузка, и более мощный «камень» лучше справится с работой. Но не стоит спешить покупать многоядерного монстра, так как игры бывают разные.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Старые проекты, разработанные примерно до 2015 года, в основном не могут загрузить больше 1 – 2 ядер из-за особенностей кода, написанного разработчиками. В этом случае предпочтительнее иметь двухъядерный процессор с высокой частотой, чем восьмиядерный с низкими мегагерцами. Это лишь пример, на практике современные многоядерные ЦП имеют довольно высокую производительность на ядро и в устаревших играх работают хорошо.

Одной из первых игр, код которой способен выполняться на нескольких (4 и более) ядрах, загружая их равномерно, стала GTA 5, выпущенная на ПК в 2015 году. С тех пор большинство проектов можно считать многопоточными. Это значит, что у многоядерного процессора есть шанс не отстать от своего высокочастотного коллеги.

В зависимости от того, насколько хорошо игра способна использовать вычислительные потоки, многоядерность может быть как плюсом, так и минусом. На момент написания данного материала «игровыми» можно считать CPU, имеющие от 4 ядер, лучше с гиперпоточностью (см. выше). Впрочем, тенденция такова, что разработчики все более оптимизируют код под параллельные вычисления, и малоядерные модели скоро безнадежно устареют.

Программы

Здесь все немного проще, чем с играми, так как мы можем подобрать «камень» для работы в конкретной программе или пакете. Рабочие приложения также бывают однопоточными и многопоточными. Первым нужна высокая производительность на ядро, а вторым большое количество вычислительных потоков. Например, с рендерингом видео или 3D сцен лучше справится многоядерный «проц», а Фотошопу необходимо 1 – 2 мощных ядра.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Операционная система

Количество ядер влияет на быстродействие ОС только в том случае, если равняется 1. В остальных случаях системные процессы не нагружают процессор настолько, чтобы были задействованы все ресурсы. Мы сейчас не говорим о вирусах или сбоях, способных «положить на лопатки» любой «камень», а о штатной работе. Впрочем, вместе с системой может быть запущено много фоновых программ, которые также потребляют процессорное время и дополнительные ядра не будут лишними.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Универсальные решения

Сразу отметим, что многозадачных процессоров не бывает. Есть только модели, способные показывать неплохие результаты во всех приложениях. В качестве примера можно привести шестиядерные CPU с высокой частотой i7 8700, Ryzen R5 2600 (1600) или более пожилые аналогичные «камни», но даже они не могут претендовать на универсальность, если вы параллельно с играми активно работаете с видео и 3D или занимаетесь стримингом.

Заключение

Резюмируя все написанное выше, можно сделать следующий вывод: количество ядер процессора — это характеристика, показывающая общую вычислительную мощность, а вот, каким образом она будет использоваться, зависит от приложения. Для игр вполне сгодится четырехъядерная модель, а для высокоресурсных программ лучше выбрать «камень» с большим количеством потоков.

Помимо этой статьи, на сайте еще 12470 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

Источник

Escape from Tarkov как использовать только физические ядра

В обновление Escape from Tarkov 0.12.0.5054 появилась опция “использовать только физические ядра CPU” мы советуем всем включить эту опцию!

Это решило старую проблему при которых игра работала не оптимальным образом из за того что думала что у вас не 6, а например 12 ядер — случилось это из за такой штуки как гипертрединг или виртуальные ядра/потоки.

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

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

Отключаем Hyper-threading в BIOS

Замеры показали, что игра без опции “использовать только физические ядра CPU” порождает микрофризы, чем игра с этой опцией.

Игроделы действительно сделали оптимизацию и игра с опцией повышает производительность и снижает микрофризы.

Но что интересно — если отключить гипертрейдинг не в игре, а на уровне биоса — то производительность увеличится еще больше!

Важно, отключение многопоточности для всего ПК — хорошее решение только если ваш ПК не задействован для видео монтажа, 3Д моделирования итп работам, так как в таких программах Hyper-threading дает прирост производительности. При этом и без Hyper-threading вы сможете спокойно работать в фотошопе.

В настройках BIOS (если проц поддерживает технологию) имеется настройка, которая называется либо Hyper Threading Technology либо Function.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Но, в зависимости от версии BIOS и разработчика, параметр размещен либо в главном (Main) меню, либо в расширенных настройках (Advanced BIOS Features).

Источник

Escape From Tarkov настройки графики 2020

Определение оптимальных графических настроек для Таркова — довольно сложная задача, все параметры очень индивидуальны. Тем не менее, есть шаблон который используют наиболее опытные и профессиональные игроки.

Внеигровые настройки Escape From Tarkov

Перед перед выполнением любых внутриигровых настроек, рекомендуется проверить свою операционную систему и графические драйверы, которые могут стать источником многих проблем.

Обновление драйверов

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Откройте программное обеспечение AMD Radeon (для графических процессоров AMD) или NVIDIA GeForce Experience (для графических процессоров NVIDIA) и проверьте наличие обновлений. Если доступно обновление, загрузите и установите его.

Настройки совместимости

Данные настройки индивидуальны, но обязательно протестируйте их.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Обязательно запустите игру и проверьте влияние данных настроек, они могут как улучшить производительность, так и уменьшить его.

Игровые настройки Escape From Tarkov

Auto Ram Cleaner

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Автоочистка оперативной памяти. Самое первое, что вы должны сделать перед настройкой графики, это включить Auto Ram Cleaner в настройках игры. Он останавливает использование вашей ОЗУ более чем на 70% и очищает все кэшированные игровые файлы (в ОЗУ), которые больше не используются и со временем снижают вашу производительность вызывая утечку. Чем меньше оперативной памяти у вашего компьютера, тем важнее этот параметр. Для тех у кого более 16+ ГБ ОЗУ, данный параметр бесполезен.

Use only the physical cores

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Использовать только физические ядра: включаем.

Поле зрения, горизонтальный угол обзора игры. Чем выше FOV, тем больше угол обзора слева и справа. Мы бы рекомендовали установить 75 (макс.), поле зрения pro геймеров.

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

Графические настройки Escape From Tarkov

Самый простой способ поднять FPS — начать с игровых настроек. Настройки графики в игре будут иметь наибольшее влияние на производительность во время игры.

Разрешение экрана

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

В зависимости от вашей видеокарты и монитора, разрешение должно быть идентичным. По данным Steam, более половины игроков для ПК используют 1920 × 1080.

Режим экрана

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

V-Sync ( Вертикальная синхронизация )

Рекомендуется Отключить. Основной источник заиканий и разрывов экрана.

Когда VSync включен. Заикание происходит, когда частота кадров падает ниже предела частоты кадров VSync, который обычно составляет 60 кадров в секунду, что соответствует частоте обновления 60 Гц для большинства мониторов и экранов. Когда частота кадров падает ниже предела, VSync блокирует частоту кадров до ближайшего уровня, например, 45 или 30 кадров в секунду. По мере улучшения производительности частота кадров возвращается к 60.

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

Когда VSync отключен, в игре могут появиться разрывы экрана, когда частота кадров превышает частоту обновления дисплея (например, 120 кадров в секунду на дисплее с частотой 60 Гц). Это вызывает горизонтальные разрывы по всему экрану всякий раз, когда камера или точка обзора движутся горизонтально или вертикально.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Для пользователей видеокарт GeForce GTX, рекомендуется использовать Adaptive VSync. Через панель управления NVIDIA, включите опцию Adaptive VSync.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Качество текстур — среднее / высокое

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Качество текстур — Рекомендуется устанавливать высокое значение, если у вас относительно высокая память видеокарты для лучшей производительности. Что касается FPS, эти настройки оказывают слабое влияние, но могут повлиять на заикание или длительную загрузку, если слабая видеокарта.

Качество теней — среднее / высокое

В отличии от других игр в Escape From Tarkov, понижение этого параметра окажет небольшое влияние на производительность. Установите средний или высокий для повышения FPS. Некоторые игроки предпочитают не использовать тени, так как им легче видеть очертания персонажей, однако тени на высоких значениях заставляет игру использовать ваш графический процессор, а на низких однопоточный процессор.

Детализация объектов — 2

Установите на 2 для лучшей производительности. Этот параметр будет влиять на внешний вид игры, но даст вам сильное повышение FPS.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Общая видимость от 1000-2000

Теперь, когда имеются большие карты в Escape From Tarkov, мы рекомендуем установить это значение на 2000. Хотя 1000, более чем достаточно для небольших карт.

Видимость теней от 40-100

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

Сглаживание — TAA

Наряду с разрешением, качество сглаживания — это тот параметр, который больше всего влияет на визуальное изображение, что также даст вам больше FPS.

Рекомендуемая настройка TAA для стабильной частоты кадров. Это даст слегка острые края в игре или «неровный» и четкий вид, сглаживание поможет вам сгладить графику, но может стоить производительности при высокой частоте дискретизации.

Resampling — 1

Установите это значение в 1x — выкл., даст небольшой прирост fps.

HBAO — Выкл.

HBAO или Horizon-Based Ambient Occlusion. Делает игру более реалистичной, но съедает ресурсы, поэтому выключите ее.

SSR — выкл.

Анизотропная фильтрация фильтрация — выкл.

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

Резкость 1.0 — 1.4

Резкость установлена ​​на 1,0 по умолчанию. Тем не менее, это индивидуальный выбор в зависимости от того, как вы хотите, чтобы ваша игра выглядела. При значении 1.1 или 1.4, немного легче видеть больше деталей.

что значит использовать только физические ядра. Смотреть фото что значит использовать только физические ядра. Смотреть картинку что значит использовать только физические ядра. Картинка про что значит использовать только физические ядра. Фото что значит использовать только физические ядра

Лимит кадров в игре

Установите обе эти настройки на максимальное количество FPS, которое составляет 50 для лобби и 120 в игре.

Z-Blur — откл.

Отключение дает четкое изображение при быстрых поворотах.

Хроматические аберрации — откл.

Добавляет зернистость, отключение дает четкость изображения.

Шум — откл.

Минимизированный эффект зернистости. Это затрудняет обзор и реакцию.

Тени Травы

Источник

Многопроцессорная обработка: использовать только физические ядра?

Предположим, у меня есть процессор с 4 физическими ядрами, каждый с двумя логическими ядрами.

в моей системе достаточно памяти для размещения 4 экземпляров foo параллельно, но не 8. Кроме того, поскольку 4 из этих 8 ядер являются логическими, я также не ожидаю, что использование всех 8 ядер обеспечит много преимуществ выше и за пределами использования 4 физических только.

как это сделать в в Python?

ранее я использовал пример кода из multiprocessing но я агностик библиотеки, поэтому, чтобы избежать путаницы, я удалил это.

3 ответов

Примечание: этот подход не работает в windows и тестируется только в linux.

используя multiprocessing.Process :

у меня есть 32 ядра на моей рабочей станции, поэтому я поставлю частичные результаты здесь:

как вы видите, предыдущее и новое сродство каждого процесса здесь. Первый-для всех ядер (0-31), а затем присваивается ядру 0, второй процесс по умолчанию присваивается core0, а затем его сродство изменяется на следующее ядро (1) и т. д.

используя multiprocessing.Pool :

на Pool.py найдите строку, где _task_handler_start() метод вызывается. В следующей строке вы можете назначить процесс в пуле каждому «физическому» ядру с помощью (я поставил import os здесь, чтобы читатель не забыл импортировать его):

обратите внимание, что эта модификация pool.py назначьте задания ядрам round-robinly. Поэтому, если вы назначаете больше заданий, чем cpu-ядер, у вас будет несколько из них на одном ядре.

EDIT:

то, что OP ищет, это иметь pool() это способно смотреть на пул на определенных ядрах. Для этого больше настроек на multiprocessing необходимы (сначала отмените вышеупомянутые изменения).

предупреждение:

multiprocessing ‘ s pool.py :

добавить до __init__() определение. В моей версии это выглядит так после добавления его:

также вы должны добавьте следующий код после self._worker_handler.start() :

multiprocessing ‘ s __init__.py :

добавить cores_idx=None аргумент к определению Pool() в, а также другие Pool() вызов функции в обратный. В моей версии это выглядит так:

и вы сделали. В следующем примере выполняется пул из 5 работников только на ядрах 0 и 2:

конечно можно еще имейте обычную функциональность multiprocessing.Poll() а также путем удаления

Я знаю, что тема довольно старая, но, как она по-прежнему появляется в качестве первого ответа при вводе «многопроцессорного логического ядра» в google. Я чувствую, что должен дать дополнительный ответ, потому что я вижу, что это будет возможно для людей в 2018 году (или даже позже..) чтобы легко запутаться здесь (некоторые ответы действительно немного запутаны)

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

—> для подсчета процессоров (логических / физических) используйте модуль PSUTIL

для потока 4 physical core / 8 i7 for ex он вернется

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

—> для использования физического ядра (по вашему выбору) используйте модуль многопроцессорной обработки, описанный YUGI

просто посчитайте, сколько физические процессы, запуск многопроцессорной.Бассейн из 4-х человек.

или вы также можете попробовать использовать joblib.Параллельно (функция)

joblib в 2018 году не является частью стандартного дистрибутива python, но это просто оболочка многопроцессорного модуля, который был описан Yugi.

—> большую часть времени не используйте больше ядер, чем доступно (если вы не проверили очень конкретный код и не доказали, что он того стоит)

мы можем слышать здесь и там (также от некоторых людей, отвечающих здесь), что «ОС позаботится о том, чтобы вы использовали больше ядра, чем доступно». это абсолютно 100% ложь. Если вы используете больше core, чем доступно, вы столкнетесь с огромными падениями производительности. Потому что планировщик ОС будет стараться изо всех сил работать над каждой задачей с одинаковым вниманием, регулярно переключаясь с одной на другую, и в зависимости от ос он может потратить до 100% своего рабочего времени на простое переключение между процессами, что было бы катастрофично.

не просто доверяйте мне: попробуйте, проверьте его, вы увидите, насколько это ясно.

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

Если вы хотите работать на core 3, а не core 1, например, ну, я думаю, что действительно есть некоторые решения, но доступны, только если вы знаете, как кодировать ядро и планировщик ОС, что, я думаю, не так, если вы задаете этот вопрос.

Если вы запускаете 4 CPU-интенсивных процесса на 4 физических / 8 логических процессорах, планировщик будет приписывать каждый из ваших процессов 1 отдельному физическому ядру (и 4 логических ядра останутся не/плохо используются). Но на 4 логических / 8 потоков proc, если единицы обработки(0,1) (1,2) (2,3) (4,5) (5,6) (6,7), тогда не имеет значения, выполняется ли процесс на 0 или 1 : это один и тот же процессор.

из моих знаний по крайней мере (но эксперт может confirm / infirm, возможно, он также отличается от очень конкретных спецификаций оборудования) я думаю, что нет или очень мало разницы между выполнением кода на 0 или 1. В процессоре (0,1) я не уверен, что 0 является логическим, тогда как 1 является физическим, или наоборот. Из моего понимания (которое может быть неправильным), оба являются процессорами из одного и того же процессора, и они просто разделяют свою кэш-память / доступ к оборудованию (включая ОЗУ), а 0-не более физический блок, чем 1.

более того, вы должны позволить ОС решать. Поскольку планировщик ОС может использовать аппаратное логическое ядро turbo boost, существующее на некоторых платформах (например, i7, i5, i3. ), что-то еще, что у вас нет власти, и это может быть действительно полезно для вас.

Если вы запускаете 5 CPU-интенсивных задач на логическом ядре 4 physical / 8, поведение будет хаотичным, почти непредсказуемым, в основном зависящим от вашего оборудования и ОС. Планировщик будет стараться изо всех сил. Почти каждый раз вам придется сталкиваться с действительно плохими выступлениями.

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

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

—> большую часть времени дополнительные логические ядра действительно бесполезны в PYTHON (но не всегда)

есть 2 основных способа выполнения действительно параллельных задач в python.

например, чтобы запустить 4 задачи параллельно

—> многопроцессорная обработка создаст 4 разных интерпретатора python. Для каждого из них вы должны запустить интерпретатор python, определить права чтения / записи, определить среду, выделить много памяти и т. д. Скажем так: вы начнете совершенно новый экземпляр программы с 0. Это может занять много времени, поэтому вы должны быть уверены, что эта новая программа будет работать достаточно долго, чтобы она стоит того.

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

—> многопоточность-другому. В вашем интерпретаторе python он будет просто создайте небольшой объем памяти, который будет доступен многим процессорам, и работайте над ним одновременно. Это намного быстрее нерест (где нерест нового процесса на старом компьютере может занять много секунд, иногда нерест потока выполняется в течение смехотворно малой доли времени). Вы не создаете новые процессы, а «потоки», которые намного легче.

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

в python есть очень большое ограничение: только одна строка python может быть выполнена одновременно в интерпретаторе python, который называется Gil (Global Interpreter Lock). Поэтому большую часть времени вы даже потеряете производительность, используя многопоточность, потому что разные потоки должны будут ждать доступ к тому же ресурсу. Многопоточность всегда бесполезна и даже хуже, если ваш код является чистым python.

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

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

удаление GIL определенно было предметом многих исследований (см. экспериментальные проекты PyPy или Cython, которые оба пытаются это сделать).

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

это будет работать на 100%, и вы сможете использовать все логические ядра, в python, с многопоточностью и по-настоящему. GIL не будет беспокоить вас, потому что вы не будете выполнять истинные функции python, а вместо этого функции C.

например, некоторые библиотеки, такие как Numpy, могут работать со всеми доступными потоками, потому что они закодированы в C. Но если Вы дойдете до этого момента, я всегда думал, что было бы разумно подумать о выполнении вашей программы на C/C++ напрямую, потому что это очень далеко от первоначального питонического духа.

Я часто вижу, как люди говорят: «Хорошо, у меня есть 8 физических ядер, поэтому я возьму 8 ядер для своей работы». Это часто работает, но иногда оказывается плохой идеей, особенно если ваша работа требует много ввода-вывода.

попробуйте с ядрами N-1 (еще раз, особенно для высокозатратных задач ввода-вывода), и вы увидите, что 100% времени, на каждой задаче/в среднем, одиночные задачи всегда будут работать быстрее на ядре N-1. Действительно, ваш компьютер делает много разных вещей: USB, мышь, клавиатура, сеть, жесткий диск и т. д. Даже на рабочей станции периодические задачи выполняются в любое время в фоновом режиме, о котором вы понятия не имеете. Если вы не позволите 1 физическому ядру управлять этими задачами, ваш расчет будет регулярно прерываться (вымывается из памяти / заменяется обратно в память), что также может привести к вопросам производительности.

вы можете подумать: «ну, фоновые задачи будут использовать только 5% времени процессора, поэтому осталось 95%». Но это не так.

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

если (и это иногда случается) по какой-то неизвестной причине эта проблема планировщика влияет на выполнение не 1, а 30 задач, это может привести к действительно интригующим ситуациям, когда работа над 29/30 физическим ядром может быть значительно быстрее, чем на 30/30

БОЛЬШЕ CPU НЕ ВСЕГДА ЛУЧШИЙ

это очень часто, когда вы используете многопроцессорную обработку.Пул, для использования многопроцессорной обработки.Очередь или очередь менеджера, разделяемая между процессами, чтобы обеспечить базовую связь между ними. Иногда (я, должно быть, сказал 100 раз, но я повторяю это), аппаратно-зависимым образом, это может произойти (но вы должны проверить его для своего конкретного приложения, реализации кода и вашего оборудования), что использование большего количества ЦП может создать узкое место, когда вы делаете процессы общаться / синхронизировать. В этих конкретных случаях может быть интересно запустить на более низком номере процессора или даже попытаться депортировать задача синхронизации на более быстром процессоре (здесь я говорю о научных интенсивные вычисления на кластер, конечно). Поскольку многопроцессорная обработка часто предназначена для использования в кластерах, вы должны заметить, что кластеры часто разогнаны по частоте для энергосберегающих целей. Из-за этого одноядерные выступления могут быть действительно плохо (сбалансировано-гораздо большее количество процессоров), что делает проблему еще хуже, когда вы масштабируете свой код с локального компьютера (несколько ядра, высокая одноядерная производительность) в кластер (много ядер, более низкая одноядерная производительность), потому что ваше узкое место кода в соответствии с соотношением single_core_perf/nb_cpu, что иногда очень раздражает

у всех есть соблазн использовать как можно больше CPU. Но контрольные показатели для этих случаев обязательны.

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

легко представить, что если у вас есть 31 CPU записи информации на один очень медленный процессор, то ваши выступления упадут (и, возможно, что-то рухнет, если вы преодолеете способность системы обрабатывать временные данные)

—> возьмите домой сообщение

последнее, но не менее важно, и самое главное: если вы действительно ищете производительность, вы должны абсолютно, всегда, всегда бенчмарк, а не гадать ничего. Benchmark часто показывает странное поведение платформы / оборудования / драйвера, о котором вы понятия не имеете.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *