計算の高速化は可能か

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개)

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

제품

릴리스

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!