我正在编写一些并行的Fortran90/95代码,我只是遇到了一些我无法理解的事情。
我在一台东芝笔记本电脑上工作,里面有6GoRAM。
遇到问题的代码的最低版本是:
program main
implicit none
integer :: i
integer, parameter :: n=500000
real, dimension(n) :: A, B
real :: som
som=0
do i =1, n
A(i)= 1.0
B(i)= 2.0
end do
do i=1, n
som = som + A(i)*B(i)
end do
print *,"somme:", som
end program main然后,让参数n的值发生变化。
我的问题是如何解释这个ubuntu,尽管可用内存少得多,却可以处理10倍多的迭代?
对于Windows大小,我能做些什么使它能够处理更多的循环迭代吗?
发布于 2018-11-28 09:29:22
根据罗德里戈·罗德里格斯的评论,我在编译器设置中又添加了一个标志:
-fmax-stack-var-size=65535文档说默认值是32767,但我假设代码块和ubuntu的本地gfortran中有不同的设置。
发布于 2022-10-24 03:03:40
program main
implicit none
real,allocatable :: A(:),B(:)
real :: som
integer :: i
integer, parameter :: n=500000
allocate(A(n))
allocate(B(n))
som=0
do i =1, n
A(i)= 1.0
B(i)= 2.0
end do
do i=1, n
som = som + A(i)*B(i)
end do
print *,"somme:", som
end program main顶替
real, dimension(n) :: A, B使用
real,allocatable :: A(:),B(:)
allocate(A(n))
allocate(B(n))问题解决了,请检查一下。
https://stackoverflow.com/questions/53515227
复制相似问题