我只是有一个fortran优化的问题(可能是一般的程序):
有两种方法可以执行基本操作,对整个向量或逐行进行,即
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
我可以在循环中执行 openmp,因为有 1 亿个条目,但我不确定它是否会起作用。在循环中还是在循环外执行它会更快吗?经验和常识告诉我要在外面做。该程序还有其他组件,但我发现大部分时间都花在了创建新向量 x1,y1,z1 上,因为要转换的 x,y,z 值太多了。