2016-03-22 12 views
2

Ich bekomme die Berechtigung verweigert, wenn ich versuche, ein MPI-Beispiel zu starten. Dies ist der Code, den ich ausführen möchte.Berechtigung verweigert, wenn ich versuche, mpi auszuführen Beispiel

#include <stdio.h> 
#include <mpi.h> 


int main (int argc,char *argv[]) 
{ 
    int rank, size; 

    MPI_Init (&argc, &argv); /* starts MPI */ 
    MPI_Comm_rank (MPI_COMM_WORLD, &rank); /* get current process id */ 
    MPI_Comm_size (MPI_COMM_WORLD, &size); /* get number of processes */ 
    printf("Hello world from process %d of %d\n", rank, size); 
    MPI_Finalize(); 
    return 0; 
} 

Ich entsprach es auf der Master-VM, in einem freigegebenen Ordner. Ich habe auch ssh-Schlüssel erzeugt und ihn auf alle Slave-VMs kopiert. Ich habe eine "hosts" -Datei, die alle IP-Adressen aller VMs einschließlich der Master-VM enthält.

ich den Code mit diesem Befehl ausführen

`mpiexec -f Hosts -n 4 hello_world

Aber ich bekomme

=================================================================================== 
= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES 
= PID 2961 RUNNING AT 10.0.0.41 
= EXIT CODE: 255 
= CLEANING UP REMAINING PROCESSES 
= YOU CAN IGNORE THE BELOW CLEANUP MESSAGES 
=================================================================================== 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,password). 
Permission denied, please try again. 
Permission denied (publickey,password). 

By the way 10.0.0.41 ist der Master-VM.

Vielen Dank im Voraus

+0

Ich habe versucht, dass vor der Frage veröffentlichen. Das, was ich Sudo: mpiexec: Befehl nicht gefunden. – user3312853

Antwort

-1

Ich fand es heraus. Ich benutze Ubuntu, und es erlaubt standardmäßig keinen Root-Zugriff über ssh. Also musste ich den Root-SSH-Zugriff in allen VMs erlauben und dann einen SSH-Schlüssel generieren und ihn auf alle kommunizierenden VMs kopieren.

in mehr Details, falls jemand in das gleiche Problem läuft.

Ich habe folgende Schritte in allen VMs

passwd root

dann wählen Sie ein passs Wort

passwd -u root

vim/etc/ssh/sshd_config

bearbeiten "PermitRootLogin ohne Passwort" >>>> mache es "PermitRootLogin ja"

Service ssh Neustart

Jetzt können Sie einen SSH-Schlüssel mit ssh-keygen

und kopieren Sie sie mit ssh-copy-id -i root @ remote

das gleiche für alle zwei kommunizierenden Maschinen erzeugen in deinem Cluster.

Eine andere Sache, die ich erwähnen möchte, ist, hatte ich einen Fehler bei der Ausführung der MPI-Code.

Ich habe 'mpiexec -f-Hosts -n 4 hallo_world' Ich hätte ./ vor der ausführbaren Datei. So ist der richtige Befehl 'mpiexec -f Hosts -n 4 ./hello_world' sein sollte

Grüße

+0

Dies ist nur ein einfacher Ausweg. MPI soll nicht als root laufen. – chapelo

Verwandte Themen