使用 IBM SMP 伪指令(仅限 C)
注: 已不推荐使用 pragma 伪指令 #pragma ibm schedule ,在将来的发行版中可能会将其除去。 您可以使用相应的 OpenMP 伪指令或子句来获取相同的行为。
有关如何将不推荐的编译指示伪指令替换为相应的 OpenMP 伪指令的详细信息,请参阅 不推荐的伪指令。
IBM SMP 伪指令通过可数循环的并行化来利用共享内存并行性。 如果循环具有 可计数循环中描述的任何格式,那么该循环被视为可计数。 XL C 编译器提供了编译指示伪指令,您可以使用这些伪指令来改进编译器执行的自动并行化。 编译指示分为两大类:
- 为您提供对并行化的显式控制的编译指示。 使用这些编译指示来强制或禁止循环的并行化 (#pragma ibm sequential_loop) ,将特定并行化算法应用于循环 (#pragma ibm schedule) ,并使用关键部分来同步对共享变量的访问。
- 允许您提供有关特定可计数循环 (#pragma ibm independent_calls, #pragma ibm independent_loop, #pragma ibm iterations, #pragma ibm permutation) 的特征的编译器信息的编译指示。 编译器使用此信息对循环执行更高效的自动并行化。
Pragma 伪指令必须紧跟在它们应用的可计数循环之前。 可以将多个并行处理 pragma 伪指令应用于可数循环。 例如:
#pragma ibm independent_loop
#pragma ibm independent_calls
#pragma ibm schedule(static,5)
countable_loop某些编译指示伪指令彼此互斥,例如, parallel_loop 和 sequential_loop 伪指令。 如果为同一循环指定了互斥编译指示,那么最后指定的编译指示将应用于该循环。
其他编译指示 (如果对给定循环重复指定) 具有加法效应。 例如:
#pragma ibm permutation (a,b)
#pragma ibm permutation (c)等同于:#pragma ibm permutation
(a,b,c)有关 IBM SMP 伪指令的 pragma-by-pragma 描述,请参阅 XL C/C++ Compiler Reference中的 Pragma 伪指令以进行并行处理 。
