j'ai écrit un programme qui utilise mpi4py pour faire quelques tâches (faire un tableau) dans le noeud de rang 0 dans le code suivant. Ensuite, il fait un autre tableau dans le nœud de rang 1. Ensuite, je trace les deux tableaux. Le tableau dans le noeud 0 est large casted au noeud 1. Cependant le code donne une erreur bizarre. je la commande suivante:En utilisant matplotlib sur la non-0 rang MPI cause « QXcbConnection: Impossible de se connecter pour afficher »
mpiexec -n 2 -f mfile python mpi_test_4.py
Le programme se déroule comme:
from mpi4py import MPI
import matplotlib.pyplot as plt
import numpy as np
comm = MPI.COMM_WORLD
rank = comm.rank
x = np.linspace(-2*np.pi,2*np.pi,100)
if (rank == 0):
y1 = np.sin(x)
else:
y1 = None
y1 = comm.bcast(y1,root=0)
if (rank == 1):
y2 = np.cos(x)
fig = plt.figure()
ax = fig.gca()
ax.plot(x,y1)
ax.plot(x,y2)
plt.savefig('test.png')
print(rank)
message d'erreur:
0
QXcbConnection: Could not connect to display
===================================================================================
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
= PID 6804 RUNNING AT 192.168.1.106
= EXIT CODE: 134
= CLEANING UP REMAINING PROCESSES
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
[proxy:0:[email protected]] HYD_pmcd_pmip_control_cmd_cb (/home/alankar/mpich3/mpich-3.2/src/pm/hydra/pm/pmiserv/pmip_cb.c:885): assert (!closed) failed
[proxy:0:[email protected]] HYDT_dmxu_poll_wait_for_event (/home/alankar/mpich3/mpich-3.2/src/pm/hydra/tools/demux/demux_poll.c:76): callback returned error status
[proxy:0:[email protected]] main (/home/alankar/mpich3/mpich-3.2/src/pm/hydra/pm/pmiserv/pmip.c:206): demux engine error waiting for event
[[email protected]] HYDT_bscu_wait_for_completion (/home/alankar/mpich3/mpich-3.2/src/pm/hydra/tools/bootstrap/utils/bscu_wait.c:76): one of the processes terminated badly; aborting
[[email protected]] HYDT_bsci_wait_for_completion (/home/alankar/mpich3/mpich-3.2/src/pm/hydra/tools/bootstrap/src/bsci_wait.c:23): launcher returned error waiting for completion
[[email protected]] HYD_pmci_wait_for_completion (/home/alankar/mpich3/mpich-3.2/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c:218): launcher returned error waiting for completion
[[email protected]] main (/home/alankar/mpich3/mpich-3.2/src/pm/hydra/ui/mpich/mpiexec.c:344): process manager error waiting for completion
Cependant quand je conspire sur le noeud 0 qui est le nœud que je suis en utilisant pour exécuter la commande: mpiexec -n 2 -f mfile python mpi_test_4.py le code fonctionne. Par exemple:
from mpi4py import MPI
import matplotlib.pyplot as plt
import numpy as np
comm = MPI.COMM_WORLD
rank = comm.rank
x = np.linspace(-2*np.pi,2*np.pi,100)
if (rank == 1):
y1 = np.sin(x)
else:
y1 = None
y1 = comm.bcast(y1,root=1)
if (rank == 0):
y2 = np.cos(x)
fig = plt.figure()
ax = fig.gca()
ax.plot(x,y1)
ax.plot(x,y2)
plt.savefig('test.png')
print(rank)
Vous continuez à éditer votre question, la modification du code qui provoque chaque erreur avant que quelqu'un d'autre peut répondre à expliquer ce qui se passe. Avez-vous encore une "erreur bizarre" ou avez-vous déjà tout résolu? – Blckknght
@Blckknght toujours l'avoir –
Salut @AlankarDutta d'où vient le 'rank'? –