了解适用于 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