Скажем, у меня много (около 1000) больших матриц (около 1000 на 1000), и я хочу сложить их поэлементно. Очень наивный способ - использовать временную переменную, которая накапливается в цикле. Например,
summ=0;
for ii=1:20
for jj=1:20
summ=summ+ rand(400);
end
end
После поиска в Интернете, кто-то сказал, что лучше сделать с помощью sum (). Например,
sump=zeros(400,400,400);
count=0;
for ii=1:20
for j=1:20
count=count+1;
sump(:,:,count)=rand(400);
end
end
sum(sump,3);
Однако, после того, как я проверил два способа, результат
Elapsed time is 0.780819 seconds.
Elapsed time is 1.085279 seconds.
, что означает, что второй метод еще хуже.
Так что мне просто интересно, есть ли эффективный способ сделать сложение? Предположим, что я работаю на компьютере с очень большой памятью и GTX 1080 (CUDA может быть полезным, но я не знаю, стоит ли это делать, поскольку общение также требует времени.)
Спасибо за ваше время! Любой ответ будет высоко оценен!.