我有几台 Linux 机器,我想建立一个集群计算机网络。将有 1 个用于控制器的监视器。控制器将执行一个脚本,该脚本将执行任务并将负载分配到计算机上。
假设我有 4 台计算机都连接到控制器。我想使用 GCC 编译一个程序,但我想将工作分成 3 种方式。我该怎么做呢?
任何帮助,将不胜感激。
答案1
distcc
可用于在多台机器上编译代码。
来自 debiandistcc
软件包信息:
封装: distcc
Description-en: 简单的分布式编译器客户端和服务器
distcc
是一个在网络上的多台机器上分发编译C
或代码的程序。应始终生成与本地编译相同的结果,易于安装和使用,并且通常比本地编译快得多。 不要求所有机器共享文件系统、同步时钟或安装相同的库或头文件。C++
distcc
distcc
对于其他任务,它比“执行任务并将负载分配到计算机上”的脚本要复杂得多。您需要使用调度程序(例如泥浆或者扭矩- 都为 Debian 和大多数其他发行版打包。我的偏好是slurm
)。
换句话说,将您的 Linux 机器集合变成一个集群。这并不是特别困难,但工作量相当大,需要大量阅读和理解(您阅读的大部分内容与大学或研究实验室的大型 HPC 集群相关,但与一个小型家庭集群)。
请注意,如果您希望能够运行将工作负载同时分散到集群中多台计算机上的程序,则它们必须:
执行适合并行运行的作业(例如,工作可以分成可以单独处理的小块,稍后合并结果)
对所需资源具有共享访问权限(例如用于读写文件的 NFS 服务器)
并且:
或者
- 有一个主控制进程来进行通信和控制,这就是它的
distcc
作用。
答案2
你可以尝试制作一个贝奥武夫星团。您将一台主机设置为主主机,将其余主机设置为节点。过去其他人也曾这样做过,包括美国国家航空航天局 (NASA)贝奥武夫集群的维基百科条目说。
构建您自己的集群计算机场可能会花费比您获得的计算资源更多的电力成本。
我自己没有尝试过,但我一直想尝试一下。