多线程for循环用于位图着色

时间:2018-07-25 21:37:50

标签: c++ multithreading

我在一个为位图着色的程序中有一个循环。看起来像这样:

for (int i = 0; i<1920; i++){
    for (int j = 0; j < 1080; j++){
        compute_pixel(i, j);
    }
}

我想通过使用8个CPU内核来加快速度,并为其分配不同的线程,每个线程一个像素,以便当我已经使用8个内核(工作在前8个像素)时,我可以分配第9个像素到完成工作的第一个核心。最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

这可能是OpenMP库的理想选择。这是一个使用它并行化for循环的示例:

#pragma omp parallel
#pragma omp for
for (i=0; i<N; i++) {
  // do something with i
}

您还可以将OpenMP与嵌套的for循环一起使用。在计算机上运行可能需要一些设置,但是一旦完成,就可以轻松地用于此类任务。

如果您想利用GPU,请查看OpenCLOpenGL