Est-il possible de combiner la puissance de traitement de 2 ordinateurs?

14

Voici quelques questions, je souhaite que vous puissiez m'éclairer.

  1. Est-il possible de combiner la puissance de traitement de 2 ordinateurs?
  2. Comment fait-on ça?
Ancheta Wern
la source
7
1) Certainement. 2) Avec une énorme difficulté.
Daniel R Hicks

Réponses:

11

Pas de manière transparente lorsqu'un programme en cours d'exécution peut en quelque sorte utiliser la deuxième machine pour exécuter du code, car ils sont logiquement séparés sans aucun moyen pour le processeur de communiquer ou d'accéder à la mémoire de l'autre.

Cela ne signifie pas que vous ne pouvez pas combiner la puissance de traitement:

  1. Des logiciels spécifiques peuvent avoir des composants qui peuvent s'exécuter sur d'autres machines, par exemple le repliement des protéines, SETI @ home. Celles-ci ont tendance à être spécialisées, c'est-à-dire que vous ne pouvez pas démarrer Excel et lui dire d'utiliser un autre ordinateur pour le calcul.
  2. Si vous effectuez des tâches gourmandes en processeur, vous pouvez utiliser la machine secondaire pour les exécuter, par exemple encoder / recoder un flux vidéo.

Si vous cherchez à exploiter l'ordinateur secondaire de quelque manière que ce soit, il est essentiel de pouvoir le contrôler à distance. Deux façons de le faire sont via une sorte d'accès à distance (RDP, VNC) ou alternativement quelque chose comme synergy +.

mindless.panda
la source
1
Disons par exemple que j'ai 4 Go de RAM sur mon ordinateur portable et 4 Go sur mon PC, un RDP me permettra-t-il d'exécuter virtuellement un programme avec 8 Go de RAM?
TGamer
5

Une de mes lignes les plus utilisées - Oui et Non!

Oui, c'est possible - pour certaines applications conçues pour fonctionner de cette façon. (Communément appelé cluster - Pour en savoir plus, cliquez ici )

Non, il n'est pas possible (du moins pour autant que je sache) de retirer deux ordinateurs standard, de les "lier" ensemble et d'obtenir la mémoire, la puissance de traitement et tout le reste.

William Hilsum
la source
1
@ ~ charlatan oui, et j'ai dit pour certaines applications ... Comme la question était étiquetée Windows-7, j'ai supposé qu'il voulait dire un ordinateur de tous les jours avec n'importe quel programme standard .... Quoi qu'il en soit - les clusters Beowulf ne nécessitent pas applications spécialement écrites? ... Je ne suis pas un expert, je n'en ai jamais utilisé, mais j'ai lu rapidement beowulf.org/overview/index.html (surtout les deux derniers paragraphes)
William Hilsum
désolé, j'ai supprimé mon commentaire précédent après avoir relu et j'ai remarqué que vous étiez déjà lié au concept de clustering. Les beowulfs sont conçus autour de composants standard et constituent un moyen de «lier» plusieurs systèmes ensemble, mais vous avez raison de dire qu'ils ne fonctionnent pas vraiment pour des programmes qui ne sont pas spécialement conçus pour eux.
Quack Quichote
4

C'est très possible! Mais à en juger par la simplicité de votre question, je suppose que vous souhaitez simplement exécuter un programme qui rendra par magie votre ordinateur deux fois plus rapide, ce qui n'est pas possible.

Vous devez comprendre que lorsqu'un programme s'exécute, il conserve son état en incitant le processeur à déplacer la mémoire entre les registres du disque dur, de la RAM et du processeur, ainsi que les adresses sur divers composants (comme les cartes vidéo ou les cartes réseau). Le problème avec l'utilisation d'un processeur d'un autre ordinateur pour vous aider est qu'il a besoin d'accéder à la même mémoire. Et le maintien d'une image miroir de la mémoire de votre ordinateur sur un autre ordinateur nécessite tellement de temps qu'il enlève facilement l'objectif d'essayer d'ajouter un autre ordinateur pour gagner en performances :)

Mais le type de choses qui peuvent être réparties entre plusieurs ordinateurs sont le rendu d'image ou certains calculs mathématiques qui peuvent fonctionner indépendamment.

Nippysaurus
la source
3

Si ce que vous recherchez est une méthode pour combiner la puissance de traitement de deux PC en un, la façon la plus "simple" de le faire est de les configurer tous les deux comme hôtes de machines virtuelles en utilisant un logiciel comme VMWare ESXi (soyez prévenu, cela nécessitera la périphérique compatible) et créer un groupe de ressources ou un cluster et créer une machine virtuelle qui utilise les ressources des deux ordinateurs. Cela ne vous procurera PAS une vitesse 2x complète (vous perdrez des ressources en raison de la virtualisation) et est une solution limitée en raison des exigences de compatibilité probables, mais c'est la réponse la plus "correcte" à votre question. La machine virtuelle agira comme un seul PC avec la puissance de traitement des deux hôtes moins la surcharge requise pour soutenir la virtualisation.

George Spiceland
la source
Je crains que la communication entre les hôtes ne soit le goulot d'étranglement.
gronostaj
1
Oui, la communication entre les hôtes peut être un goulot d'étranglement, cela fait partie de la surcharge impliquée. Les réseaux non gigabits seraient le principal coupable de cela, mais étant donné la disponibilité de gigabits bon marché et prolifique, je ne pense pas que cela soit particulièrement pénalisant. Cependant, cela est vrai de tous les traitements distribués sur le réseau, et VM est un scénario beaucoup plus utilisable avec beaucoup moins de complications que les appels de procédure à distance et les applications personnalisées dédiées à (ce qui devrait être de toute façon) l'informatique distribuée sur le réseau.
George Spiceland
2

Je suis d'accord avec les autres réponses:

  • Si vous avez un énorme classeur Excel à plusieurs feuilles et que vous souhaitez pouvoir exécuter Excel deux fois plus rapidement (mise à jour de formules et de scénarios, exécution de macros, etc.), vous n'avez pas de chance.
  • Si vous avez une application personnalisée qui est facilement partitionnée, comme la recherche de la racine carrée de chaque entier de 1 à 1 000 000, il devrait être facile pour vous de décomposer le problème en morceaux et de les distribuer.
  • Si vous avez une application personnalisée comme le calcul des 1 000 000 premiers chiffres de π (pi), vous pourrez peut-être le faire, si vous comprenez assez bien l'espace du problème.

Si vous parlez de développer un logiciel à exécuter dans un environnement distribué (multi-ordinateur), voici quelques suggestions:

  • Utilisez des appels de procédure à distance (RPC) . Tout comme vous pouvez faire d'un hôte un serveur de fichiers ou un serveur Web, les RPC vous permettent de faire d'une machine, essentiellement, un serveur CPU. Sur le plan conceptuel, vous auriez une machine principale, qui serait un client RPC, et elle appellerait des fonctions de bibliothèque qui seraient exécutées de manière transparente sur le serveur. Dans sa forme la plus simple, cette architecture ne vous apporterait aucun avantage en termes de performances, car un seul processeur s'exécuterait à tout instant. Cependant, dans le modèle asynchrone, le client peut démarrer une procédure distante sur le serveur, puis faire d'autres choses pendant que le serveur est en cours d'exécution.
  • Utilisez un langage conçu pour le traitement parallèle, tel que Unified Parallel C (UPC) . Il s'agit d'une extension du langage C avec des fonctionnalités pour les données distribuées et l'exécution simultanée. Les références:
Scott
la source