【问题标题】:OPenMP loop incrementOPenMP 循环增量
【发布时间】:2011-09-17 02:47:32
【问题描述】:

使用大于1的循环增量可以吗?

#pragma omp parallel for schedule(dynamic, 1000)
for (int i=0; i<100000; i+=10)
{
    // do something that uses i
}

谢谢。

【问题讨论】:

  • 为什么你认为这应该是个问题?

标签: c++ c openmp


【解决方案1】:

是的。

for 循环允许的形式是:

for (init-expr; test-expr; incr-expr) structured-block

incr_expr 是以下任何一个:

++var
var++
--var
var--
var += incr
var -= incr
var = var + incr
var = incr + var
var = var - incr

参见http://www.openmp.org/mp-documents/OpenMP3.1.pdf 第 40 页。

【讨论】:

    【解决方案2】:

    另一种思路是:

    #pragma omp parallel for schedule(dynamic, 1000)
    for (int i=0; i<100000; i+=10)
    {
        // do something that uses i
    }
    

    可以改写为

    #pragma omp parallel for schedule(dynamic, 1000)
    for (int j=0; j<10000; j++)
    {
        i = 10*j;
        // do something that uses i
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 2017-04-26
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      相关资源
      最近更新 更多