英特尔提示:如果你不能打破一个记忆屋顶,试着修改你的算法,以获得更高的算术强度。这将使您向右移动,并在达到内存带宽上限之前给您更多的空间来提高性能。
对于roofline图中内存绑定区域中的算法,英特尔建议增加算术强度,使它们向右移动(计算界区域),从而为提高性能提供空间,因为性能屋顶会更高。
我不明白如何增加算术强度(比如说,增加no )。(算法中的操作)可能会提高性能指标,比如运行该算法所需的挂钟时间。你不需要做更多的事吗。即使是为了更高的性能(在失败中)计算?有人能解释一下这怎么可能吗?
发布于 2022-03-06 13:20:43
仅增加算法本身并不足以使算法更快。这个想法是,如果你在多个算法之间有一个选择,其中一个是内存绑定算法,那么选择另一个算法可能会更好,假设它在实践中不会慢得多,因为你很难优化内存绑定算法,而对于计算绑定算法来说,这通常要容易得多。在过去十年中,内存延迟几乎没有多大改善,带宽只是缓慢地增加(远远少于处理器失败的数量)。这就是所谓的记忆墙(几十年前)。现在移动数据变得非常昂贵,因此有时最好重新计算操作,而不是存储以前的结果。对于非常大的数据尤其如此,因为数据结构越大,它的速度就越慢。这种情况预计在今后几十年将变得更糟。因此,在不久的将来,速度较慢的计算绑定算法可能比内存绑定算法更快(特别是如果它可以/被并行化的话)。
https://stackoverflow.com/questions/71368454
复制相似问题