不同等级的阵列上的元素操作

时间:2014-07-30 01:20:58

标签: optimization fortran vectorization

如何将两个不同等级的数组乘以元素?例如,以元素方式将矩阵的每一行与向量相乘。

real :: a(m,n), b(n)

我最初的想法是使用spread(b,...),但我的理解是这会在内存中平铺b,这会使大型数组不受欢迎。

在MATLAB中,我会使用bsxfun

1 个答案:

答案 0 :(得分:2)

如果表达式的结果只是被分配给另一个变量(而不是作为更复杂的表达式中的中间体或被用作实际参数),那么循环(DO [CONCURRENT])或FORALL赋值很可能从执行速度的角度来看是最好的(虽然它将取决于处理器)。