Re: [問題] 效率
感謝大家對這問題有興趣
但我沒法貼全部程式碼
因為我是用 chrome 在上 ptt
所以我每次複製貼上
chrome 都傻傻的給我"一行"貼上
它不懂什麼叫換行
因此我去找了一下網路空間
並上傳SOURCE CODE
http://ge.tt/7QJGSAz/v/0
檔名是 trans-WAVECAR.f90
WAVECAR 是一個 binary file
所以這個程式目的是要把 WAVECAR 轉換成 ASCII 並轉換成別種格式
這樣我就可以用繪圖軟體把WAVECAR畫出來
我是在 linux server 上作業
用的是 intel compiler 12.0
指令是用 ifort -assume byterecl trans-WAVECAR.f90
我所貼上來的部份是在 line 185~196 間
我有試過將 csumout 拿掉
程式執行通常都是秒殺
加上去後就不得了的慢了
: : xyz(1) = dble(ix)/dble(ngrid(1))
: : xyz(2) = dble(iy)/dble(ngrid(2))
: : xyz(3) = dble(iz)/dble(ngrid(3))
: 這邊浪費很多加減乘除的處理時間...推文中講過...不再累述....
: 程式碼無全數貼出故無法得知中間少了啥....囧
: 理論上atmp & coeff這兩個array要先填完...接下去作才有意義...
: 建議你在atmp = ......這一行用Euler formular拆解re part and im part
: 並先算完cdexp後...
: 再到下一行直接用dot函數處理並填到csumout裡頭....
: 最後3層loop結束後再加一行 csumout=csumout/dsqrt(Vol)
Euler formular 是指什麼
是這個嬤??
http://zh.wikipedia.org/wiki/%E6%AC%A7%E6%8B%89%E5%85%AC%E5%BC%8F
令我難以接受的是
我試過
csum = sum(coeff(1:nplane)*cdexp(atmp(1:nplane)))/dsqrt(Vol) ! csum is complex
如果只是用一個參數去存取
程式效率很好
但只要再加入
csumout(ix,iy,iz)=csum
把 csum 存到三維矩陣
那效率就差很多很多很多 .....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 80.98.198.158
→
11/14 04:59, , 1F
11/14 04:59, 1F
→
11/14 04:59, , 2F
11/14 04:59, 2F
→
11/14 08:24, , 3F
11/14 08:24, 3F
→
11/14 10:35, , 4F
11/14 10:35, 4F
→
11/14 10:38, , 5F
11/14 10:38, 5F
→
11/14 10:40, , 6F
11/14 10:40, 6F
→
11/14 10:40, , 7F
11/14 10:40, 7F
→
11/14 17:23, , 8F
11/14 17:23, 8F
→
11/14 17:24, , 9F
11/14 17:24, 9F
→
11/15 19:47, , 10F
11/15 19:47, 10F
→
11/15 21:07, , 11F
11/15 21:07, 11F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章