計算の高速化は可能か

5変数関数の計算を行っており、それぞれの変数が5パターンの値を持つとき、全ての組み合わは5^5通りできるかと思います。
現在for分を使用して計算を実施しているのですが、2時間程度時間がかかるため、高速計算を実施する手法が無いか探しています。
for分のコードは以下の通りです。
for i=1:5
for j=1:5
for k=1:5
for l=1:5
for m=1:5
OUTPUT(i,j,k,l,m)=subs(f,[a b c d e],[A(i,1) B(j,1) C(k,1) D(l,1) E(m,1)]);
end
end
end
end
end

댓글 수: 2

Hiroyuki Hishida
Hiroyuki Hishida 2023년 6월 12일
편집: Hiroyuki Hishida 2023년 6월 12일
いくつかあります。
まずは、単純に並列化です。 https://jp.mathworks.com/help/parallel-computing/parallel-for-loops-parfor.html 似た方法に、GPUの利用もあります。 https://jp.mathworks.com/help/parallel-computing/gpuarray.html
次はベクトル化です。 https://jp.mathworks.com/help/matlab/matlab_prog/vectorization.html
高速化に取り組まれる前に、どこで計算が遅いかを把握するのも良いと思います。
https://jp.mathworks.com/help/matlab/matlab_prog/measure-performance-of-your-program.html
いかがでしょうか。
Shota Ino
Shota Ino 2023년 6월 13일
並列化という方法があったのですね。思いつかなかったです。
ベクトル化については検討したことがあったのですが、4次元以上の計算についても可能なのでしょうか?
(4次元以上になるとイメージが湧かず、コードに落とし込めなかったです。。)
回答でご提案頂いた方法を試していこうと思います。

댓글을 달려면 로그인하십시오.

답변 (0개)

제품

릴리스

R2023a

태그

질문:

2023년 6월 12일

댓글:

2023년 6월 13일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!