Mettre en commun puissance de calcul GPU/CPU

a marqué ce sujet comme résolu.

Bonjour tout le monde,

Tout d’abord je m’excuse si ce n’est pas le bon endroit.

Avec un ami on a besoin de mettre en commun la puissance de calcul de nos deux pc pour accélérer la vitesse de calcul de notre algorithme (a peu près 3h de calcul pour un i5 2.3ghz double coeur) On aimerait savoir si c’est possible de mettre en commun la puissance de calcul de nos deux pc avec un pc qui sera master, en sachant que les composants et os de nos pc sont différents et que l’on souhaiterais faire ca en wan ?

Merci

ps : Si aucun projet OpenSource existe on aimerait faire ce programme en python.

Je connais un outil libre pour ça, c’est mon oncle qui le code. Ça s’appelle JPPF, c’est du java. Pas sûr que vous réussissiez à l’utiliser cependant, c’est quand même quelque chose d’assez complexe. Pas sûr non plus que ce soit utile, 3h c’est pas très long. As-tu commencé par chercher à optimiser ton programme ?

+0 -0

Salut,

en sachant que les composants et os de nos pc sont différents et que l’on souhaiterais faire ca en wan ?

Ça risque d’être casse-gueule et pas forcément viable en terme de performances.

Déjà, est-ce que tu sais si le programme scale correctement si tu parallélises son exécution ? Est-ce que tu as beaucoup de communication entre les threads ? (Si oui, la communication WAN étant lente, ça peut suffire à plomber les perfs). Si le programme se parallélise massivement, tu peux avoir intérêt à le faire tourner sur un seul GPU plutôt que sur un seul CPU ou même deux CPU…

ps : Si aucun projet OpenSource existe on aimerait faire ce programme en python.

Python peut être très lent simplement parce qu’il est mal utilisé. Est-ce que le programme à exécuter en parallèle est codé en Python ? Si oui, comment est faite la parallélisation ? Et c’est quoi comme genre de programme ? Quels paquets utilisez vous ? Il y a sûrement beaucoup à faire sur le programme lui-même avant d’aller s’amuser à faire de la parallélisation en WAN. Bref, j’ai un gros doute sur le fait que la stratégie de parallélisation que tu as en tête soit la bonne, mais pour t’aider correctement il faut que tu nous en dises plus sur ce programme.

+4 -0

Si votre algorithme est parallelisable, c’est possible de distribuer « facilement » le calcul. Mais dans ce cas il y a plus simple : utiliser le GPU avec OpenCL (GPU AMD ou chipset graphique intégré au Core i5) ou CUDA (GPU externe nvidia) comme adri1 le suggère. C’est pas facile honnêtement, mais certainement plus qu’une distribution correcte entre deux machines hétérogènes.

J’aimerais nuancer ton propos @sgble, la parallélisation massive sur GPU n’est valable que si la parallélisation scale très bien avec la taille du problème et que la taille du problème dans la direction parallélisable est grande (puisque qu’un GPU, c’est des centaines voire des milliers de cœurs !). Dès que tu commences à avoir besoin de communications entre les threads, ou bien que le calcul ne se parallélise que modérément, ou encore qu’il est petit, tu peut être limité à ne devoir utiliser qu’une dizaine de cœurs voire moins parce qu’après ça se casse la gueule. Tu peux même avoir des parties du problème qui peuvent se paralléliser sur des échelles différentes. Ça devient vite compliqué, mais c’est parfois la seule solution pour grignoter du temps de calcul.

J’insiste là-dessus pour dire qu’il est vraiment crucial d’en savoir plus sur le programme en question, la parallélisation n’est pas un truc qui s’improvise à l’arrache™ en se disant "c’est lent, je vais balancer plus de cœurs".

+1 -0

Je pense à autre chose : tu ne nous dis pas comment cet algorithme est implémenté aujourd’hui. Si c’est du Python (tu l’as évoqué donc c’est peut-être ça) avec beaucoup de calcul dans des listes, alors peut-être qu’une simple utilisation de NumPy te donnera un boost significatif. Peut-être aussi que ton algorithme peut être optimisé de façon théorique avant d’être optimisé de façon pratique (passer d’un algo O(f(n))O(f(n)) à O(g(n))O(g(n)) plus efficace par exemple). En fait, il nous faut vraiment plus d’infos sur ton problème.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte