【发布时间】:2018-07-05 14:24:27
【问题描述】:
我有一个涉及矩阵相乘、相加和存储的实现。是这样的,
A = 0;
b = 0;
for i=1:1225
... load A_i operator
A_i_obj = load([path_temp,'A_',num2str(i),'.mat']);
A_i = (A_i_obj.A);
% z_i is some variable of size Nx1 that I compute in this loop something like
% x is some variable of size Nx1 calculated above this loop
z_i = A_i*x;
% I have to perform some operations like these
y_i = A_i*(z_i + x);
A = A + A_i*A_i'
b = b + A_i*y_i;
end
% A and b will be used here something like
soln = inv(A)*b;
我的问题是上面的代码消耗了大量的模拟时间。即使循环内的操作是高效的(比如说 ~0.01 分钟),整个循环实现仍然消耗约 12-13 分钟。有人可以帮助我并提出一种有效的方法吗?非常感谢!
【问题讨论】:
-
我不确定是否可以根据此代码 sn-p 提出明智的建议 - 因为它不太现实。它在每次迭代时加载相同的文件,并且您不会对
y_i执行任何操作。如果你能举一个更现实的例子就更好了。 -
个人资料,但拜托,minimal reproducible example 很好,但它必须是现实的。这并不能总结您的问题,因为代码没有意义。
-
看看
mapreduce。 -
您好,我想为写得很糟糕的伪代码道歉。我已经更正了我的代码,以显示我如何一次加载一个运算符。我很乐意分享更多细节,但我必须以某种伪代码格式再次提供它们。感谢您,如有任何困惑,我们深表歉意!
标签: matlab matrix-multiplication processing-efficiency