tim*_*tim 6 fortran shared openmp
嘿那里,我在OpenMP中有一个很长的共享变量列表,所以我必须在fortran中拆分行并使用"&" - 语法来确保线条粘在一起!
像这样的东西:
!$OMP PARALLEL DEFAULT(private) SHARED(vars....,
& more_vars...,
& more_vars...
& )
Run Code Online (Sandbox Code Playgroud)
在没有OpenMP的情况下进行编译时会出现错误,因为只有第一个被识别为注释!现在的问题是我不能添加"!" 在前面有"&"的行前面,以支持在没有OpenMP的情况下进行编译:
!$OMP PARALLEL DEFAULT(private) SHARED(vars....,
! & more_vars...,
! & more_vars...
! & )
Run Code Online (Sandbox Code Playgroud)
因为它不再用OpenMP编译了......但是我想在一个代码中支持两种编译......有关如何做的任何建议吗?
您没有使用正确的语法.如果您查看OpenMP V3.0规范,第2.1.2节"自由源表单指令",您将看到以下内容:
只要前缀只有空格(空格和制表符),哨兵就可以出现在任何列中.它必须显示为单个单词,没有中间字符.Fortran自由格式行长度,空格和延续规则适用于指令行.初始指令行必须在标记之后有一个空格.在指令内放置任何注释之前,续行指令行必须有一个&符作为行上的最后一个非空白字符.延迟指令行可以在指令标记之后具有符号,并且在&符号之前和之后具有可选的空格.
所以正确的形式应该是:
!$OMP PARALLEL DEFAULT(private) SHARED(vars...., &
!$OMP& more_vars..., &
!$OMP& more_vars... &
!$OMP& )
Run Code Online (Sandbox Code Playgroud)
对于固定形式,它是相同类型的东西.您使用OMP标记开始每一行,并确保连续行在第6列中具有非空白和非零字符.