Sun Studio 12:C 用户指南

调度控制

Sun ISO C 编译器支持多种 pragma,这些 pragma 可与 taskloop pragma 配合使用,以控制给定循环的循环调度策略。此 pragma 的语法是:

#pragma MP taskloop schedtype (scheduling_type)

此 pragma 可用来指定要用来调度并行化循环的特定 scheduling_typeScheduling_type 可为以下类型之一:


#pragma MP taskloop maxcpus(4)
#pragma MP taskloop schedtype(static)
    for (i=0; i<1000; i++) {
...
}

在以上示例中,四个处理器中的每个处理器将处理循环的 250 次迭代。


#pragma MP taskloop maxcpus(4)
#pragma MP taskloop schedtype(self(120))
for (i=0; i<1000; i++) {
...
}

在以上示例中,分配给每个参与处理的处理器的迭代次数按工作请求顺序依次为:

120、120、120、120、120、120、120、120、40。


#pragma MP taskloop maxcpus(4)
#pragma MP taskloop schedtype(gss(10))
for (i=0; i<1000; i++) {
...
}

在以上示例中,分配给每个参与处理的处理器的迭代次数按工作请求顺序依次为:

250、188、141、106、79、59、45、33、25、19、14、11、10、10、10。


#pragma MP taskloop maxcpus(4)
#pragma MP taskloop schedtype(factoring(10))
for (i=0; i<1000; i++) {
...
}

在以上示例中,分配给每个参与处理的处理器的迭代次数按工作请求顺序依次为:

125、125、125、125、62、62、62、62、32、32、32、32、16、16、16、16、10、10、10、10、10、10。