accélérateur de processus distant générique

0

Existe-t-il une solution pour accélérer un processus local en utilisant des processeurs PC (et / ou GPU) distants?

Ma solution idéale devrait:

  • travailler sans avoir besoin de réécrire l'application pour utiliser une bibliothèque spécifique ;
  • travailler sur des systèmes d'exploitation et des archs hétérogènes (en recourant si nécessaire à une recompilation dynamique);
  • Basculement du service d'assistance: si certains nœuds du réseau tombent en panne, l'exécution peut toujours continuer sur les nœuds restants (ou même localement si le nœud principal est isolé).

cas d'utilisation:  PC1 est moins puissant que PC2, mais j'aime quand même utiliser une application gourmande en ressources processeur et utiliser ses ressources locales lors de son exécution (système de fichiers, périphériques USB, etc.).  Ainsi, au lieu de déléguer complètement l’exécution du processus (comme dans VNC), j’aimerais déléguer une partie seulement de manière dynamique au moment de l’exécution.

eadmaster
la source

Réponses:

0

is there a solution to accelerate a local process using remote PC CPUs (and/or GPU)?

Oui, ce que vous décrivez s'appelle un cluster d'ordinateurs. Mais je suppose que vous saviez déjà cela parce que vous avez identifié la question comme telle. Je vais donc aborder vos points de balle:

work without the need to rewrite the app to use a specific library;

De la même manière, une application multithread doit être écrite pour utiliser un processeur multicœur, une application distribuée doit être écrite pour répartir sa charge de travail entre les nœuds d'un cluster. Sur le plan logistique, c'est le même problème que vous rencontrez lorsque des personnes travaillent en équipe. Vous devez élaborer un plan, le diviser en tâches individuelles, déléguer ces tâches à certaines personnes, puis coordonner avec ces personnes pour que le travail soit effectué. Cela doit être fait de cette façon car les autres personnes ne peuvent pas partager votre mémoire, entendre vos pensées ou voir la vision que vous avez dans la tête.

work on heterogeneous OSes and archs (using dynamic recompilation if necessary);

Cela est possible avec un client écrit pour chacune des plates-formes cibles ou avec un langage commun tel que Java ou Python.

support service fail-over: if some network nodes go down execution can still proceed on the remaining nodes (or even just locally if the main node became isolated).

Une application distribuée bien écrite n'a pas besoin de s'inquiéter d'un nœud en panne. Les tâches de calcul sont divisées en segments par un "nœud maître" et déléguées aux unités de traitement à partir d'une liste. Si un nœud de traitement tombe en panne, ces tâches ne sont jamais effectuées et restent dans la liste des autres nœuds à traiter.


Quelle que soit la manière dont vous la découpez, il n’existe aucune solution miracle qui permettrait de créer un cluster de calcul intensif pour le traitement de feuilles de calcul Excel et de jeux en cours d’exécution. Les applications distribuées doivent être spécifiquement conçues pour ce type de tâche. N'oubliez pas que la plupart des applications ne peuvent même pas utiliser plus d'un cœur de processeur sur la machine SAME, sans parler d'un seul ordinateur situé quelque part dans le cloud.

Wes Sayeed
la source
J'ai trouvé l'application Xgrid capable de exécuter tout programme pouvant être exécuté à partir du terminal Mac OS X en tant que travail . Je ne sais pas si c'est exactement ce que je recherche et je ne possède pas de Mac pour l'essayer ... D'ailleurs, si j'ai bien compris, cela montre que la chose est possible.
eadmaster
J'ai également constaté que HTCondor pouvait le faire avec son univers parallèle, mais il comporte davantage de restrictions et il est plus difficile à installer. Comme Xgrid, il est limité aux programmes par lots, pas aux programmes interactifs / à interface graphique ou aux jeux qui m'intéressaient surtout ...
eadmaster