Visual Studio 2012 C++使用 "parallel_for_each" 的多线程
Visual Studio 2012 C++ multi-threading using "parallel_for_each"
我制作了一个具有多次迭代的模拟代码。我想减少计算时间。所以我决定尝试多线程,现在我遇到了一个大麻烦。
由于代码太长,我在下面做了一个示例代码
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。
相关文章:
- C++ 中用于二维数组的 for-each 循环
- 计算 fib(n) 的次数称为 FOR EACH n
- 支持自定义 const 本机C++容器类的"for each"
- C++ for-each 语句触发"vector iterators incompatible"断言失败:this->_Getcont() == 0
- 为什么我的矢量中的项目在 C++ 中的 for-each 循环期间不会改变?
- 当循环返回"for each"项的 nullptr 时?
- 正确使用C++ 'for each'选项
- "for each"能保证使用更改数组吗?
- 基于范围的循环与 for-each 循环有何不同
- C++:从"for each"循环中的映射中删除值
- 将函数应用于std::map值,其中包含for each和lambda函数
- 正在擦除for(-each)自动循环中的项目
- g++ 4.4.7 -std=gnu++0x 应该编译"for each"结构吗?
- 将循环转移到C++03 for each
- 在 for-each 循环中使用 'auto' 时是否需要添加'const'?
- C++中的"for each"循环如何知道数组的长度
- 基本c++: for-each循环
- 如何使c++中的for each循环函数与自定义类一起工作
- 如何使用for-each循环来美化析构函数
- for-each 循环生成错误,但 for(it=begin()...在遍历 std::map 包含 unique_ptr 时不会