首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Roofline模型-如何计算触发器/字节比?

Roofline模型-如何计算触发器/字节比?
EN

Stack Overflow用户
提问于 2015-08-20 21:01:02
回答 1查看 2.7K关注 0票数 2

我想要创建roofline模型,我有问题的算法触发器每字节的比率。你能解释一下怎么算吗?该算法使用五点模板进行计算.

这是算法

代码语言:javascript
复制
for(int i=1; i<m-1; ++i) {
   for(int j=1; j<n-1; ++j) {
       outMax[i][j] = max( inMax[i][j], inMax[i][j-1], inMax[i][j+1],
                           inMax[i-1][j], inMax[i+1][j] );
   }
}
swap(inMax, outMax)

for(int i=1; i<m-1; ++i) {
   for(int j=1; j<n-1; ++j) {
      outMin[i][j] = min( inMin[i][j], inMin[i][j-1], inMin[i][j+1],
                          inMin[i-1][j], inMin[i+1][j] );
   }
}
swap(inMax, outMax)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 17:55:45

通常情况下,roofline是每个循环或每个程序.因此,我可能会考虑第一个循环和第二个循环的触发器/字节。

对于每个循环:

  1. 您需要估计操作的数量,这些操作(对于roofline和触发器/字节算术强度)通常等于在循环的一次迭代中执行的所有ALU (乘法、加法、除法等)操作的数目。(在硬件指令方面,您必须说明不会产生MOV*或跳转指令的操作)。在这种情况下,您只需考虑比较的数量(因为min/max处理的是比较)。在您的例子中,比较的确切数量取决于min()/max()函数的实现。
  2. 您必须估计从inMax (或在第二种情况下从/从/写入inMin)读取和写入多少字节;同样,每次迭代都要这样做。在您的示例中,您肯定读取了5* == (双) 40字节。你至少写了一个双倍。如何在min()/max()函数中读写内存取决于它的实现。
  3. 你必须把这两个值除以。在您的例子中,触发器/字节可能类似于0.1,取决于min()/max()算法。

同时,C/C++/Fortran程序中的每个循环和函数的自动Roofline模型生成(以及触发器/字节度量)可作为英特尔顾问公司2017年版产品startig中的头等功能提供,参见https://software.intel.com/en-us/articles/intel-advisor-rooflinehttps://www.codeproject.com/Articles/1169323/Intel-Advisor-

请记住,某些roofline变体在如何定义“字节”值方面存在差异。

为模具找出触发器/字节和roofline模型是非常流行的话题,在roofline专家和开发人员中非常流行。因此,通过查看下面的链接,您可能会发现足够多的模板roofline示例,以便在您的特定情况下进行跟踪和重新应用,或者实现DRAM与L1之间的关系:

http://icsc2014.sjtu.edu.cn/wp-content/uploads/2014/05/Tutorial-Leopold1.pdf (特别是从第17页开始)

2014.pdf

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32128318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档