使用不带c $ omp&指令的gfortran进行编译

问题描述

此问题与使用gfortran -fopenmp编译支持OpenMP的Fotran77(与某些C库结合)固定形式的代码有关。

This answer讨论了在所需列超过72的情况下继续到下一行时,在下一行中使用的具有OpenMP功能的代码的正确指令是c$omp&标记。例如,

代码A

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

是不正确的固定格式Fotran77代码部分。

this webpagethis answer表示正确的格式是

代码B

C$OMP PARALLEL SHARED(Lm,C$OMP& iA_q)

但是,我需要在其中使用代码A (现在不问我,我可以解释一下是否有人对此感兴趣),这使gfortran编译器出现错误(附有屏幕截图)。 This answer还说,即使我们没有使用与{strong>代码A 类似的c$omp&标记开始下一行,ifort也不会给出任何错误。 (我没有ifort,也没有亲自尝试过。)

Error compiling with gfortran

我的问题:有没有一种方法(或任何编译器标记)可以使我使用代码A 来使gfortran顺利编译?如果ifort可以接受,那么gfortran也可以吗?我不敢相信没有编译器指令可以覆盖所有这些。 (这并不意味着我在质疑gfortran开发人员的能力和原则)

解决方法

在不更改源代码的情况下,第一个问题的答案是

第二个问题的答案是也许。目前,gfortran不支持Intel扩展。 gfortran是GCC(开源软件)的一部分。您可以下载该软件。添加一个新选项,例如-fIntel-openmp-syntax。完成这项工作后,您提交的补丁可能会提交到源代码存储库中。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...