怎样虚拟化两个家用电脑成为一台计算能力更强的电脑?
怎样虚拟化两个家用电脑成为一台计算能力更强的电脑?
首先需要对“计算能力更强”做一个约束,因为这里除了考虑CPU/GPU的计算速度,还要考虑多台计算机之间数据传输的速度(带宽),以及磁盘I/O。在很多情况下,数据传输消耗的时间要远高于计算时间。
所有支持并行计算的任务,都应该是可以被拆分成多个并行计算过程,以MapReduce为例,绝大多数MapReduce算法都需要满足交换律和结合律。因此,需要确保所执行的任务符合并行计算模型(MapReduce,MPI等)的要求,包括算法和数据结构层面。或者,可以用满足并行计算模型的算法去近似地获得原有算法的结果。
从实现层面,最简单的办法是使用现有的并行计算框架,如MPI/OpenMPI,在其框架体系内编写算法执行任务。使用hadoop是另一个选择,但hadoop由于本身是主从结构,以及对容灾恢复等方面支持存在一定开销,更适合于大数据存储而非计算密集型任务。
BTW:GPU的SLI和CrossFire技术某种程度上也可以认为是这样一个实现。
0