C Programm Probleme



  • Hi!
    Ich habe ein Problem dass ich alleine leider nicht lösen kann und hoffe daher auf eure Hilfe.
    Meine Aufgabe besteht darin ein Programm zu schreiben, in dem eingestellt werden kann wie viele Unterprogramme aufgerufen werden. Die Unterprogramme sollen alle die gleiche einfache Rechnung berechnen, allerdings mit unterschiedlichen Werten. Das Ergebnis der einzelnen Unterprogramme soll dann an das Hauptprogramm zurück gegeben werden. Das Hauptprogramm rechnet alle Ergebnisse zusammen.

    Hoffentlich kann mir jemand helfen oder zumindest einen kleinen Lösungshinweis geben.



  • Tipp: Viele Unterprogramme, die alle das gleiche machen, realisiert man besser als nur ein Unterprogramm (und am Rande, die heißen in C "Funktionen").

    Ansonsten hast du im Grunde nur geschrieben, dass dein Programm irgendwas rechnen soll, da kann man nicht viel helfen.



  • Danke erst einmal für die sehr schnelle Antwort. Ich habe mich tatsächlich falsch ausgedrückt. Ich möchte ein Programm schreiben, dass auf mehrere Prozesse aufgeteilt wird und am Ende alle Ergebnisse in dem ersten Prozess zusammen rechnet. Ich versuche MPI dafür zu nutzen und das Programm kann möglichst einfach sein. Aktuell bekomme ich leider immer wieder Fehlermeldungen



  • @andrew93891 sagte in C Programm Probleme:

    Aktuell bekomme ich leider immer wieder Fehlermeldungen

    Schade.



  • Ich hab leider keine Ahnung von MPI.

    Ansonsten allgemeine Tipps: Fehlermeldungen posten (Copy&Paste). Wenn möglich Code posten, und zwar vollständig (also direkt compilierbar) und um irrelevantes reduziert. Spezialitäten wie MPI sollte man schon im Threadtitel erwähnen.


  • Mod

    Letztlich hast du jetzt nicht mehr gesagt, als dass du MPI benutzen möchtest, aber nicht weißt, wie das geht. Was soll man darauf anderes antworten als auf die Anleitung/Tutorials zu MPI zu verweisen?



  • This post is deleted!


  • Ok ich versuche es mal genauer zu beschreiben mit einem kleinen Beispiel aus meinem Code.

    #include <stdio.h>
    #include <stdlib.h>
    #include <mpi.h>//HD
    

    #include<string.h>//HD

    int main(int argc, char** argv) {
    
    int process_count;
    int rank;
    double start_time;
    double end_time;
    double duration;
    
    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &process_count);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    
    int my_range = 20 / process_count;
    int my_start = rank * my_range;
    int my_end = my_start + my_range
    
    printf("If there where 20 tiny tasks i would work on task %d up to task %d\n", 
    my_start, my_end);
    

    Meine Aufgabe soll jetzt sein mit beliebig vielen Prozessen die ranks zu bestimmen, das habe ich geschafft, Allerdings soll ich dann die Ergebnisse zusammenführen auf Prozessor 1 mit der Hilfe von MPI_Send und MPI_receiv. Dabei habe ich noch Probleme und es kommen sehr sehr merkwürdige Ergebnisse raus.


  • Mod

    Da ist nichts, das irgendwie parallel ist. Wie soll man dir helfen können, wenn du nicht deinen Problemcode zeigst? Wie man Fragen richtig stellt.



  • @SeppJ sagte in C Programm Probleme:

    Da ist nichts, das irgendwie parallel ist.

    Doch der Code läuft parallel, das macht er sobald MPI_INIT aufgerufen wurde.

    Das Codeschnipsel ist zu kurz, andrew93891 schreibt nicht, was er denn konkrekt machen will.

    Nachtrag:
    Genauer werden N Kopien des Programms entweder durch den Befehl mpirun oder den Scheduler im Cluster aufgestartet. Dabei werden die Daten für jede Kopie angepasst, so dass es ein Master Programm gibt (mit dem Rank 1) und N-1 Slaves.


Log in to reply