Как назначить задачу конкретному ядру процессора? - PullRequest
0 голосов
/ 24 мая 2018

Я прочитал материал distributed devices в tensorflow, что обучение может быть назначено конкретному ядру ЦП.

Можем ли мы назначить задачу / поток ядру ЦП для одновременной или параллельной обработки?

with tf.device("/job:ps/task:0"):
  weights_1 = tf.Variable(...)
  biases_1 = tf.Variable(...)

with tf.device("/job:ps/task:1"):
  weights_2 = tf.Variable(...)
  biases_2 = tf.Variable(...)

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вы можете привязать определенный поток процесса к произвольному ядру (при условии, что вы используете Linux).Это работает не только для Python, но и для любого процесса.Я сделал скрипт на python, чтобы показать, как вы можете это сделать.

Вы можете получить идентификаторы потоков с помощью команды ps: [user @ dev ~] $ ps -Lo pid,% cpu, lwp -p {pid} Вывод для меня:

  PID %CPU   LWP
28216 98.0 28216
28216  0.0 28217
28216  0.0 28218

Здесь 28216 - это PID процесса, в то время как вы можете видеть, что в простом скрипте Python работают другие потоки.

Теперь вы можете назначить поток дляконкретное ядро ​​через taskset

taskset -cp 0-5 28218

Будет показано следующее:

pid 28218's current affinity list: 0-11
pid 28218's new affinity list: 0-5

Затем вы можете заметить, что некоторые потоки связаны с различным набором процессоров:

[user@host ~]$ taskset -cp 28218
pid 28218's current affinity list: 0-5
[user@host ~]$ taskset -cp 28217
pid 28217's current affinity list: 0-11
0 голосов
/ 24 мая 2018

Вы можете получить текущий pid процесса python и использовать стороннюю утилиту, такую ​​как taskset , чтобы назначить его ядру ЦП.

Не знаю много о тензорном потоке, но я думаю, чтоGIL войдет в игру здесь. Вам придется использовать многопроцессорность и назначать каждый процесс ядру Dufferent.

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