6

У меня есть исполняемый файл foo.exe который мне нужно запустить 6 раз одновременно на многопроцессорной установке, где первые 3 экземпляра будут назначены ядрам в группе 0, а следующие 3 экземпляра будут назначены ядрам в группе 1.

У меня на рабочем столе 6 ярлыков для программы foo.exe . Каждый ярлык дает программе foo.exe свой набор параметров для работы.

Я просто нажимаю на ярлыки, чтобы запустить 6 экземпляров программ foo.exe . Все они запускаются, однако мне нужно зайти в диспетчер задач и убедиться, что 3 назначены для ЦП в группе 0, а 3 - для группы 1 ЦП, установив их групповую привязку.

Есть ли способ изменить ярлыки на рабочем столе, чтобы 3 из программ foo.exe использовали группу 0, а 3 - группу 1?

1 ответ1

6

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

использование

start /affinity n foo.exe -arguments

Итак, ваш ярлык будет выглядеть так:

c:\windows\system32\cmd.exe /C start /affinity n foo.exe -arguments где n - номер ядра ЦП +1.

Так что для запуска на Core 0 это будет:

c:\windows\system32\cmd.exe /C start /affinity 1 foo.exe -arguments .

Источник

Указание нескольких ядер

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

  1. Визуализируйте ядра как массив с длиной массива, равной количеству ядер. Ядра будут расположены в порядке убывания справа налево:

    [CPU3, CPU2, CPU1, CPU0]

  2. Теперь замените ядра, которые вы хотите использовать в вашем процессе, на 1, а те, которые вы не хотите использовать на 0. Предполагая, что я хочу, чтобы мой процесс использовал ядра 3 и 1, мой массив будет выглядеть так:

    [0,1,0,1]

  3. "Высовывать" элементы массива в строку. Теперь это будет представлено как 0101 .

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

  5. Теперь используйте ту же команду start /affinity n foo.exe -arguments но теперь n будет 0x5 , давая start /affinity 0x5 foo.exe -arguments

Источник

Заметки:
  • Источник объясняет визуализацию в виде двоичной строки, а не массива (проверьте это). Я нахожу это немного запутанным, поэтому я объяснил, используя массив.
  • Источник не указывает, что вы должны префикс 0x чтобы показать его шестнадцатеричный в команде. Чтение start /? указывает, что он должен быть шестнадцатеричным.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .