IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation parallèle, calcul scientifique et de haute performance (HPC) Discussion :

Parallélisation d'une simulation de Monte Carlo


Sujet :

Programmation parallèle, calcul scientifique et de haute performance (HPC)

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Parallélisation d'une simulation de Monte Carlo
    Bonjour,

    Je souhaite paralléliser un programme Monte Carlo.
    J'ai un fichier MC.c qui contient le code Monte Carlo.
    Je suis sous windows avec octave installé directement sous windows et fonctionnant via MinGW et codeblock pour faire du C.

    J'ai tenté deux méthodes:

    1) Dans Octave, je lance MC.exe (la compilation de MC.c) en lui envoyant des paramètres.
    Je pensais utiliser parcellfun, mais la fonction ne marche pas à cause des "pipe" selon l'erreur que je reçois. J'ai essayé pour un simple sinus pour voir.

    2) J'utilise openMP. Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <math.h>
    #include <omp.h>
     
     
     
     
     
     
    int main(int argc, char **argv)
    {
     
        int N =10,num; // Nombre de simulations parallèles
        char root[] = "..\\Config_prog\\data\\";
        char main[] = "save_4x4x4_";
        char simulation[128], load[128], launch[128];
        double T_ini=1, T_fin = 10, dT = 1, ra, T;
        FILE* FID=NULL;
        sprintf(load, "..\\Config_prog\\config_4x4x4c.txt");
        sprintf(launch, "cube3D.exe"); // programme <=> MC.exe
     
        #pragma omp parallel
        #pragma omp for
     
        for (num=0;num<N;num++)
        {
            sprintf(simulation, "%s%s%d_T",root, main, num);
            FID = popen(launch, "w");
            ra = num+1;
            fprintf(FID, "%f %f %f %s %s %f", T_ini, dT, T_fin, simulation, load, ra);
            pclose(FID);
        }
        return 0;
    }
    Là, je remarque que la vitesse ne change pas, mais que la boucle s'exécute en parallèle.


    Dans tous les cas, quand je regarde les performances dans le gestionnaire des tâches, je vois que tous les processeurs fonctionnent (4 processeurs mono thread), le tout à 25-30%.

    Avez-vous une idée pour que je puisse gagner du temps en parallélisant (ou autrement)?

    Merci

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Sors tes accès critiques de la parallélisation.
    Je vois notamment que tu passes à ton traitement parallèle un chemin de fichier de configuration, si tu l'ouvres à chaque fois en début de traitement (et donc N fois) c'est moins bien que de l'ouvrir une seule fois.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

Discussions similaires

  1. [XL-2003] calcul seuil rentabilité avec algorithme (simulation de Monte Carlo)
    Par Les Bats dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 15h39
  2. Algorithme vba avec simulation de Monté Carlo
    Par Les Bats dans le forum Général VBA
    Réponses: 3
    Dernier message: 07/03/2011, 17h01
  3. simulation vba monte carlo
    Par geofnich dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/09/2010, 16h53
  4. Simulation de Monte Carlo par Cognos v7
    Par waelT dans le forum Cognos
    Réponses: 1
    Dernier message: 17/02/2008, 12h37
  5. [VBA-E]Pb Simulation de Monté Carlo avec stockage d'information
    Par geminium dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/04/2007, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo