Visual Studio 2012 C++使用 "parallel_for_each" 的多线程

Visual Studio 2012 C++ multi-threading using "parallel_for_each"

本文关键字:for each 多线程 Studio parallel C++ 使用 Visual 2012      更新时间:2023-10-16

我制作了一个具有多次迭代的模拟代码。我想减少计算时间。所以我决定尝试多线程,现在我遇到了一个大麻烦。

由于代码太长,我在下面做了一个示例代码

double * INPUT1=function1();
int INPUT2=10;
for(int i=0; i<100; i++){
  function2(INPUT1[i], INPUT2);
}

现在我想把循环的标准改为"parallel_for_each"循环,我认为这是最快的(使用GPU)。基本上,我的问题是,如何插入来自main的输入。

我怀疑parallel_for_each是否真的在使用GPU。我认为它在一个普通的CPU上使用多个内核。您的案例可以类似于以下代码片段进行重写:

// Example
#include <iostream>
#include <ppl.h>
#include <vector>
using namespace concurrency;
void function2(double i, int input2)
{
    std::cout << i*input2 << " ";
}
std::vector<double> function1()
{
    return{ 1,2,3,4,5,6,7,8,9,10 };
}
int main()
{
    std::vector<double> input = function1();
    int input2 = 10;
    parallel_for_each(input.begin(), input.end(), [&input2](double i) {function2(i, input2); });
    std::cin.ignore();
}

CCD_ 2生活在CCD_ 4的CCD_。若要获取有关如何使用此构造的详细信息,可以查阅Microsoft文档。一般来说,一旦开始使用并行构造,请确保只对每次迭代完全独立工作的函数进行并行化。如果你对并行化很认真,你也应该看看openmp。