如果我可以访问大量的CPU,并且希望使用map-reduce体系结构快速检查1亿个数字的素数,那么需要多less个CPU? 每个映射的计算实例将使用指定的除数范围(例如实例1:检查除数2-1000,实例2:检查除数1001-2000,等等)针对所讨论的数量执行有效的检查。
定义:
很快就意味着要在30-60分钟内对一亿个数字进行检查。
有效的划分意味着只检查直到平方根的奇数。 较低的除数将只是加速计算的已知素数。
1 CPU是1.0-1.2 GHz 2007 Opteron或2007 Xeon处理器的等效CPU容量。
是的,我知道有更好的algorithm,如AKS,但我需要能够分工在映射实例之间的工作。
要问的更好的问题可能是:CPU数量与validation给定数量的数字所花费的时间之间的math关系是什么?
我在问这个问题,因为我正在计算出在亚马逊AWS上需要购买的Map_Reduce实例的数量,以便计算可行(几个月/less于一年)。
没有math关系。 这完全取决于你的软件,你得到的机器的架构。 什么样的内存,磁盘,确切的CPU规格如L2 / 3caching可以对性能有很大的影响。 基本上你需要做一个合理缩小的基准,然后紧缩数字。
我完全同意@Zypher,但这是你的另一个想法。 如果你想让这个任务的成本效益,你可以考虑通过CUDA , OpenCL等使用GPU。 尽pipe最初的投资可能会很大,但从长远来看,使用亚马逊将会更便宜。