需要多少个 CPU 才能有效地检查 1 亿位素数?

需要多少个 CPU 才能有效地检查 1 亿位素数?

如果我可以使用大量的 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 缓存等都会对性能产生很大影响。基本上,您需要进行合理缩小的基准测试,然后计算数字。

答案2

我完全同意@Zypher 的观点,但这里有另一个想法。如果你想让这项任务更具成本效益,你可以考虑使用 GPU 来完成它通用计算架构OpenCL等等。尽管初期投资可能很大,但从长远来看,它比使用亚马逊便宜得多。

相关内容