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

MATLAB Discussion :

programmation OpenMP et MPI


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut programmation OpenMP et MPI
    Bonjour,
    s'il vous plait je voudrai savoir comment insérer des instructions openmp et mpi dans un programme matlab dans l'optique de faire la programmation parallèle ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    En utilisant des fichiers MEX.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut programmation openmp et mpi sur matlab
    Bonjour, je pense que je n'ai pas été peut être clair sur la description de mon problème. Etant donné un code matlab,je veux insérer des instructions open mp d'une part et d'autre part mpi tous ceci dans deux fichiers différents

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut programmation openmp et mpi sur matlab
    bonjour , en fait voici le bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function      % Programme principal
    disp('Application graphique "modale" (à piloter depuis fenetre graphique)')
    global dlg
    dlg = figure('name','Modelix', 'menubar','none', 'numbertitle','off');
    screen_size = get(0,'screensize') ;               
    screen_center = screen_size(3:4)/2 ;            
     dialog_size = [700 510] ;                         
     dialog_pos = screen_center - dialog_size/2 ;     
     set(dlg, 'position',[dialog_pos dialog_size]);
    uiwait(dlg);
    end

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Pourrais-tu nous expliquer le contexte de ton projet et ce que tu cherches à faire précisément parce que ce n'est pas clair du tout.

    Quel rapport entre OpenMP/MPI, écrire dans un fichier et le code qui génère une interface graphique ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut programmation openmp et mpi sur matlab
    Bonjour,
    En fait ce n'est pas un projet en tant que telle , c'est dans le cadre de mes travaux de recherches que je sollicite paralléliser un code sur matlab en utilisant openmp d'une part et mpi d'autre part.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut programmation openmp et mpi sur matlab
    bonjour ,
    s'il faut utiliser les fonctions MEX comment faire pour intégrer ces fonctions dans mon code matlab? d'une part et d'autre part comment insérer des instructions openmp et mpi directement dans un mon code source directement dans la fonction ci-dessus

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Voila comment je procédais il y a quelques années. Je pense que ces explications sont toujours valides aujourd'hui.

    J'écrivais d'abord un fichier MEX en C. Par exemple le fichier test_openmp_helloworld.c :
    Code C : 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
    #include <omp.h>
    #include <mex.h>
     
    void mexFunction(int nlhs, mxArray *plhs[],
            int nrhs, const mxArray *prhs[])
     
    {
     
    int nthreads, tid;
     
    /* Fork a team of threads with each thread having a private tid variable */
    #pragma omp parallel private(tid)
      {
     
      /* Obtain and print thread id */
      tid = omp_get_thread_num();
      mexPrintf("Hello World from thread = %d\n", tid);
     
      /* Only master thread does this */
      if (tid == 0) 
        {
        nthreads = omp_get_num_threads();
        mexPrintf("Number of threads = %d\n", nthreads);
        }
     
      }  /* All threads join master thread and terminate */
     
    }
    Ensuite j'utilisais le Gcc fourni avec TDM-GCC sous Windows (vérifier que la bibliothèque OpenMP a bien été sélectionnée à l'installation).

    J'avais écrit un petit fichier BAT nommé mexgcc.bat pour simplifier la compilation :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @echo off
     
    set GCCPATH=C:/TDM64/bin/
    set CC=x86_64-w64-mingw32-gcc
     
    set MATLABPATH=C:/MATLAB/R2015b/
    set arch=64
     
    if exist %1.mexw%arch% del %1.mexw%arch%
     
    %GCCPATH%%CC% -m%arch% -fopenmp -shared -I"%MATLABPATH%extern/include" -DMATLAB_MEX_FILE -o %1.mexw%arch% -Wl,--export-all-symbols %1.c -L"%MATLABPATH%bin/win%arch%" -lmex -lmx -leng -lmat

    Je compilais le MEX directement depuis le Command Window de MATLAB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !mexgcc.bat test_mex_openmp
    J'obtenais un fichier nommé test_openmp_helloworld.mexw64 que je pouvais directement appeler depuis un code MATLAB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >> test_openmp_helloworld
    Hello World from thread = 0
    Number of threads = 4
    Hello World from thread = 1
    Hello World from thread = 2
    Hello World from thread = 3
    Il existe peut être des outils plus pratiques maintenant…

    Edit

    Je viens de trouver une ancienne discussion avec des explications similaires de ma part : Problème avec le linker de MinGW (TDM-GCC-64) et OpenMP sur Windows
    Comme quoi…

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 7
    Par défaut programmation openmp et mpi sur matlab
    Bonjour,
    pour être plus clair, j'ai un code matlab ,j'ai voulais générer directement un fichier MEX en utilisant MATLAB Coder j'ai des difficultés sur le fait certaines fonctions et variables que j'utilisais dans mon code source n'arrivaient pas être générées dans mon fichier Mex. Parti du principe selon lequel pour insérer des instructions C(openmp et mpi ) en matlab il faudrait au préalable le transformer en fichiers MEX.

Discussions similaires

  1. programmation avec open MPI
    Par matinz dans le forum C
    Réponses: 1
    Dernier message: 06/07/2009, 11h27
  2. programmation parallèle open mpi
    Par koukiya dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 19/06/2009, 15h34
  3. Programmer une interface mpi
    Par medchok dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/04/2009, 15h43
  4. portabilité programme OPENMP
    Par couturier dans le forum Visual Studio
    Réponses: 8
    Dernier message: 02/12/2008, 09h49
  5. programmation parallèle avec MPI
    Par salseropom dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 03/08/2006, 09h45

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