Effacer les filtres
Effacer les filtres

計算の高速化は可能か

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

Produits


Version

R2023a

Community Treasure Hunt

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

Start Hunting!