°C OpenMP C 和 C++ 语法

了解适用于 OpenMP 的 C 和 C++(并行编程框架)中的语法规则和语法扩展。

C.1 表示法

语法规则包括非终端的名称,后跟冒号,后跟单独的行上的替换替代项。

语法表达式术语 opt 指示该术语在替换中是可选的。

语法表达式术语optseq 等于带有以下附加规则的 term-seqopt

term-seq
术语
term-seqterm
term-seq,术语

C.2 规则

C 标准的第 6.1 节介绍了表示法。 此语法附录介绍了 OpenMP C 和 C++ 指令的基本语言语法的扩展。

/* in C++ (ISO/IEC 14882:1998) */

statement-seq
语句
openmp-directive
statement-seq 语句
statement-seq openmp-directive

/* 在 C90 (ISO/IEC 9899:1990) */

statement-list
语句
openmp-directive
 statement-list statement
statement-list openmp-directive

/* 在 C99 (ISO/IEC 9899:1999) */

block-item
声明
语句
openmp-directive

/* 标准语句 */

语句
openmp-construct

openmp-construct
parallel-construct
for-construct
sections-construct
single-construct
parallel-for-construct
并行段构造
master-construct
critical-construct
atomic-construct
有序结构

openmp-directive
barrier-directive
flush-directive

结构化块
语句

parallel-construct
并行指令 结构化块

parallel-directive
# pragma omp parallel parallel-clauseoptseqnew-line

平行子句
独特的平行子句
data-clause

独特的平行条款
if ( 表达)
num_threads ( 表达)

for-construct
for 指令迭代语句

for-directive
# pragma omp for for-clauseoptseqnew-line

for-clause
unique-for-clause
data-clause
nowait

unique-for-clause
ordered
schedule ( 日程类型)
schedule ( schedule-kind,表达式)

计划类型
static
dynamic
guided
runtime

sections-construct
sections-directive section-scope

sections-directive
# pragma omp sections sections-clauseoptseqnew-line

章节条款
data-clause
nowait

section-scope
{ section-sequence }

章节顺序
section-directiveoptstructured-block
章节序列 章节指令 结构化块

section-directive
# pragma omp section new-line

单个结构
单指令结构化块

single-directive
# pragma omp single single-clauseoptseqnew-line

single-clause
data-clause
nowait

parallel-for-construct
并行-用于-指令 迭代-语句

parallel-for-directive
# pragma omp parallel for parallel-for-clauseoptseqnew-line

parallel-for-clause
独特并行从句
针对条款的唯一性
data-clause

parallel-sections-construct
并行部分指令 部分范围

parallel-sections-directive
# pragma omp parallel sections parallel-sections-clauseoptseqnew-line

平行章节条款
独特的平行从句
data-clause

master-construct
主指令结构块

master-directive
# pragma omp master new-line

critical-construct
关键指令结构块

critical-directive
# pragma omp critical 地区词组选项新行

region-phrase
(标识符)

barrier-directive
# pragma omp barrier new-line

atomic-construct
原子指令表達式语句

atomic-directive
# pragma omp atomic new-line

flush-directive
# pragma omp flush flush-varsoptnew-line

flush-vars
(variable-list)

有序结构
有序指令结构化块

ordered-directive
# pragma omp ordered new-line

/* 标准声明 */

声明
线程私有指令

threadprivate-directive
# pragma omp threadprivate ( variable-list)new-line

data-clause
private ( variable-list)
copyprivate ( variable-list)
firstprivate ( variable-list)
lastprivate ( variable-list)
shared ( variable-list)
default ( shared )
default ( none )
reduction ( reduction-operator:variable-list)
copyin ( variable-list)

化简算子
 以下项之一:+ \* - & ^ | && ||

/* 在 C 中 */

variable-list
标识符
variable-list,标识符

/* in C++ */

variable-list
id-expression
variable-list,id-expression