如何解决在典型的 Intel/AMD 多核机器上进行快速计算/巨大内存的多线程效率
对于使用多线程进行密集计算的开发人员来说,这是一个有点实际的问题。
在具有 Intel 或 AMD 多核处理器的典型架构的机器上,使用多线程在大面积内存上重复简单的演算是否有效?
例如,假设我想增加一个巨大的整数数组(或对它们进行一些非常简单的操作),并在具有每个子数组的不同线程之间共享工作负载。
根据处理器的内核数量以及是否超线程,机器可以有 N 个并发线程。我的微积分速度可以乘以接近 N 的值吗?或者 RAM 访问的瓶颈会更快出现吗?
我公司可以租用的典型机器有 N = 40。但如果出现 5 个线程的瓶颈,那么这些机器对我们的目标没有用处。
我知道从理论上讲,RAM 访问可能是一个瓶颈,但对于在大内存上重复的同类快速操作,我需要实际经验反馈。
解决方法
这取决于机器架构和配置的细节。但是,对于增加一个巨大的整数数组之类的事情,您通常可以在内核用完之前使内存总线饱和,因此内存成为瓶颈。
您可以从机器的详细规格中计算出该机器的理论内存带宽,然后通过多线程,您可以期望在现实生活中达到该值的 80% 到 100%。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。