如果我可以使用大量的 CPU,并希望使用 map-reduce 架构快速检查 1 亿位数字的素数性,那么需要多少个 CPU?每个映射的计算实例都会使用指定的除数范围对相关数字执行有效检查(例如,实例 1:检查除数 2-1000,实例 2:检查除数 1001-2000,……等等)。
定义:
迅速地意味着在 30-60 分钟内检查单个除数与一亿位数字之间的对应关系。
高效分工意味着只检查平方根以内的奇数。下除数将是已知的素数,以加快计算速度。
1 个 CPU相当于 1.0-1.2 GHz 2007 Opteron 或 2007 Xeon 处理器的 CPU 容量。
是的,我知道有更好的算法,比如 AKS,但我需要能够在映射实例之间划分工作。
更好的问题可能是:CPU 的数量和验证给定数字所需的时间之间的数学关系是什么?
我之所以问这个问题,是因为我想弄清楚需要在 Amazon AWS 上购买多少个 Map_Reduce 实例才能使计算可行(几个月/不到一年)。
答案1
没有数学关系。这完全取决于您的软件、您购买的机器的架构。什么样的 RAM、磁盘、确切的 CPU 规格以及 L2/3 缓存等都会对性能产生很大影响。基本上,您需要进行合理缩小的基准测试,然后计算数字。