我很少使用Fortran,但是我一直負責將遺留代碼重寫爲並行運行。我正在使用gfortran編譯器選擇。我在https://computing.llnl.gov/tutorials/openMP/以及其他一些地方發現了一些優秀的資源。Fortran中的OpenMP
我的問題是這樣的,以前我添加任何OpenMP指令,如果我只是編譯遺留程序:
gfortran Example1.F90 -o例1
一切正常,但即使打開OpenMP的編譯器選項無添加指令:
gfortran -openmp Example1.F90 -o例1
當我運行遺留程序與分段故障結束。使用我編寫的較小的測試程序,我已經成功編譯了其他程序,其中包含可在多個線程上運行的-openmp,但是我爲什麼單獨啓用此選項並且沒有任何指令導致seg故障而感到茫然。
我很抱歉,如果我的問題很簡單。我可以發佈代碼,但它很長。它的故障,因爲我分配初始值:
REAL, DIMENSION(da,da) :: uconsold
REAL, DIMENSION(da,da,dr,dk) :: uconsolde
...
uconsold=0.0
uconsolde=0.0
的第一項任務,以「uconsold」工作正常,第二個似乎是錯的,當我發表意見線作爲源出下幾行執行歡快,直到「 uconsolde「再次使用。
謝謝你在這件事情上的任何幫助。
就我所見,這不是遺留代碼。這是聲明數組的現代方式。至於openmp而言,對鏈接上的教程充分尊重,我虛心推薦「使用OpenMP」一書。對於從來沒有處理過的人來說,這是非常友好的http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=11387 ...還有一個,但我不'現在就把它放在我的書架上,不能重新記錄作者。如果你有興趣給我發一條評論,當我回家時我會查看它。 – Rook 2010-05-19 21:25:02