Utilizando recursos de dispositivo de outro para execução de software

2

Eu tenho um velho e fraco notebook (dual duo de 1.7Ghz) e um quad core (arm cortex a7). Ambos estão rodando linux.

Posso usar os recursos do telefone do laptop para executar (processar) material para laptop? Existe tal programa para isso?

Isso não é possível por causa do laptop usando a arquitetura x86 e do telefone usando o ARM? Agora, eu não acho que isso seja verdade, porque eu li que as pessoas estão instalando coisas não-android em seus telefones Android enraizados, como a pilha LAMP, ou outros programas construídos para o Linux.

O que vocês acham disso tudo, vocês acham estúpido? Porque pode ser. Eu tentei pesquisar no Google, mas só encontrei algumas besteiras.

Se você tem uma ideia de como isso pode ser feito, por favor escreva aqui também. Por exemplo, eu gostaria de usar o Chrome para desktops usando os recursos do meu telefone. Agora, eu ficaria bem apenas usando a CPU do telefone, ele não precisa usar a RAM do telefone também. Isso é possível, usando CPU em um computador e RAM / armazenamento em outro? Eu diria que é, de algum modo, API, então o processo rodando na CPU do telefone nem sabe que está acessando a memória RAM em outra máquina. O gargalo óbvio é a velocidade de conexão de rede, que neste caso é WiFi (já que os telefones não têm LAN com fio, obviamente). Eu estou usando pessoalmente o padrão G, mas o padrão AC seria praticamente resolver esse problema de gargalo, já que ele pode empurrar quase 2 gigabits por segundo.

Eu não conheço caras. O que você acha?

    
por Housemd 26.05.2015 / 00:52

2 respostas

3

Ignorando o fato de que sua dupla principal é melhor do que o seu telefone, talvez seja possível encaminhar o X11 via USB entre eles (consulte wiki para um exemplo do iOS que ainda pode ser relevante) e instale o qemu e o binfmt no telefone para (LENTAMENTE) emular o chrome. Caso contrário, se você tiver o conhecimento e muito tempo em mãos, talvez consiga transferir o cromo de mesa para o seu telefone. Para que isso seja até mesmo um pouco viável, você gostaria de ter um linux no estilo desktop (leia-se: não android), porque você gostaria de ter acesso a recursos como o X11 e porque você tem que usar Java para interfaces em telefones Android.

Pode ser possível, mas eu consideraria totalmente indigno o esforço. Eu estou executando um core 2 duo agora, e embora seja 64 bit diferente do seu, ele tem 2GB de RAM e pode executar as coisas muito bem. Deixe seu telefone ser um telefone se você valoriza sua sanidade.

Para aplicativos menores, como programas baseados em linha de comando, fiz isso com sucesso. Apenas no meu caso eu cross-compilou o programa em questão usando este conjunto de ferramentas . O programa era um interpretador interativo de ficção chamado git , que não deve ser confundido com o sistema de gerenciamento de versões. Eu usei tcprelay (descrito na página wiki) para ssh no meu iphone através de USB e executei o meu jogo através dele. Mas realmente não vale a pena, e o USB seria um gargalo de qualquer maneira.

    
por 26.05.2015 / 01:55
2

A paralelização é difícil. A paralelização automática é um tópico de pesquisa, e em nenhuma parte perto de ser resolvido - além de problemas embaraçosamente paralelos (sim, esse é o termo técnico), a paralelização é praticamente necessária e é difícil mesmo com orientação humana. O motivo pelo qual a paralelização é difícil é que despachar uma tarefa para outro processador adiciona muita sobrecarga, e os processadores acabam gastando muito tempo esperando que os outros liberem um recurso de que precisam ou respondam a uma consulta. A execução paralela só vale a pena se o ganho no tempo total da execução paralela for maior do que a sobrecarga da sincronização. O que isso significa para você é que não há uma maneira mágica de dividir uma tarefa entre dois computadores, você terá que decidir quais programas executar em qual computador.

Um programa não pode usar a CPU do telefone e a RAM do PC. Não funciona assim, mais do que você pode usar a roda em um carro para dirigir os eixos em outro carro. Ele é executado em um computador ou no outro computador. (Você poderia abstrair a RAM como uma API, mas seria extremamente lento - milissegundos em vez de nanossegundos.)

Você pode executar um programa no telefone e interagir com ele no PC ou vice-versa. Em outras palavras, você pode dividir a execução do programa de onde sua interface está hospedada. Existem vários mecanismos para isso, incluindo:

  • ADB via USB
  • SSH através de uma conexão de rede (você pode instalar um cliente, um servidor ou ambos no telefone)
  • X11 encaminhando o SSH para programas GUI

Você não executaria os mesmos binários no telefone e no PC, pois eles têm diferentes arquiteturas de processador. Quase todo o software Linux pode ser executado em qualquer arquitetura de processador compatível, mas eles são compilados de maneira diferente. Quando as pessoas instalam software como o Apache em seu telefone com um processador ARM, elas estão instalando um binário ARM. Muitas distribuições de PC têm uma versão ARM (ou várias) além das versões para PC de 32 e 64 bits, por exemplo, estábulo Debian atualmente suporta 10 arquiteturas de processadores, incluindo i386 (aquele para o seu PC) e armhf (aquele para o seu telefone).

Você pode executar um binário de PC em um emulador no seu telefone ou vice-versa. Por exemplo, o emulador Android do Google é baseado no QEMU , no qual o QEMU é usado para emular um processador ARM; O QEMU também pode emular um processador x86 e ser executado em um processador ARM. Mas a emulação seria inútil no seu caso, porque é significativamente mais lento do que executar um binário nativo.

O seu computador e o seu telefone têm frequências de relógio no mesmo estádio. Freqüências de clock não podem ser comparadas entre arquiteturas de processador, nem mesmo entre projetos de processador com o mesmo conjunto de instruções, porque o design do processador determina quantos ciclos de clock cada instrução leva. Qual deles é o mais rápido dependerá da tarefa, mas eles estão no mesmo patamar . Poucas tarefas podem ser paralelizadas de uma maneira que se beneficiam de ter 4 CPUs, então esse número não é relevante para a maioria das tarefas. Dada a sobrecarga de descarregar os dados de uma máquina para outra, descarregar a computação no seu telefone seria útil apenas para uma tarefa que é massivamente paralela e que o processador do seu telefone é mais rápido do que o processador do seu PC. Para tais tarefas paralelas, descarregar para a sua GPU pode ser uma aposta melhor (as GPUs são boas em computação paralela, mas ruins em memória acessos).

    
por 26.05.2015 / 03:29