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).