acelerador de processo remoto genérico

0

existe uma solução para acelerar um processo local usando CPUs de PC remotas (e / ou GPU)?

Minha solução ideal deve:

  • trabalhe sem a necessidade de reescrever o aplicativo para usar uma biblioteca específica ;
  • trabalhar em sistemas operacionais e arcos heterogêneos (usando recompilação dinâmica, se necessário);
  • failover de serviço de suporte: se alguns nós da rede ficarem inativos, a execução ainda poderá continuar nos nós restantes (ou mesmo apenas localmente se o nó principal ficar isolado).

caso de uso:  O PC1 é menos poderoso que o PC2, mas eu ainda gosto de executar algum aplicativo que exija muita CPU e usar seus recursos locais durante a execução (o sistema de arquivos, periperals USB, etc.).  Portanto, em vez de delegar a execução do processo completamente (como no VNC), gostaria de delegar apenas uma parte dele dinamicamente em tempo de execução.

    
por eadmaster 16.09.2014 / 01:48

1 resposta

0

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

Sim, o que você está descrevendo é chamado de cluster de computador. Mas eu sei que você já sabia disso porque você marcou a questão como tal. Então, vou abordar seus tópicos:

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

Não. Da mesma forma que um aplicativo multiencadeado deve ser gravado para utilizar uma CPU de vários núcleos, um aplicativo distribuído deve ser gravado para distribuir sua carga de trabalho entre os nós em um cluster. Logisticamente, é o mesmo problema que você tem com pessoas trabalhando juntas como parte de uma equipe. Você tem que criar um plano, dividi-lo em tarefas individuais, delegar essas tarefas a certas pessoas e então coordenar com essas pessoas para fazer o trabalho. Tem que ser feito dessa maneira porque outras pessoas não podem compartilhar sua memória, ouvir seus pensamentos ou ver a visão que você tem em sua cabeça.

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

Isso é possível com um cliente escrito para cada uma das plataformas de destino ou com uma linguagem comum, como 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).

Um aplicativo distribuído bem escrito não precisa se preocupar com a queda de um nó. As tarefas de computação são divididas em segmentos por um "nó mestre" e delegadas a unidades de processamento de uma lista. Se um nó de processamento ficar inoperante, essas tarefas nunca serão concluídas e permanecerão na lista para outros nós processarem.

Não importa como você o faça, não existe uma solução mágica que crie um cluster supercomputador fedorento para processar planilhas do Excel e rodar jogos. Aplicativos distribuídos devem ser especificamente projetados para esse tipo de tarefa. Lembre-se de que a maioria dos aplicativos não pode nem mesmo utilizar mais de um núcleo de processador na MESMA máquina, muito menos em um computador em algum lugar na nuvem.

    
por 16.09.2014 / 02:23

Tags