Fortran の最適化 (おそらく一般的なプログラム) について質問があります。
基本操作を実行するには、ベクトル全体または行ごとの 2 つの方法があります。
x = array(:,1)
y = array(:,2)
z = array(:,3)
x1 = floor(x/k) + 1
y1 = floor(y/k) + 1
z1 = floor(z/k) + 1
また
do i = 1:n
x1(i) = floor(x(i)/k) + 1
y1(i) = floor(y(i)/k) + 1
z1(i) = floor(z(i)/k) + 1
end do
1 億のエントリがあるため、ループ上で openmp を実行できますが、うまくいくかどうかはわかりません。ループ内またはループ外で実行する方が速いでしょうか。経験と常識は、外でやれと言います。プログラムには他にもコンポーネントがありますが、変換する x、y、z 値が非常に多いため、ほとんどの時間が新しいベクトル x1、y1、z1 の作成に費やされていることがわかりました。