簡體   English   中英

使用沒有 c$omp& 指令的 gfortran 編譯

[英]Compile with gfortran without c$omp& directive

這個問題與使用 gfortran -fopenmp 編譯支持 OpenMP 的 Fotran77(結合一些 C 庫)固定格式代碼有關。

這個答案討論了在繼續下一行的情況下,如果所需的列超過 72,在下一行中用於支持 OpenMP 的代碼的正確指令是c$omp& sentinel。 例如,

代碼A

C$OMP PARALLEL SHARED(Lm,Mm, pm,pn, f,f_q, fnd_rmask,rmask, dm_u,dn_v,
& iA_q)

是不正確的固定格式 Fotran77 代碼部分。

這個網頁這個答案說正確的形式是

代碼B

C$OMP PARALLEL SHARED(Lm,Mm, pm,pn, f,f_q, fnd_rmask,rmask, dm_u,dn_v,
C$OMP& iA_q)

但是,我需要使用代碼 A (現在不要問我,如果有人感興趣,我可以解釋)這給了我 gfortran 編譯器的錯誤(附上截圖)。 這個答案還說,即使我們沒有使用類似於代碼 Ac$omp&哨兵開始下一行, ifort 也不會給出任何錯誤。 (我沒有 ifort,也沒有自己嘗試過。)

使用 gfortran 編譯時出錯

我的問題:有沒有辦法(或任何編譯器標志)可以讓 gfortran 用代碼 A愉快地編譯? 如果 ifort 可以忍受它,那么 gfortran 不能嗎? 我不敢相信沒有編譯器指令可以覆蓋所有這些。 (這並不意味着我在質疑 gfortran 開發人員的能力和原則)

如果不更改源代碼,第一個問題的答案是否定的

你的第二個問題的答案是也許 目前,gfortran 不支持 Intel 擴展。 gfortran 是 GCC 的一部分,GCC 是開源軟件。 您可以下載該軟件。 添加一個新選項,例如-fIntel-openmp-syntax 完成此工作后,您提交的補丁可能會提交到源代碼存儲庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM