OpenMP子句和括号可以在代码中同时存在。嵌套的OpenMp子句有任何编码风格的规定吗?
例如:
#pragma omp parallel
for (int i = 0; i < N; i++) {
code1();
#pragma omp for // Should this line be intended?
for (int j = 0; j < M; j++) {
code2();
#pragma omp critical {
code3(); // Should this block and brackets be intended?
}
}
code4();
}
答案 0 :(得分:0)
从OpenMP的角度来看,没有关于如何缩进代码的真正指南。
我编写代码的方式如下:
#pragma omp parallel
for (int i = 0; i < N; i++) {
code1();
#pragma omp for // Should this line be intended?
for (int j = 0; j < M; j++) {
code2();
#pragma omp critical
{ // this curly brace needs to go on its own line
code3(); // Should this block and brackets be intended?
}
}
code4();
}
因此,编译指示从第一列开始,并且基本语言代码遵循您使用的任何样式。原因是,如果删除所有OpenMP编译指示,您仍然会获得“漂亮的”基础语言代码。
我似乎还记得,编译器编译指示必须在第一列中包含其“#”。由于我不确定ISO C / C ++是否真正需要它,因此我将其保留为其他内容以更正我的记忆。我最近没有看到任何编译器可以执行它。