計算の高速化は可能か

7 vues (au cours des 30 derniers jours)
Shota Ino
Shota Ino le 12 Juin 2023
Commenté : Shota Ino le 13 Juin 2023
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 commentaires
Hiroyuki Hishida
Hiroyuki Hishida le 12 Juin 2023
Modifié(e) : Hiroyuki Hishida le 12 Juin 2023
いくつかあります。
まずは、単純に並列化です。 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 le 13 Juin 2023
並列化という方法があったのですね。思いつかなかったです。
ベクトル化については検討したことがあったのですが、4次元以上の計算についても可能なのでしょうか?
(4次元以上になるとイメージが湧かず、コードに落とし込めなかったです。。)
回答でご提案頂いた方法を試していこうと思います。

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2023a

Community Treasure Hunt

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

Start Hunting!