|
1
9
要测试系统的内存性能,请尝试 STREAM benchmark . 仔细研究基准任务和你得到的结果,因为它们提供了关于你记忆的基本数据,你需要做进一步的工作。你需要弄清楚缓存的效果——你必须了解它们——以及带宽何时达到峰值。
警告:这是一种粗糙的方法,只能用于确定是否应该注意内存带宽问题。如果您粗略的计算告诉您,您的程序使用的可用内存带宽不到50%(您从流基准测试得到的数据),那么您不应该再考虑它。 当您的程序使用简单的访问模式处理相对较少的非常大的数据结构时,这种粗糙的方法最有效。这确实描述了许多高性能的科学项目,但也许没有很多其他类型的项目。 如果您的程序使用的是虚拟内存,或者在执行时执行I/O操作,那么内存带宽不是问题,除非您解决了磁盘带宽问题。 最后,是的,每次我运行一个科学代码时,执行速度都会受到内存带宽的限制。根据经验,如果一个代码执行处理器规范承诺的10%的失败,我会很高兴。 |
|
|
2
8
1.处理器外RAM的速度
将内存的速度提高到处理器的能力之外并不能提高性能。它改变了从RAM到处理器的瓶颈。另见#3。 2.处理器内部缓存速度 高速缓存驻留在处理器的外壳中。这是可用的最快的内存类型之一。处理器将在搜索RAM之前搜索此内存。提高内存的速度和数量将提高处理器的性能, 除非其他内核也在访问这个内存 注: 除了获得另一个处理器之外,您无法加快或更改高速缓存的大小。缓存不是人类或机器手可以轻易改变的东西。
3.共享内存总线的实体数
共享内存总线的一些常见实体:CPU、DMA控制器、视频处理器、声音处理器和网络或I/O处理器。 4.虚拟内存。 许多现代计算机使用 虚拟内存 . 如果程序需要的内存超过RAM中的可用内存,则操作系统会将部分内存与硬盘上的区域交换。这比降低内存运行速度花费更多的性能时间。内存密集型程序只使用分配给它的内存比它可能需要的所有内存更有效。减少这些虚拟内存交换将加快程序的速度。
|
|
|
3
3
|
|
|
4
1
如果代码顶层例程(从平面配置文件)有更多的算术运算要加载/存储,那么您不会受到内存带宽的太多影响。例如优化矩阵乘法,LINPACK。 |