Привязка процесса Python к определенным ядрам (Linux) с помощью mpirunPython

Программы на Python
Ответить
Anonymous
 Привязка процесса Python к определенным ядрам (Linux) с помощью mpirun

Сообщение Anonymous »

У меня есть файл Python bla.py:

Код: Выделить всё

import os
from mpi4py import MPI
import psutil

comm = MPI.COMM_WORLD
rank = comm.Get_rank()
PID = os.getpid()
cpu_affinity = psutil.Process().cpu_num()

print(f'rank: {rank} has PID: {PID} with affinity {cpu_affinity}')
Но когда я выполняю его с помощью mpirun --cpu-set 15-20 --bind-to core -n 6 python3 bla.py, я получаю:

Код: Выделить всё

rank: 5 has PID: 2451954 with affinity 16
rank: 2 has PID: 2451923 with affinity 15
rank: 0 has PID: 2451911 with affinity 20
rank: 4 has PID: 2451944 with affinity 18
rank: 3 has PID: 2451935 with affinity 16
rank: 1 has PID: 2451919 with affinity 17
Обратите внимание, что есть 2 процесса с родством 16 и ни одного процесса с родством 19. Это недетерминировано, и иногда процессы фактически сопоставляются 1:1 с конкретными ядрами, а иногда нет.
С --display-map:

Код: Выделить всё

Data for JOB [62540,1] offset 0 Total slots allocated 24

========================   JOB MAP   ========================

Data for node: triton  Num slots: 24   Max slots: 0    Num procs: 6
Process OMPI jobid: [62540,1] App: 0 Process rank: 0 Bound: UNBOUND
Process OMPI jobid: [62540,1] App: 0 Process rank: 1 Bound: UNBOUND
Process OMPI jobid: [62540,1] App: 0 Process rank: 2 Bound: UNBOUND
Process OMPI jobid: [62540,1] App: 0 Process rank: 3 Bound: UNBOUND
Process OMPI jobid: [62540,1] App: 0 Process rank: 4 Bound: UNBOUND
Process OMPI jobid: [62540,1] App: 0 Process rank: 5 Bound: UNBOUND

=============================================================
С --report-bindings:

Код: Выделить всё

[triton.ecn.purdue.edu:2486163] MCW rank 0 is not bound (or bound to all available processors)
[triton.ecn.purdue.edu:2486163] MCW rank 1 is not bound (or bound to all available processors)
[triton.ecn.purdue.edu:2486163] MCW rank 2 is not bound (or bound to all available processors)
[triton.ecn.purdue.edu:2486163] MCW rank 3 is not bound (or bound to all available processors)
[triton.ecn.purdue.edu:2486163] MCW rank 4 is not bound (or bound to all available processors)
[triton.ecn.purdue.edu:2486163] MCW rank 5 is not bound (or bound to all available processors)
Как мне прикрепить 6 запущенных процессов к 6 различным ядрам?
Я попробовал --map-by core без передачи --cpu-set и фактически назначает каждый процесс определенному ядру, но не позволяет мне выбирать, какие процессоры я хочу использовать (

Код: Выделить всё

--map-by core
и --cpu-set` нельзя передавать вместе).

Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-mpirun
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»