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 ?
Version imprimable
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 ?
En utilisant des fichiers MEX.
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
bonjour , en fait voici le bout de code
Code:
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
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 ?
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.
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
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 :
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).Code:
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 */ }
J'avais écrit un petit fichier BAT nommé mexgcc.bat pour simplifier la compilation :
Code:
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 :
J'obtenais un fichier nommé test_openmp_helloworld.mexw64 que je pouvais directement appeler depuis un code MATLAB :Code:!mexgcc.bat test_mex_openmp
Il existe peut être des outils plus pratiques maintenant…Code:
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
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…
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.