Intergiciels et C++....

karistote Messages postés 15 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 19 janvier 2012 - 10 mars 2009 à 08:03
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 12 mars 2009 à 11:08
Bonjour !

Je ne suis que débutant en C++, bien qu'ayant programmé un peu de C et beaucoup de PHP :p

Je me tourne aujourd'hui vers ce language avec pour but la création d'un (tout petit) "intergiciel",
à savoir un programme permettant de répartir une charge de calcul sur plusieurs machines
en réseau. (programmes types seti@home & Co...)

J'ai vu que l'échange d'info client / serveur était chose relativement aisée grâce a l'utilisation
des sockets, qu'on pouvait communiquer entre plusieurs processus sur des machines distantes...

De la a pouvoir "émuler" un processeur d'une machine à l'autre, il n'y a qu'un pas... virtuel, cette méthode
si elle est réalisable sans modifications du systeme d'exploitation notables (sous windows...) serait vraiment
le top, mais il existe j'en suis certain, des solutions intermédiaires. Par contre, je n'ai absolument aucune
idée de comment réaliser cela, et toute aide serait fort bienvenue !

Il sagirait donc, en gros, d'utiliser les clients autant que le réseau peut le permettre pour soulager
la charge du cpu sur le serveur... Projet qui me tient beaucoup à coeur :)

Pour ceux que cela intéresse, un projet existe sous le nom de Condor
http://www.cs.wisc.edu/condor/

En post scriptum, le top du top serait de pouvoir utiliser ca sur toutes les plateformes evidemment :)

Merci d'avance :)
Zack

4 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
11 mars 2009 à 13:55
Salut,

La fois où je me suis servi d'une grille de calcul, en fait on envoyait les calculs à réaliser sous forme de programme C. Il était compilé puis exécuté sur une machine choisie en fonction de la charge et de critères plus précis (Mémoire, nombre de processeurs, librairies présentes). En gros tu envoie tes données, ton source, un fichier de config, et tu récupères un fichier de résultat. Pas de parallélisation, sauf si on emploi plusieurs threads et que la machine cible à plusieurs CPU.

La parallélisation de calcul est plutôt technique et rarement automatisable. Comme pour du multithread, il faut que l'être humain choisisse de ce qui est exécuté quand et par qui, et il faut mettre en place des point de synchronisation, des sections critiques...

Emuler un processeur c'est en général une annerie à ne pas faire. Surtout si on veut faire du calcul ou les performances sont importantes.
0
karistote Messages postés 15 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 19 janvier 2012
11 mars 2009 à 23:52
Bonsoir !

C'est très intéressant, mais cela ne répond pas exactement a ce que je cherche...
d'autre part, le terme "émulation" n'était qu'une image quant au résultat souhaité.
 Le but est de pouvoir utiliser nimporte quelle application sur cette grille...
donc que le partage de calcul soit fait a une couche inférieure...
0
karistote Messages postés 15 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 19 janvier 2012
12 mars 2009 à 00:33
Voila exactement ce que je cherche !

http://www.mithral.com/products/

le hic c'est que j'ai pas trouvé de téléchargement :(:(:(

En tous cas apparamment ca a l'air faisable :)
(qu'est-ce qui ne l'est pas :))
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
12 mars 2009 à 11:08
"qu'est-ce qui ne l'est pas"

Beaucoup de choses en fait. Afficher 1 milliard de triangle en 3D 60 fois par seconde en est une, faire une IA un temps soit peu intelligente en ai une autre.

[quote=http://www.mithral.com/products/]
"Can your application be distributed?
"
/quote

C'est pas un logiciel qui peut répondre oui ou non à cette question. C'est bien souvent un être humain.

Avant de penser à distribuer des calculs sur plusieurs PC, je t'invite t'intéresser à la distribution de calculs sur plusieurs CPU d'un même PC via des threads. Le problème est infiniment plus simple mais reste très compliqué. Tout dépend de l'application, du type de calcul... Si tous les calculs se suivent et on besoin des résultats des calculs précédents, aucune parallélisation n'est possible.

La répartition de calculs sur plusieurs PC est une extension de tout ça en fin de compte : En plus de threads sur plusieurs CPU, on a des problématique de dialogue inter-processus par socket (Avec ou sans surcouche quelconque, style RPC) et des problème de performances au niveau des transfert de mémoire (de données quoi...) d'un PC à un autre.

Et concernant la parallélisation des calculs, les processeurs actuels sont
prévus pour faire des calculs en parallèle, via la technologie SSE
ou MMX par exemple. Le principe est d'appliquer le même calcul à
plusieurs opérandes en même temps. Mais cette possibilité est très
rarement utilisée car les calculs ne s'y prêtent pas, ou que les
développeurs en ignore l'existence, ou que les perfs ne sont pas à ce
point critiques. La parallélisation des mêmes calculs est aussi un
principe très utilisé dans les carte graphiques, de
fréquence plus faible que les CPUs principale, mais bien plus efficace
pour faire les calculs sur des vecteurs de flottant de dimension 4. Des
recherches ont été effectuées dans le but d'utiliser les cartes
graphique pour faire des calculs sans rapport avec les graphismes.
0
Rejoignez-nous