作者DMFC (sole)
看板Fortran
标题[问题] 效率
时间Sat Nov 9 05:38:47 2013
贴一部份程式码,fortran90语法
do i=1,nx ; do j=1,ny ; do k=1,nz
csum=sum(coeff(1:np)*cdexp)/Vol
csumout(i,j,k)=csum
end do ; end do ; end do
请问一下
由於资料量不算小
目前测试 nx=ny=nz=47, np=23000
上面贴的部份是需要最久计算的部份
普通执行需要约两分钟(测试用参数)
若是把第三行去掉
则可以10秒内结束
可是我就是要把这个资料输出
才用了一个三维 ARRAY 把资料存起来
然後离开这个 LOOP 後再写出
如果把 WRITE 写在 LOOP 内
则情况会更糟
请问有什麽方法可以处理这窘境
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 80.98.198.158
1F:→ biggun:卡在I/O,把程式丢到ramdisk里跑看看,当然ramdisk要够大 11/10 16:15
2F:推 charlesdc:其实还有一种可能 你换一台ram很大的电脑跑看看 11/10 21:23
3F:→ charlesdc:有可能是你电脑的ram不够用 11/10 21:23
4F:→ charlesdc:不然就是那个三维的矩阵透过动态方式建立在释放看看 11/10 21:24