Salut à tous,
J'ai posté récement sur le forum pour avoir un ptit coup de main sur l'optimisation de mon prog de fitting.
Depuis il marche très bien, un peu plus vite mais je voulais gagner du temps en multithreadant. Ma version étudiant ne me permet pas d'avoir accès à ces fonctions, mais l'ordi de mon patron a une version de matlab intégrale sur quadcore.
Du coup j'ai essayé de lancer le prog en remplacant une de mes boucles FOR par PARFOR mais il me retourne en permence une erreur de prog que je n'arrive pas à résoudre.
Voici le code :
Voici le message d'erreur :
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
37
38
39
40
41
42
43
44
45
46
47
48
49 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Algorithme d'extraction compartimentale par fitting % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear all;close all;clc;% Vide toute la mÈmoire pour plus de claretÈ tic;% Initialise le timer slice = 4; % Coupe anatomique analyser %% Place les images en mÈmoire dans une matrice image diffIm = zeros(128,128,48) ; for i =1:48 n = i*8 - slice; diffIm(:,:,i) = dicomread(sprintf('Diff%03d',n)); end % PrÈpare les 6 images paramÈtriques res_image=zeros(128,128,6); % DÈclare les valeurs de b XVAL = 0 : 100: 4700 ; XVAL = XVAL(:); % Compteur d'itÈrations h = waitbar(0,'Calcul du fitting en cours...'); steps = 8910; step = 1; matlabpool close force local matlabpool(4) % Pour Chaque pixel parfor x= 10:119 for y= 24:104 %CrÈe un tableau contenant les diffÈrentes valeur du signal en (x,y) YVAL = double(diffIm(x,y,:)); % Fit les donnÈes contenues dans le tableau experimentalValue paramValue = createFit(XVAL,YVAL); % InsËre les valeurs des paramËtres retournÈs dans une matrice for k=1:6 res_image(x,y,k) = paramValue(k); end % Affiche le % d'itÈrations de la double boucle dÈja effectuÈ step = step+1; waitbar(step / steps) end end close(h) toc
Si l'un de vous à une idée je suis preneur
Sending a stop signal to all the labs ... stopped.
Destroying 1 pre-existing parallel job(s) created by matlabpool.
Starting matlabpool using the 'local' configuration ... connected to 4 labs.
??? Error: The variable res_image in a parfor cannot be classified.
See Parallel for Loops in MATLAB, "Overview".
Error in ==> Compex at 29
parfor x= 10:119
A bientôt
Partager