作者YCTzeng (我有一个大密宝)
看板Fortran
标题ifort 有问题!?
时间Wed May 23 12:01:04 2012
编译器版本是
Intel(R) Fortran Intel(R) 64 Compiler XE for applications
running on Intel(R) 64, Version 12.1.4.319 Build 20120410
系统是 64位元 Linux fedora core 14
kernel版本 2.6.35.14-106.fc14.x86_64 #1 SMP
4 GB 的记忆体
以下是程式码:
如果将最後一行注解 write(*,*) v5(100)
就可以编译,且成功正确执行。
真的很奇怪!
program hmwf
implicit none
integer(
4),
parameter :: lmax=
45000000
real(
8),
dimension(lmax) :: v1,v2,v3,v4,v5,v6
integer(
4) :: max,i,j
real(
8) :: su1,su2,su3
max=
45000000
do j
=1,
100
su1
=0.d0
su2
=0.d0
su3
=0.d0
do i
=1,max
v1(i)
=1.d10
v2(i)
=v1(i)
v3(i)
=v1(i)
v4(i)
=v3(i)
v5(i)
=v3(i)
v6(i)
=v3(i)
su1
=su1
+v1(i)
**2
su2
=su2
+v2(i)
**2
su3
=su3
+v3(i)
**2
enddo
write(
*,
*)
'j=',j,v6(max),v4(
1)
enddo
write(
*,
*) v5(
100)
end program hmwf
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.81.104
1F:→ egg9:2G的array一次就要了这麽多个记忆体当然会不够用罗 05/23 12:16
※ 编辑: YCTzeng 来自: 118.168.81.104 (05/23 12:19)
2F:→ egg9:如果资料不是这麽有必要都保存下来就改个写法吧 05/23 12:18
3F:→ YCTzeng:v1,v2,v3,v4,v5,v6都只各占约343MB,加起来2GB,我系统有4GB 05/23 12:22
4F:→ gilocustom:Ver.12.1.3 build 20120212,可以编译,不过记忆体不够 05/23 12:35
5F:→ gilocustom:所以没测试可不可以正常运作。 05/23 12:36
6F:→ YCTzeng:Intel 64,Ver:12.1.1.256 Build 20111011可以编译正常执行 05/23 12:40
7F:→ YCTzeng:所以好像真的是这个版本编译器有问题,大家要小心! 05/23 12:41
8F:→ YCTzeng:刚刚又测试了20120410的32位元版本,可编译但不能正确执行, 05/23 12:51
9F:→ YCTzeng:但是如果用 ifort -fast 就可编译,正确执行。 05/23 12:52
10F:推 terryys:有没有试过用allocate来配置记忆体?可能会跟固定的不同 05/23 15:16
11F:→ YCTzeng:推楼上,改成allocatable,可编译,正确执行。真是奇怪。 05/23 22:04
13F:→ perceval:刚查到的解决方法,另外PGI也有同样问题 05/24 00:04
14F:→ perceval:不过gfortran 可以编译,正确执行。 05/24 00:05
15F:→ YCTzeng:感谢楼上,这样就解决了。谢谢。 05/24 00:28
16F:→ YCTzeng:补充: ifort -shared-intel -mcmodel=medium xxx.f90 05/24 04:08
17F:推 callmei:推一下 原来LINUX下不是直接设STACK的大小@@ 05/24 18:42