for (int i = 0; i < 100; ++i)
{
for (int j = 0; j < 50; ++j)
{
X[i*xcol+j] = Y[i] * Z[j];
}
}
我们应该在我们的总gflops中计算++i
,i*xcol+j
等操作(在你指出这里明显的错误之前,让我们暂时忘记对flops的严格定义)或者我们只计算需要数Y[i]*Z[j]
?我之所以这么说的原因是我读了一些文章,他们只计算最后一篇文章,这里是gflops / maths ops。
答案 0 :(得分:2)
当你为我做一份工作时,我所关心的只是计算我想要的东西。我不在乎计算你的开销。在这种情况下,目标是将每个Y乘以Z中的每一个。所以问题是,你每秒可以给我多少次乘法?
我不在乎你是否需要做很多数组索引计算,或者你找到了解决它们的方法。例如,假设有一天你做了20,000次算术运算,给了我5000次乘法,这花了你一秒钟(太慢而不能成为现代计算机)。对我来说,这是每秒5000次。第二天,你想出了一个更好的编写代码的方法,它只需要10,000次算术运算就可以给我5000次乘法,它需要你半秒钟。那是每秒10,000次触发。
显然,我宁愿在半秒内完成5,000次操作。这是唯一重要的操作。