Bord von einem anderen Rechner steuern



  • Hallo!

    ich habe eine Bord(FPGA+Dac), die in einem festen Reschner ist. auf diesem Rechner habe ich schön mein Programm entwicklet und ohne Probleme auf Bord gespielt habe.das Programm besteht aus der Bordeinstellung und Daten,die ich auf der Bord spielen möchte.

    Num möchte ich das Programm von verschieden Rechner an dieser Bord schicken lassen und quasi steuren.

    ich habe mich schön recherchiert wie ich meine Aufgabe lösen kann und bin auf MPI
    gestoßen und habe schön angefangen da einzuarbeiten aber richtig schlau bin ich noch nicht geworden, daher möchte ich fragen,od da Jemand Tipps oder beispiele
    hat wie ich meine Aufgabe lösen kann.

    Danke schon mal im Voraus

    Gruß
    mukt

    PS: mein Programm habe ich mit c++ geschrieben.


  • Mod

    MPI kann nicht auf magische Weise zwischen Rechnern kommunizieren. Das musst du erst aufsetzen. Insbesondere muss ein MPI-Daemon auf dem Board laufen und du musst dem ganzen MPI-System beibringen, wie die Kommunikation untereinander abläuft. Erst danach setzt das eigentliche Konzept von MPI an, welches unter der Annahme, dass ein schlauer Admin alles mal richtig aufgesetzt hat, dem Anwenundgsprogrammierer ermöglicht recht komfortabel verteilte Programme gegen diese MPI-Schnittstelle zu schreiben, die dann in jeder richtig aufgesetzten MPI-Umgebung laufen.

    Deine (leider recht knappe) Beschreibung klingt eher so, als hättest du Problem, überhaupt mit dem Programm auf der Karte zu kommunizieren.

    Habe ich das richtig interpretiert?



  • mit dem Karte kann ich gut komminiziere aber jetzt nur wenn ich das Programm auf dm Rechner, da wo die Karte ist,spiele.

    aber jetzt soll ich mit der karte über andere Rechner kommunizieren aber bin noch auf der Suche wie das realisieren könnte.

    das heißt, die MPI sind dafür nicht geeignet?


  • Mod

    Leider gibst du nicht genügend Informationen, damit man das beurteilen kann. Möglich, dass du eine komplette MPI-Umgebung aufsetzen kannst, die die Karte als einen Knoten enthält. Dann könntest du direkt mit dem Programm auf der Karte von überall her kommunizieren. Das ist aber eher eine MPI-Administationsfrage, ob und wie das geht.
    Oder falls das nicht geht, musst du über ein Programm gehen, welches auf dem Hostrechner läuft und die Kommunikation weiterleitet. Mit diesem Vermittlerprogramm kannst du wiederum mit MPI kommunizieren und das sollte nicht zu schwierig sein.

    Und da ist natürlich die Frage, ob du überhaupt MPI möchtest. Was ich wiederum nicht beantworten kann, weil du nicht sagst, was du überhaupt machen möchtest. MPI ist für verteiltes Rechnen ausgelegt, besonders im Hochleitungsbereich. Wenn du bloß ein paar Callbacks aufrufen möchtest oder allgemein einen Server bedienen möchtest: Ist zwar mit MPI auch möglich, ist aber nicht wirklich dafür gedacht.



  • welche Information möchtest du wissen? wie gesagt, ich habe einfache Bord, mit der möchte ich von verschieden Rechner komunitzieren.

    ich bin noch beim recherchieren ,wie ich das am besten machen kann. und mit MPI habe ich noch nicht was angefanegen.


  • Mod

    Mukt schrieb:

    welche Information möchtest du wissen? wie gesagt, ich habe einfache Bord, mit der möchte ich von verschieden Rechner komunitzieren.

    Aber was willst du kommunizieren? MPI ist für Hochleistungsrechnen ausgelegt. Wenn deine Karte tolle Sachen ausrechnet und du mit anderen Programmen Daten und Ergebnisse austauschen musst, dann ist MPI genau das richtige. Wenn es dir eher darum geht, interaktiv eine Kaffeemaschine zu steuern (im übertragenden Sinne), dann ist das totaler Overkill und du solltest dich vielleicht eher damit beschäftigen, wie man über Techniken die jeder Rechner schon kennt und die man nicht erst großartig aufsetzen muss (z.B. einen TCP Port) einfache Daten austauscht und dir ein einfaches Protokoll für die Kaffeemaschinensteuerung ausdenken, welches du da drauf aufsetzt.

    (P.S.: Notiz am Rande: Es gibt bereits ein fertiges Kaffeemaschinenprotokoll)



  • moin Seppj!

    an meine Karte will ich ihre Einstellung und zum beispiel sinuswerte,die ich schön berechnet habe,senden und von ihr soll ich zB eine Bestätigung wenn alles empfangen hat oder wenn ein Fehler auftretten ist. anscheined was ich verstanden habe von deiner beiträge,dass MPI doch für solche Sache nicht gut geeignet oder habe ich dich falche verstanden?


  • Mod

    Mir ist immer noch nicht klar, wie du dir vorstellst, wie das alles genau laufen soll. Vielleicht mal noch deutlicher:
    Ein MPI-Programm ist wie ein großes Programm, welches auf mehreren Rechnern verteilt läuft. Das ist ein bisschen so wie ein Programm, welches mit vielen Threads gleichzeitig rechnet. Damit das ganze funktioniert, muss auf allen beteiligten Rechnern eine MPI-Umgebung installiert werden und diese muss so konfiguriert werden, dass die Rechner voneinander wissen. Dann wird auf allen Rechnern gleichzeitig dein MPI-Programm gestartet. Die einzelnen Instanzen deines Programms auf den verschiedenen Rechnern können dann über das MPI-Interface kommunizieren, sie sehen quasi nur einen einzigen großen Verbundrechner. Und das ist der Zweck von MPI. Und möglicherweise ist es auch das was du willst.

    Tendenziell klingt deine Beschreibung aber eher so, als möchtest du eine Client-Server Anwendung schreiben, bei der du dich von irgendeinem Rechner zu beliebiger Zeit mit der Karte verbinden kannst und mit ihr ein bisschen kommunizierst. Ungefähr so als würdest du dich mit einem Webserver verbinden um von diesem eine Webseite anzufordern die du dann lesen kannst. In diesem Fall wäre MPI sicherlich nicht das bestgeeignetste Mittel.



  • ich habe dich gerade vestanden wie gesagt bin noch nicht in MPI_Bereich richtig vertraut.

    zu meiner Aufgabe versuche es nochmal zuschildern:
    die Bord(FPGA+Dac) ist in einem festen Reschner. auf diesem Rechner habe ich schön mein C++Programm entwicklet und ohne Probleme auf Bord gespielt habe.
    Das Programm besteht aus der Bordeinstellung und Sinuswerte.
    Nun möchte ich dieses Programm von anderem Rechner an dieser Bord schicken lassen
    und von ihr soll ich zB eine Bestätigung, wenn alles empfangen hat oder wenn ein Fehler auftretten ist,erhalten.

    hoffe dass du jetzt meine Aufgabestellung verstanden hast.


  • Mod

    Wenn ich das richtig verstehe, dient der entfernte Rechner bloß als eine Art Fernsteuerung. MPI ist sicherlich nicht das was du suchst.

    Und wenn ich mal einen Schuss in's Blaue wagen darf: Kann's sein, dass du einfach nur eine Remote-Shell machen möchtest?



  • SeppJ schrieb:

    Wenn ich das richtig verstehe, dient der entfernte Rechner bloß als eine Art Fernsteuerung. MPI ist sicherlich nicht das was du suchst.

    Und wenn ich mal einen Schuss in's Blaue wagen darf: Kann's sein, dass du einfach nur eine Remote-Shell machen möchtest?

    nicht ganz aber in dieser Richtung aber anders ausgedrückt wie kann der entfernte Rechner direkt mit der Karte kummonizieren um das Programm drauf auszuführen?


  • Mod

    Mukt schrieb:

    nicht ganz aber in dieser Richtung aber anders ausgedrückt wie kann der entfernte Rechner direkt mit der Karte kummonizieren um das Programm drauf auszuführen?

    Ich würde mich an deiner Stelle mit dem Rechner der die Karte drin hat verbinden und dort das Programm benutzen, welches mit der Karte kommuniziert.



  • das heißt muss erst mal das Programm an den Rechner, in dem die Karte drin ist,zuschicken und von da das Programm ausführen. das eingentlich was ich möchte aber möchte ich eine nachrichten von ihm kriege wenn irgend was auftaucht?

    wie kann ich das am besten machen?


  • Mod

    Mukt schrieb:

    das heißt muss erst mal das Programm an den Rechner, in dem die Karte drin ist,zuschicken und von da das Programm ausführen. das eingentlich was ich möchte aber möchte ich eine nachrichten von ihm kriege wenn irgend was auftaucht?

    Ehrlich gesagt habe ich noch immer keine Ahnung wie du dir das genau vorstellst. Vielleicht empfehle ich auch gerade genau das falsche und MPI, auf das du mit selbstständiger Suche gekommen bist, wäre doch das richtige. Ich kann dir ohne vernünftige Beschreibung einfach keine Antwort geben, die ich nicht schon gegeben hätte.



  • @Mukt

    Ich habe zwar keine Ahnung von der Materie, aber mal ne Frage:

    Welches Programm nutzt du, das dein C++ Programm auf das Board aufspielt?

    Ich nenne es mal "Flashprogramm". Mit diesem Programm flasht du dein C++ Programm auf das Board, richtig?

    Und du willst nun von Rechner B das Flashprogramm bedienen, das auf Rechner A läuft?

    Wie wärs mit Windows Remote Desktop?


Anmelden zum Antworten