OpenMPI C++ und Eclipse Parallel Tool Platform

Bei meiner Standartinstallation von Eclipse Parallel Tool Platform (Eclipse PTP) unter Fedora 19 läuft OpenMPI nicht ganz gerade. Dieses Tutorial soll als Konfigurationsanleitung dienen.

1. xxx could not be resolved - Unaufgelöste Symbole bei C++ Projekte

Das Standart-MPI Projekt mit dem Pi berechnet wird wird erstellt, Eclipse kann jedoch die C++ Symbole von OpenMPI nicht auflösen. Die folgenden Fehler erscheinen in Eclipse


Function 'Finalize' could not be resolved
Symbol 'COMM_WORLD' could not be resolved
Method 'Reduce' could not be resolved
Method 'Bcast' could not be resolved
Method 'Get_rank' could not be resolved
Symbol 'COMM_WORLD' could not be resolved
Method 'Get_size' could not be resolved
Symbol 'COMM_WORLD' could not be resolved
Function 'Init' could not be resolved
Symbol 'COMM_WORLD' could not be resolved

Und das ganze als Screenshot:

Rot angezeigt: Eclipse kann die C++ Symbole nicht auflösen
Rot angezeigt: Eclipse kann die C++ Symbole nicht auflösen

Abhilfe kommt sofort: Einfach das OpenMPI-Include directory manuell einbinden. Dazu einfach Rechtsklick auf das Projekt->Properties->C/C++ Build->Settings->GCC C++ Compiler->Includes und da einfügen. Bei mir ist das Verzeichnis von OpenMPI unter


/usr/include/openmpi-x86_64

zu finden

Include in GCC C++ Compiler manuell einfügen
Include in GCC C++ Compiler manuell einfügen

Eventuell das Projekt Aktualisieren (Rechtsklick->Refresh) und schon sind die Fehler verschwunden

Eclipse-PTP-ErrorEX
Fehler to be gone

 

2. Projekt lauffähig machen

OK, mein Programm ist geschrieben, ich will es jetzt auch lauffähig machen. Ich verwende OpenMPI und Environment Module.

Dazu müssen wir die "Run Configuration" so anpassen, das mpirun als Programm gestartet wird und LD_LIBRARY_PATH so gesetzt wird, dass libmpi_cxx gefunden wird. Letzteres ist notwendig, da ich Environment Modules verwende, standartmäßig also kein Path auf libmpi_cxx ziegt.

2.1 mpirun ausführen

Wir bearbeiten also die Run Configuration

Eclipse-PTP-RunConfig0Bei C/C++ Application müssen wir nun den Pfad von mpirun angeben. Eclipse erwartet den absoluten Pfad. Bei mir ist mpirun im folgenden Pfad vorhanden

/usr/local/bin/mpirun

Sollte dieser bei euch nicht funktionieren, kann mit dem folgenden Befehl danach gesucht werden

whereis -b mpirun

Danach einfach dort angeben

Wir bearbeiten die Run configuration
Wir bearbeiten die Run configuration

Nachdem wir mpirun nun noch sagen müssen, wie viele Prozesse benötigt werden und wo was Binary zu finden ist, bearbeiten wir auch noch die Arguments

Die Anzahl an Prozessen und der Ort der Binary werden eingestellt
Die Anzahl an Prozessen und der Ort der Binary werden eingestellt

ich geben folgende Konfiguration ein

-np 4 Debug/sandbox_mpi

-np 4 bedeutet, wir möchten 4 Prozesse haben und Debug/sandbox_mpi gibt den Ort der Binary an. Mein Projekt heißt sandbox_mpi und ich bin im Debug.

Fast geschafft!

Der letzte Schritt ist noch die Konfiguration von LD_LIBRARY_PATH. DAzu gehen wir in den Reiter "Environment" (wir sind immer noch in der Run-Configuration).

Wir konfigurieren LD_LIBRARY_PATH so, dass libmpi_cxx gefunden wird
Wir konfigurieren LD_LIBRARY_PATH so, dass libmpi_cxx gefunden wird

Klick auf New und wir geben bei LD_LIBRARY_PATH den Wert

/usr/lib64/openmpi/lib

ein. Der Pfad kann abhängig vom System variieren. Sollte die Konfiguration nicht passen, so kann folgendermaßen den Pfad ermittelt werden:

Im Terminal das Modul laden

module load mpi/openmpi-x86_64

LD_LIBRARY_PATH ausgeben:

echo $LD_LIBRARY_PATH

Konfiguration von LD_LIBRARY_PATH auslesen
Konfiguration von LD_LIBRARY_PATH auslesen

3.  Fertig!

Eclipse-PTP-ErrorEX
Nun kann Eclipse ordnungsgemäß ein OpenMPI C++ Programm starten

 [Update]

Aktuell verwende ich Eclipse Luna 4.4.2 auf Ubuntu 14.04 und selbiges Eclipse auf Arch Linux. Bei beiden Distributionen musste ich nicht mehr nachbessern, sondern funzt jetzt out-of-the-Box. Sehr schön!

Flais' legendäres Curry

Gestern Abend war ich bei Flais Master-Feier. Ein gemütlicher Abend mit netten Leuten und viel Spass und Gelächter 🙂
Und Curry.

Flais hat aufgekocht - Und zwar richtig. Es gab einen gewaltigen Topf mit etwa 1, 5kg Fleisch, einer Dose Kokosmilch und dazu Bratkartoffel mit Rosmarin. Da den Mädels das Curry zu scharf war, haben sich die ein-einhalb Kilo Fleisch auf uns drei gestandene Burschen verteilt. Reichhaltig und köstlich!!

Mit freundlicher Genemigung von Flais stelle ich das Rezept online

- 750g Fleisch (Geflügel, bevorzugt Huhn)
- 1/2 Zwiebel
- 2-3 Knoblauchzehen
- Sojasoße
- Paprikapulver
- Currypulver
- Currypaste (mild oder scharf, je nach Präferenz)
- 200ml Sahne (kann auch durch Kokosmilch ersetzt werden)
- 300ml Kokosmilch

Das Fleisch mit 5El Sojasauce und den Knoblauchzehen marinieren, die Zwiebeln würfeln und anbraten.
Das Fleisch dazugeben und mit Salz und Pfeffer würzen, gut anbraten (GUT anbraten!!)
Danach Paprikapulver, Currypulver und 1-2 Teelöffel (edit: bei mir sinds gehäufte Esslöffel...) und die Currypaste dazugeben.
Sahne und Kokosmilch unterrühren und aufkochen. Je nach Geschmack kann mit der Menge der Currypaste, des Currypulvers und dem Paprikapulver variiert werden.
Mit Reis oder Kartoffeln servieren

Sehr, sehr lecker!! 🙂
Mit freundlicher Genemigung von Flais,

Foto folgt noch

Dropbox: Kompletten Ordner wiederherstellen

Heute zeige ich euch, wie eihr einen ganzen gelöschten Ordner in Dropbox wiederherstellen könnt.

Quick guide

  • Dropbox Webinterface (http://www.dropbox.com)
  • Rechts oben "Gelöschte Ordner anzeigen" anklicken
  • Ordner anklicken
  • Wiederherstellen anklicken

Picture guide

Zunächst müsst ihr euch im Webinterface von Dropbox anmelden.
Navigiert nun zum Übergeordneten Ordner.
Danach müsst ihr den Button "Gelöschte Ordner anzeigen" aktivieren

Gelöschte Dateien anzeigen
Gelöschte Dateien anzeigen

Nun erscheinen in Grau alle gelöschten Ordner.

Die gelöschten Ordner und Dateien werden angezeigt
Die gelöschten Ordner und Dateien werden angezeigt

Ein Klick auf den Ordner offenbart nun die Option "Wiederherstellen"

Ordner auswählen und "Wiederherstellen" anklicken
Ordner auswählen und "Wiederherstellen" anklicken

Fertig! 🙂