1
我已经在fortran中编写了一个遗传算法,以便能够用一个长双精度计算泛型适应度函数。第一个版本(双精度)是为gfortran写的,我已经实现了一个进度条。 现在我必须用ifort编译,因为gfortran不能执行真正的* 16计算。所有工作正常,但在这种情况下(ifort)进度条无法正常工作。即只有当整个循环完成时,进度条才会打印到标准输出。进度条。 [gfortran vs ifort]
这里是进度条的代码段:
if (rate(i).gt.ratemax) then
ratemax=rate(i)
write(*,"(1x,A57,D12.4,A27,f6.2,A1)",advance="no") &
'\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ff: ', &
ratemax,' Progress:',100.*real(nmix)/real(nmixing),'%'
end if
我使用64位的英特尔至强和ifort的选项有:
ifort -O2 -assume bscc FFevalLD.f90 func.o -o FFevalLD
而当使用gfortran我在此编译方式:
gfortran -ffree-form -O2 -fbackslash FFeval.f func.o -o FFeval
gfortran(但双精度)一切正常。
当我使用ifort时,哪里出错? 感谢名单
解决:如果(率(ⅰ).gt.ratemax)然后 ratemax =率(ⅰ) 1100格式(1×,A57,D12.4,A27 ,f6.2,A1,$) write(*,1100)& '\ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b \ b,b,b,b,b,b,b $ ratemax,'Progress:',100. * real(nmix)/ real(nmixing),'%' – emanuele 2011-05-11 10:09:12
如果解决了问题,接受! – Simon 2011-05-11 15:22:29
请务必使用标签[tag:fortran],并在必要时添加版本以区分您的问题是否具体。例如,您不能使用Fortran 2008,而只能使用Fortran 90。 – 2015-12-17 11:48:28