标签: 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个像素到完成工作的第一个核心。最好的方法是什么?
答案 0 :(得分:1)
这可能是OpenMP库的理想选择。这是一个使用它并行化for循环的示例:
#pragma omp parallel #pragma omp for for (i=0; i<N; i++) { // do something with i }
您还可以将OpenMP与嵌套的for循环一起使用。在计算机上运行可能需要一些设置,但是一旦完成,就可以轻松地用于此类任务。
如果您想利用GPU,请查看OpenCL和OpenGL。