我有一台旧的弱笔记本电脑(双核1.7Ghz)和四核手机(arm cortex a7)。两者都运行Linux。
我可以使用笔记本电脑上的手机资源来为笔记本电脑执行(处理)内容吗?有这样的程序吗?
难道笔记本电脑使用x86架构,而手机使用ARM架构就不可能吗?现在,我不认为这是真的,因为我读到人们在他们的 root Android 手机上安装非 Android 的东西,比如 LAMP 堆栈,或者为 Linux 构建的其他程序。
对于这一切,你们怎么看,你们认为这很愚蠢吗?因为可能是这样。我尝试过谷歌搜索,但只发现了一些垃圾。
如果您知道如何做到这一点,也请写在这里。例如,我想使用手机资源运行桌面版 Chrome。现在,我只使用手机的 CPU 就可以了,不必使用手机的 RAM。这是否可能,在一台计算机上使用 CPU,在另一台计算机上使用 RAM/存储?我想说的是,某种 API,所以在手机 CPU 上运行的进程甚至不知道它正在访问另一台机器上的 RAM。明显的瓶颈是网络连接速度,在本例中是 WiFi(因为手机显然没有有线 LAN)。我个人使用的是 G 标准,但在我看来,ac 标准实际上可以解决这个瓶颈问题,因为它每秒可以推动近 2 GB 的速度。
我不知道伙计们。你怎么认为?
答案1
忽略您的核心二人组比您的手机更好这一事实,也许可以通过 USB 在它们之间转发 X11(请参阅这个维基对于可能仍然相关的 iOS 示例),并在手机上安装 qemu 和 binfmt 以(缓慢)模拟 chrome。否则,如果您有足够的知识并且有大量时间,您也许可以将桌面 Chrome 移植到您的手机上。为了使这一点稍微可行,您可能需要一个桌面风格(即:不是 android)linux,因为您想要访问 X11 等资源,并且因为您必须在 android 手机上使用 Java 接口。
也许有可能,但我认为这完全不值得付出努力。我现在运行的是 core 2 duo,虽然它是 64 位的,与您的不同,但它有 2GB 的 RAM,可以正常运行。如果您重视理智,就让您的手机成为手机吧。
对于较小的应用程序,例如基于命令行的程序,我已经成功地做到了这一点。仅就我而言交叉编译有问题的程序使用这个工具链。该程序是一个名为 的交互式小说解释器git
,不要与版本管理系统混淆。我使用tcprelay
(在 wiki 页面上描述)通过 USB ssh 到我的 iPhone 并通过它运行我的游戏。但这确实不值得,而且 USB 无论如何都会成为瓶颈。
答案2
并行化很困难。自动并行化是一个研究课题,距离解决还很遥远——除了令人尴尬的并行问题(是的,这是技术术语)之外,并行化几乎需要人类的指导,即使有人类的指导也是很困难的。并行化困难的原因是,将任务分派给另一个处理器会增加大量开销,并且处理器最终会花费大量时间等待其他处理器释放它们需要的资源或响应查询。仅当并行执行带来的总时间增益大于同步开销时,并行执行才值得。这对您来说意味着没有神奇的方法可以在两台计算机之间分配任务,您必须决定在哪台计算机上运行哪些程序。
程序无法使用手机的 CPU 和 PC 的 RAM。它不是这样工作的,就像你不能使用一辆车的车轮来操纵另一辆车的车轴一样。它可以在一台计算机上运行,也可以在另一台计算机上运行。 (您可以将 RAM 抽象为 API,但速度会非常慢 — 毫秒而不是纳秒。)
您可以在手机上运行程序并在 PC 上与其交互,反之亦然。换句话说,您可以将程序的运行与其界面的托管位置分开。为此存在多种机制,包括:
您不会在手机和 PC 上运行相同的二进制文件,因为它们具有不同的处理器架构。几乎所有 Linux 软件都可以在任何受支持的处理器架构上运行,但它们的编译方式不同。当人们在配备 ARM 处理器的手机上安装 Apache 等软件时,他们实际上是在安装 ARM 二进制文件。例如,除了 32 位和 64 位 PC 版本之外,许多 PC 发行版还有一个(或多个)ARM 版本Debian 稳定版目前支持10种处理器架构,包括i386(适用于您的 PC 的)和臂氢夫(适合您手机的)。
您可以在手机的模拟器上运行 PC 二进制文件,反之亦然。例如,Google 的 Android 模拟器就是基于QEMU,其中QEMU用于模拟ARM处理器; QEMU 还可以模拟 x86 处理器并在 ARM 处理器上运行。但在您的情况下,模拟是毫无意义的,因为它比运行本机二进制文件要慢得多。
您的计算机和手机的时钟频率大致相同。时钟频率无法跨处理器架构进行比较,甚至无法跨具有相同指令集的处理器设计进行比较,因为处理器的设计决定了每条指令需要多少个时钟周期。哪一个最快取决于任务,但是他们在同一个球场。很少有任务可以通过使用 4 个 CPU 来并行化,因此这个数字与大多数任务无关。考虑到将数据从一台机器卸载到另一台机器的开销,在手机上卸载计算仅对大规模并行任务有用,并且手机处理器比 PC 处理器更快。对于此类并行任务,卸载到您的图形处理器可能是一个更好的选择(GPU 擅长并行计算,但不擅长内存访问)。