Как заставить один поток работать на все ядра?
У меня есть программа для вычислений, есть 1 проблема — она работает на одном ядре и заполняет его на 100%, не трогая остальные ядра, сама программа может работать только в 1 потоке (Вычисления нельзя делать асинхронно). Я же хочу что бы она работала на всех ядрах (Можно и без полной работы, хотя бы 200% на всех ядрах), искал в инете инфу — везде разная, но ни один метод не сработал. Может у кого такая проблема была? Можете помочь. 
![]()
Я в коде использовал SetThreadInfinityMask, из-за чего у меня поток работал только на первое ядро, по стандарту и поток делится (Переходит) на различные ядра https://i.stack.imgur.com/9NZRb.png Вероятнее всего @S.H был прав, нужно запустить 4 потока и на каждый поток с помощью SetThreadInfinityMask наложить своё ядро.
Заметил кстати что с SetThreadInfinityMask получается менее потребляющий поток, ибо ему не нужно постоянно переходить на другие ядра ради балансировки.
Как запустить c на все ядра

- Откроется новое окно (системная программа) «Конфигурация системы», переходим в нем во вкладку «Загрузка».

- Если на компьютере установлена только одна операционная система Windows, сразу жмем кнопку «Дополнительные параметры». Если их несколько — выделяем в этом списке ту, которая запущена в данный момент (напротив названия будет указано «Текущая операционная система»).

- В открывшемся дополнительном окне можно просто снять флажок с элемента «Число процессоров», затем нажать «ОК» и «Применить» в предыдущем окне. Это будет означать, что Windows будет управлять — включать и выключать — ядрами в зависимости от текущих вычислительных нагрузок на процессор.
- При желании можно активировать беспрерывную работу всех ядер процессора. Просто ставим флажок напротив элемента «Число процессоров», в списке ниже — устанавливаем наибольшее доступное число, затем жмем «ОК» и «Применить» в предыдущем окне.

- При закрытии окна «Конфигурация системы» будет предложена перезагрузка компьютера.
- Открываем «Диспетчер задач» комбинацией клавиш «Ctrl + Shift + Esc». Во вкладке «Процессы» кликаем правой кнопкой мыши по целевой программе (при необходимости — раскрыть список подпроцессов, кликнув пару раз по значку программы) и выбираем из выпадающего меню пункт «Подробно»:

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

- Теперь нужно отметить ядра (счет начинается с «0»), которые сможет использовать выбранный процесс. Номера ЦП можно выбрать произвольные — это неважно. Важно только отмеченное их количество. Нажимаем «ОК» для применения настроек.

- Создаем в любом месте на компьютере (можно на рабочем столе) обычный текстовый документ. Для удобства переименуем его в соответствии с названием запускаемой программы. Пускай, это будет «Paint.txt» (в вашем случае расширения «.txt» после названия может и не быть — не страшно, об этом чуть ниже).

- Открываем текстовый документ. В него нужно будет вписать команду вида:
- Для примера запустим программу «Paint» так, чтобы она могла работать только с одним ядром процессора (можно задать любое количество — рассмотрим этот вопрос ниже). Команда запуска будет выглядеть следующим образом (как быстро найти путь к запускаемому приложению, также рассмотрим ниже):
start /affinity 1 C:\Windows\System32\mspaint.exe
- Впишем это в созданный текстовый документ и закроем его.

- Теперь нам нужно «превратить» текстовый документ в исполнимый пакетный BAT-файл, для чего достаточно просто сменить расширение с «.txt» на «.bat». Но если у вас на компьютере расширения файлов не отображаются, откройте свойства файла «Paint», смените расширение в текстовом поле в верхней части открывшегося окна, далее нажмите кнопку «ОК» и затем «Да» в еще одном окне с предупреждением:

- Значок текстового документа изменится. Кликнем по нему два раза для запуска указанной программы (в нашем случае «Paint»).

- Теперь проверим, какие ядра использует только запущенный процесс. Для этого в «Диспетчере задач» (во вкладке «Подробности») кликаем правой кнопкой по процессу и выбираем пункт «Задать сходство» по инструкции выше:

- Как видно, все получилось — программа «Paint» уже при запуске имеет ограничение на использование только 1 ядра.
- 1 — 1 ядро.
- 3 — 2 ядра.
- 7 — 3 ядра.
- F — 4 ядра.
- 1F — 5 ядер.
- 3F — 6 ядер.
- 7F — 7 ядер.
- FF — 8 ядер.
start /affinity 7 C:\Windows\System32\mspaint.exe
- Кликаем по имени процесса в «Диспетчере задач» и выбираем пункт «Открыть расположение файла» (программу предварительно нужно запустить):

- Откроется «Проводник» с выделенным файлом. Копируем путь до него в адресной строке, добавляем «\» и следом вписываем имя файла с указанием расширения «.exe».


- Загрузка процессора — программы и советы
- Программы для проверки процессоров
- Что такое троттлинг процессора?
У меня есть программа для вычислений, есть 1 проблема — она работает на одном ядре и заполняет его на 100%, не трогая остальные ядра, сама программа может работать только в 1 потоке (Вычисления нельзя делать асинхронно). Я же хочу что бы она работала на всех ядрах (Можно и без полной работы, хотя бы 200% на всех ядрах), искал в инете инфу — везде разная, но ни один метод не сработал. Может у кого такая проблема была? Можете помочь. 
Как включить все ядра процессора

Привет всем! Иногда игра или программа не работает на полную мощность, т.к. за производительность отвечают не все ядра. В этой статье посмотрим как задействовать все ядра вашего процессора.
Но не ждите волшебной палочки, т.к. если игра или программа не поддерживает многоядерность, то ничего не поделать, если только не переписать заново приложение.
Как запустить все ядра процессора?
Итак, способов будет несколько. По этому показываю первый.
Заходим в пуск — выполнить или клавиши win+r

Далее в открывшемся окне переходим в загрузки — дополнительные параметры.

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

Нажимаем ОК, перезагружаемся.
Далее способ 2.
- Заходим в диспетчер задач — ctrl+shift+esc.
- Или ctrl+alt+del и диспетчер задач.
- Или нажимаем правой кнопкой по панели управления и выбираем диспетчер задач.
Переходим во вкладку процессы. Находим игру и нажимаем правой кнопкой мыши по процессу. Да кстати, игра должна быть запущена. Свернуть её можно или Win+D или alt+tab.

Выбираем задать соответствие.

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

Во всех вкладках будет идти диаграмма.
Если нет, то нажимаем опять задать соответствие, оставляем только ЦП 0, нажимаем ок. Закрываем диспетчер задач, открываем опять повторяем все, то же самое, выбираем все процессоры и нажимаем ок.
Ещё!
В ноутбуках, бывает настроено энергосбережение таким образом, что настройки не дают использовать все ядра.
- Win7 — Заходим в панель управления, идем в электропитание — Изменить параметры плана — изменить дополнительные параметры питания — управление питанием процессора — минимальное состояние процессора.
- Win8, 10 — Или: параметры — система — питание и спящий режим — дополнительные параметры питания — настройка схемы электропитания — изменить дополнительные параметры питания — управление питанием процессора — минимальное состояние процессора

Для полного использования, должно стоять 100%.
Как проверить сколько работает ядер?
Запускаем и видим число активных ядер.

Не путайте этот параметр с количеством виртуальных процессоров, который отображены правее.
На что влияет количество ядер процессора?
Многие путают понятие количества ядер и частоту процессора. Если это сравнивать с человеком, то мозг это процессор, нейроны — это ядра. Ядра работают не во всех играх и приложениях. Если в игре например выполняется 2 процесса, один вырисовывает лес, а другой город и в игре заложено многоядерность, то понадобиться всего 2 ядра, чтобы загрузить эту картинку. А если в игре заложено больше процессов, то задействуют все ядра.
И может быть наоборот, игра или приложение может быть написана так, одно действие может выполнять только одно ядро и в этой ситуации выиграет процессор, у которого выше частота и наиболее хорошо сложена архитектура (по этому обычно процессоры Интел чуть выигрывают Амд).
По этому грубо говоря, количество ядер процессора, влияет на производительность и быстродействие.

Интересно бы знать, зачем по умолчанию в компе задействуются не все ядра. На этом же многие производители делают акценты при рекламе своих продуктов — столько-то ядер, это круто и т.д.
Скорее всего упущение разработчиков)
Не знал, что их нужно включать, я думал они сразу все работают, и компьютер сам контролирует их количество. Сделал все по инструкции, пока ощутимых изменений не заметил, посмотрим, что будет дальше.
Не все приложения и игры используют все ядра, это минус разработчиков. Где-то можно увидеть разницу, а где-то нет..
Вообще не разбираюсь в компьютерах, слишком заумно все написано, ничего не получилось(
ОКАЗАЛОСЬ У МЕНЯ НОУТ РАБОТАЛ НА 1 ЯДРО! как я вообще раньше жил? спасибо, помогли, теперь работаем на полную.
все понятно, спасибо) картиночки очень помогли)) получилось включить все 4 ядра.
То, что изложено в материале — знал. Но здесь изложено настолько доходчиво и с взуализацией всего процесса. Должен понимать любой пользователь. Очень многое здесь знакомо, но изложение материалов, просто впечатляет. Красиво, элегантно, профессионально и с душой. Автору спасибо.
Всё суперр сам не знал ничего про ядра !! Всё заработало +
далано нетак фсё абисню во
корочи игра старый выделяет один поток этот поток может раскинутся на использования на все ядра но по чуть чуть процент формула (100%/колвоядер) или на одно конкретное скорее всего самое первое ядро на 100% ктоестъ получается што если 8 ядер то 100%/8=невышенесможет 12.5% и поэтому производительность процессора должна раскрыть игру в районе этих 12.5% так как выше не сможет такова старая игра которую небудут улучшать чтобы задействовать все ядра
а то что ставиш ты в диспетчере задач все ядра так ээто поумолчанию так а msconfig если ты сборку устанавил и там такие преднастройки или сам поставил это решение на исправление собственных дел рук толку от него 0 так как это давно миф
так што для токих игр главное производительность процессора на одно ядро за которое отвечает архитектура новых процессоров уж потом ядра и ггц процессоров по техн харкам
амд кстате неплохо потанцевал засвои деньги чем ентел афтор рак полный
Перепробовал все методы и тесты кпу-з, эверест, аида 64 итд. Везде в работе одно ядро. Пробовал в биосе включить all cores, комп вырубается. Что делать
Все сделал но после перезагрузки надо опять задавать соответствие, как сделать чтобы windows запомнил игру и сам задавал соответствие.
Просто сбросьте биос на дефолт.
не меняйте эти настройки если конечно не хотите славить синий экран смерти
На ПК всегда исходящее количество ядер стоит минимум система сама их распределяет по загрузке системы,вкл. Всех ядер токо ускорит загрузку ос и все́
Включить все ядра процессора в Windows 10/11
15.02.2023
Max
Windows 10, Windows 11, Вопросы и ответы
комментариев 40
Почти на всех современные процессоры являются многоядерными. Все современные версии Windows поддерживают мультипроцессорные CPU и все ядра на них по умолчанию активны.
В Windows есть ограничение на максимальное поддерживаемое количество физических CPU и ядер (логических процессоров) в зависимости от версии и редакции:
- Windows 10 x86 (Enterprise Pro, Home) – до 2 CPU и 32 логических процессоров (учитываются как физические ядра, так и виртуальные ядра Hyper-Threading)
- Windows 10/11 x64 – до 2 CPU и 256 логических процессоров
- Windows Server 2019/2016/2012R2 – 640 логических процессоров
- Windows Server 2008 R2 – 256 логических ядер
Сколько процессоров и ядер доступно в Windows?
Проще всего проверить, сколько физических CPU, ядер и логических процессоров доступно в Windows с помощью Task Manager.
- Запустите taskmgr.exe и перейдите на вкладку Performance;
- Выберите CPU;
- В правом окне указано количество доступных процессоров (sockets), физических ядер (24 cores) и логических процессоров (logical processors).

В диспетчере устройств ( devmgmt.msc ) также отображается количество доступных логических ядер.

Также информация о физических CPU и количестве ядер на них отображается в разделе Processor утилиты msinfo32.exe

Вы можете получить информацию о количестве ядер и логических процессорах с помощью PowerShell:
Get-WmiObject -class Win32_processor | ft NumberOfCores,NumberOfLogicalProcessors

В переменной окружения Windows также есть информация о количестве логических процессоров в Windows:
![]()
Как включить все ядра процессора в Windows?
Если в Windows недоступны все ядра CPU, проверьте включены ли они в настройках BIOS/UEFI. Здесь могут быть два параметра:
- HyperThreading – возможность использовать оба логических процессора ядра CPU
- Active Processor Cores – разрешено ли использовать все ядра процессора
Перезагрузите Windows и войдите в настройки BIOS (обычно для этого используются клавиши F2 , Del , F10 или F1 .
Конкретные названия пунктов и их наличие зависит от версии BIOS и модели процессора. В моем случае все ядра и логические процессоры включены в разделе Processor Configuration:
- Hyper-Threading ALL: Enabled
- Active Processor Cores: All

Как запускать программу в Windows только на определенных ядрах?
В Windows вы можете разрешить программе выполняться только на одном или нескольких ядрах. По-умолчанию запущенное приложение Windows может выполняться на любом ядре.
Если вам нужно привязать программу к определенным ядрам, можно воспользоваться функцией Processor Affinity. Это может понадобится, если вы хотите ограничить использование CPU программой, или запускать программу только на одном ядре (это бывает нужно для запуска старых приложений, которые некорректно работают на многоядерных компьютерах.
Вы можете изменить привязку запущенного приложения к ядрам с помощью Task Manager:
-
Перейдите на вкладку Details;
Если нужно сразу запустить приложение на одном ядре, например, CPU0. Воспользуйтесь командой:
cmd.exe /c start «Acrobat DC» /affinity 1 «C:\Program Files\MyApp\yourappname.exe»
Включить все ядра Windows при загрузке
В Windows при загрузке компьютера всегда используется одно ядро. Вы можете разрешить использовать все ядра при загрузке Windows через System Configuration:

- Запустите утилиту msconfig ;
- Перейдите на вкладку Boot и выберите загрузочную запись вашей Windows;
- Нажмите Advanced options;
- Включите опцию Number of processors в окне BOOT Advanced Options;
- Выберите количество логических процессоров (потоков), которые можно использовать при загрузке .
Предыдущая статья Следующая статья