Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Environnements de développement > MATLAB

MATLAB Forum d'entraide sur MATLAB. Avant de poster -> FAQ MATLAB

Réponse
 
Outils de la discussion
Vieux 26/10/2008, 21h22   #16 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Citation:
Envoyé par tug83 Voir le message
beh le plus simple c'est de tester! Tu télécharges une trial de 15 jours de la PCT et [...]
Merci tug83 ! Je n'avais pas pensé qu'il existait des trials. Ca peut me donner une idée en effet ! Déjà sur la partie du code qui fait l'inversion, qu'on a extraite pour pouvoir la paralléliser, il faut juste que je vois comment utiliser la PCT mais je pourrai essayer en effet.

Citation:
Envoyé par tug83 Voir le message
Ensuite vu que la PCT te permet de simuler un environnement de 4 workers en local, il ne faut pas s'attendre à une augmentation de la rapidité du temps de calcul. Rapelle toi bien que c'est juste un moyen de voir si tu peux distribuer ou paralléliser ton code en local. Le seul moyen pour vérifier si ton code va s'accélerer c'est d'acheter/essayer par la suite 8 , 16, 32... MDCS.
le fait que les 4 workers soient simulés => faut pas espérer de gain, OK ç je suis tout à fait d'accord. Par contre, les MDCS... c'est pour faire du calcul distribué sur un cluster de machines c'est ça ?
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/10/2008, 21h32   #17 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Citation:
Envoyé par ottog1s Voir le message
Je tiens aussi à rappeler que je ne suis pas l'initiateur de ce post, je ne veux pas non plus dévier trop du sujet initial, surtout si on n'a pas répondu à sa question mais mes intérets sont proches de siens...
Il n'y a aucun soucis ! Ne vous inquiétez pas si ça dévie un peu ça ne me dérange pas du tout, ça peut me donner des idées ou m'apprendre des trucs !

Merci à tous ceux qui ont répondu jusqu'à maintenant !
Jean-Marc, je n'oublie pas ta question, il faut que j'en discute avec l'auteur de l'algo pour savoir si l'inversion est inévitable...
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/10/2008, 21h46   #18 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Citation:
Envoyé par orl132 Voir le message
Merci tug83 ! Je n'avais pas pensé qu'il existait des trials. Ca peut me donner une idée en effet ! Déjà sur la partie du code qui fait l'inversion, qu'on a extraite pour pouvoir la paralléliser, il faut juste que je vois comment utiliser la PCT mais je pourrai essayer en effet.
Due to a temporary server problem, the product download application is unavailable. Please try again. If you continue to receive this error message, please contact us.

We apologize for the inconvenience
.

C'est bien ma veine... J'espère que c'est parce qu'on est dimanche soir... je réessayerai demain.
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 08h49   #19 (permalink)
Modérateur
 
Avatar de tug83
 
Date d'inscription: juin 2006
Localisation: dans le lubéron
Âge: 29
Messages: 1 375
Par défaut

Citation:
Envoyé par orl132 Voir le message
Par contre, les MDCS... c'est pour faire du calcul distribué sur un cluster de machines c'est ça ?
en effet du calcul distribué ou parallèle. MDCS signifie MATLAB Distributed Computing Server (anciennement appelé MDCE ,E pour engine).
A lire
__________________
MATLAB 7.8 (R2009a Prerelease)
Linux 64-bits
tug83 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 13h00   #20 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Citation:
Envoyé par tug83 Voir le message
en effet du calcul distribué ou parallèle. MDCS signifie MATLAB Distributed Computing Server (anciennement appelé MDCE ,E pour engine).
A lire

Heu du coup... pourquoi ne pas utiliser la DCT ??? Parce que là si on commence à répartir sur plusieurs machines, autant faire vraiment du calcul distribué et la DCT doit être faite pour ça non ?
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 13h08   #21 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Citation:
Envoyé par FR119492 Voir le message
Salut!

A part ça, je n'ai toujours pas reçu de réponse à ma question: est-il vraiment nécessaire d'inverser une matrice?

Jean-Marc Blanc
L'inversion est inévitable.
En fait la résolution d'un problème inverse est pratiquement systématique... soit l'inversion est simulée (calcul direct de la solution pour des modèles simples : algo de Lévinson par exemple) soit elle est effective... mon cas (mais le modèle est nettement plus complexe).
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 13h16   #22 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Voici mes tests du multiprocessing implicite (option "enable multithreading" dans les préférences) :

Lorsque je parallélise une opération élémentaire, C=A*B (A et B matrices de 3000x3000) j'obtiens les résultats suivants :

1 thread : 6,428 s
8 threads : 1,228 s

Lorsque j'exécute mon programme avec puis sans l'option multithreading, il n'y a aucun écart, aucun gain de temps alors qu'il utilise les 8 coeurs de processeur à 100% dans un cas et 1 seul dans l'autre.

Il y a donc un espoir de pouvoir optimiser tout ça... (?)
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 13h32   #23 (permalink)
Modérateur
 
Avatar de tug83
 
Date d'inscription: juin 2006
Localisation: dans le lubéron
Âge: 29
Messages: 1 375
Par défaut

Citation:
Envoyé par orl132 Voir le message
Heu du coup... pourquoi ne pas utiliser la DCT ??? Parce que là si on commence à répartir sur plusieurs machines, autant faire vraiment du calcul distribué et la DCT doit être faite pour ça non ?
Regarde la doc pour la terminologie.
La PCT est ce qui est installé sur le poste de développement . Avant cette toolbox s'appelait DCT. Elle sert donc à programmer des codes dans l'environnement MATLAB.
Ensuite sur ton cluster tu installes les MDCS. Par exemple 32 MDCS sur 32 noeuds va te permettre de faire travailler 32 workers en simultané. C'est comme si tu lançais 32 sessions MATLAB en m^me temps.
__________________
MATLAB 7.8 (R2009a Prerelease)
Linux 64-bits
tug83 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 14h13   #24 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Ah ok nikel, au temps pour moi, je pensais que la DCT et la PCT étaient deux produits distincts.

Hmmm... si je résume avec ce qui a été dit précédemment, la PCT va me permettre dans un premier temps de tester la parallélisation, mais si je veux observer des gains de performances, je suis obligé de déployer 8, 16, 32... workers ?
Ce qui signifie donc 8, 16, 32... machines ? ou coeurs de processeurs ?

Est-ce que les 8 coeurs de processeur de la machine actuelle peuvent être considérés comme un cluster de 8 workers ?

Par ailleurs je lis Parallel Computing Toolbox provides the ability to use up to four local workers on a multicore or multiprocessor computer using a single toolbox license. => pas plus de 4 workers locaux ?

Dernière modification par orl132 ; 27/10/2008 à 14h42
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 15h00   #25 (permalink)
Modérateur
 
Avatar de tug83
 
Date d'inscription: juin 2006
Localisation: dans le lubéron
Âge: 29
Messages: 1 375
Par défaut

Citation:
Envoyé par orl132 Voir le message
Ah ok nikel, au temps pour moi, je pensais que la DCT et la PCT étaient deux produits distincts.

Hmmm... si je résume avec ce qui a été dit précédemment, la PCT va me permettre dans un premier temps de tester la parallélisation, mais si je veux observer des gains de performances, je suis obligé de déployer 8, 16, 32... workers ?
Ce qui signifie donc 8, 16, 32... machines ? ou coeurs de processeurs ?

Est-ce que les 8 coeurs de processeur de la machine actuelle peuvent être considérés comme un cluster de 8 workers ?

Par ailleurs je lis Parallel Computing Toolbox provides the ability to use up to four local workers on a multicore or multiprocessor computer using a single toolbox license. => pas plus de 4 workers locaux ?
Avant la DCt ne faisait pas de parallèlisme mais comme maintennat c'est le cas, pour des raisons évidentes de marketing, le nom a été changé pour mettre en avant le parallélisme.
Donc en effet dans un premier temps tu évalues la PCT pour voir si tu peux paralléliser ton code. Ensuite tu peux aussi évaluer 8 /16 /32 ..MDCS en contactant un commercial de The MathWorks.
1 worker = 1 CPU
Si MATLAB est multithreaded depuis quelques versions, la PCT ne l'est pas. Le but étant en effet d'utiliser toutes les CPU comme workers (c'est expliqué aussi dans la doc). Donc si tu as 2 CPU, tu as 2 workers disponibles.
Pour répondre à ta dernière question, en effet pas plus de 4 workers en local même si tu as 16 noeuds.
__________________
MATLAB 7.8 (R2009a Prerelease)
Linux 64-bits
tug83 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 15h19   #26 (permalink)
Modérateur
 
Avatar de tug83
 
Date d'inscription: juin 2006
Localisation: dans le lubéron
Âge: 29
Messages: 1 375
Par défaut

Citation:
Envoyé par tug83 Voir le message
Pour répondre à ta dernière question, en effet pas plus de 4 workers en local même si tu as 16 noeuds.
ce qui se comprend sinon la MDCS n'aurait plus lieu d'être (money is money)
__________________
MATLAB 7.8 (R2009a Prerelease)
Linux 64-bits
tug83 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 15h50   #27 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Citation:
Envoyé par tug83 Voir le message
Pour répondre à ta dernière question, en effet pas plus de 4 workers en local même si tu as 16 noeuds.
Donc je n'exploiterai pas 8 fois mieux mes coeurs de processeurs, mais 4 fois ?
Les MDCS peuvent-ils être utilisés sur une même machine pour y remédier o_O (c'était plutôt ça ma question...) ?



Citation:
Envoyé par tug83 Voir le message
Ensuite tu peux aussi évaluer 8 /16 /32 ..MDCS en contactant un commercial de The MathWorks.
The Mathworks doit en effet me donner des nouvelles par rapport à la parallélisation de cette fonction "inverse".
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/10/2008, 16h03   #28 (permalink)
Modérateur
 
Avatar de tug83
 
Date d'inscription: juin 2006
Localisation: dans le lubéron
Âge: 29
Messages: 1 375
Par défaut

Citation:
Envoyé par orl132 Voir le message
Donc je n'exploiterai pas 8 fois mieux mes coeurs de processeurs, mais 4 fois ?
Les MDCS peuvent-ils être utilisés sur une même machine pour y remédier o_O (c'était plutôt ça ma question...) ?





The Mathworks doit en effet me donner des nouvelles par rapport à la parallélisation de cette fonction "inverse".
oui tu peux installer tes MDCS où tu veux sur une voire 100 machines ...du moment que les workers arrivent à se pinger entre eux. Ensuite c'est juste une installation réseau avec le Flexlm que tu installes sur un noeud maitre.
Tu nous diras ce que TMW t'as répondu, ça m'intéresse. Merci.
__________________
MATLAB 7.8 (R2009a Prerelease)
Linux 64-bits
tug83 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 31/10/2008, 02h33   #29 (permalink)
Membre actif
 
Date d'inscription: août 2007
Messages: 196
Par défaut

Citation:
Envoyé par orl132 Voir le message
Très bien, merci pour ta réponse !
Les gains de temps obtenus grâce aux threads C sont conservés lorsque le code C est appelé depuis Matlab alors ?
oui
Citation:
Envoyé par orl132 Voir le message
]
D'autre part, le code C étant compilé (en .mexa64 par exemple) je devrais gagner en performances par rapport à l'interprété de Matlab, non ? (D'après Mathworks, non, car Matlab est plus performant que le C...)

Si d'autres parmi vous avez expérimenté ces solutions comme paradize3, faites moi part de vos conseils SVP merci !!!
L'experience montre que pour le code qui a grand nombre d'iterations (non 'vectorisable'), ou qui a besoin de structures de donnees mal adaptees a matlab il est benefique de porter des portions de code en C ou autre langague compile (il n'est pas rare de voir 10x plus rapide, etc.). Ceci dit, s'il s'agit simplement d'inverser une tres grande matrice, ce n'est tres probablement pas la solution adaptee (a moins que tu disposes d'une libraries specialement adaptee au type de matrice que tu veux inverser, etc.., mais je doute!).

Salutations,

Greg
paradize3 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 31/10/2008, 09h54   #30 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2008
Messages: 24
Par défaut

Merci paradize3 pour tes infos !

Je vous tiendrai au courant des essais et des résultats qu'on aura !
orl132 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MATLABFAQ MATLABTUTORIELS MATLABLIVRES MATLAB

Réponse

Précédent   Forum des développeurs > Environnements de développement > MATLAB



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide