标签: parallel-for

Parallel.Foreach维护收集顺序?

使用时有没有办法保证订单Parallel.ForEach()?我正在循环的集合需要保持它的顺序,但我正在寻找一些性能改进.

parallel-processing asp.net-4.0 task-parallel-library parallel-for

3
推荐指数
3
解决办法
8730
查看次数

OpenCV parallel_for不使用多个处理器

我刚刚在新的OpenCV 2.4.3中看到他们添加了一个通用的parallel_for.所以按照这个例子,我试着自己实现它.我用我的代码完成了所有功能,但是当我按照常规"for"命令以典型的串行方式对其处理时间进行计时时,结果显着更快,或者通常稍慢一点!

我想也许这与我推入向量或其他东西有关(我对并行处理我是一个非常大的菜鸟),所以我设置了一个只运行一个大数字的测试循环,它仍然无法正常工作.

码:

class Parallel_Test : public cv::ParallelLoopBody
{
private:
double* const mypointer;



public:
Parallel_Test(double* pointer)
: mypointer(pointer){

}
     void operator() (const Range& range) const
{
         //This constructor needs to be here otherwise it is considered an abstract class.
//             qDebug()<<"This should never be called";
}

    void operator ()(const cv::BlockedRange& range) const
    {

        for (int x = range.begin(); x < range.end(); ++x){

            mypointer[x]=x;

        }


    }



};


 //TODO Loop pixels in parallel
     double t = (double)getTickCount();

    //TEST PARALELL …
Run Code Online (Sandbox Code Playgroud)

opencv tbb parallel-for

3
推荐指数
1
解决办法
4634
查看次数

具有浮点范围的OpenMP并行

我有以下程序:

int main(){
   double sum=0;
   #pragma omp parallel for reduction(+:sum)
   for(double x=0;x<10;x+=0.1)
   sum+=x*x;
}
Run Code Online (Sandbox Code Playgroud)

当我编译它时,我得到错误invalid type for iteration variable ‘x’.

我认为这意味着我只能将parallel for构造应用于基于整数的循环.但是我的循环的内部确实依赖于它是浮点数.

有没有办法说服OpenMP这样做?有推荐的替代方法吗?

floating-point parallel-processing openmp parallel-for

3
推荐指数
1
解决办法
2869
查看次数

Parallel.For与for循环相反

我正在尝试并行编程.我有一个正常的循环:

for (int i = 0; i < 100000; i++)
{
    Console.WriteLine("Thread ID: {0} and i is " + i + " Time Elapsed: " + sw.Elapsed,
        Thread.CurrentThread.ManagedThreadId);
}
Run Code Online (Sandbox Code Playgroud)

这个循环只是将数字增加到100000

我可以使用此for循环并将其转换为Parallel.For循环以将数字计数到100000但是并行使用所有CPU吗?

此外,使用a时Parallel.For,需要哪些参数?你会如何以一种非常基本的方式使用它?

c# parallel-processing parallel-for c#-4.0

2
推荐指数
1
解决办法
3008
查看次数

我可以在parfor(MATLAB)上发送和接收工作人员之间的数据吗?

我想知道在执行parfor时是否可以在节点之间交换(发送和接收)数据.我想要完成的是这样的事情:

parfor i = 1:4

    %Perform a computation on each column of a 4x4 matrix on 4 different workers (each worker takes one column).

    %Make Worker #1 send its data to Worker #3, Worker #3 to Worker #1, Worker #2 ro Worker #4 and Worker #4 to Worker #2.

    %Make other computations on the data received from the other workers

end
Run Code Online (Sandbox Code Playgroud)

我想在不离开parfor的情况下执行所有这些计算.我可以使用任何MPI命令吗?这可以实现吗?如果是这样,我怎么能实现这个目标?谢谢!

parallel-processing matlab multithreading mpi parallel-for

2
推荐指数
1
解决办法
525
查看次数

C++除了使用tbb :: task_group之外,如何同时运行三个不同的parallel_for函数?

我有代码,我必须并行地运行parallel_for(彼此独立).

代码是这样的:

tbb::parallel_for(range1,func1());//first

tbb::parallel_for(range2,func2());//second

tbb::parallel_for(range3,func3());//third
Run Code Online (Sandbox Code Playgroud)

我尝试过使用task_group.还有其他方法吗?

c++ multithreading tbb parallel-for

2
推荐指数
1
解决办法
168
查看次数

C#Parallel.For

无论如何都要增加一个Parallel.For一旦启动就会做的循环次数?示例如下:

var start = 0;
var end = 5;
Parallel.For(start, end, i =>
{
    Console.WriteLine(i);
    end = 10;
});
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

松鸦

c# parallel-for

1
推荐指数
1
解决办法
3210
查看次数

C++:如何在同一范围内多次使用parallel-for宏?

我正在使用本地函数定义来运行代码块N次,就像C#的并行版本一样,但是f当我在同一范围内使用两个或更多个函数时,它会给函数带来多个定义错误.如何在相同范围内每次使用后逐步更改功能名称,如f1,f2,f3,..


定义:

#ifndef PARALLEL_FOR
#define PARALLEL_FOR(N,O) \
                        struct LocalClass                                                           \
                        {                                                                           \
                            void operator()(int i) const O                                      \
                        } f;                                                                        \
                        std::thread threads[N];                                                     \
                        for(int loopCounterI=0; loopCounterI<N; loopCounterI++)                     \
                        {                                                                           \
                            threads[loopCounterI]=std::thread(f,loopCounterI);                      \
                        }                                                                           \
                        for(int loopCounterI=0; loopCounterI<N; loopCounterI++)                     \
                        {                                                                           \
                            threads[loopCounterI].join();                                           \
                        }                                                                           \

#endif
Run Code Online (Sandbox Code Playgroud)

用法:

PARALLEL_FOR(
        5,
        {std::cout<<100*i<<std::endl;}
);
Run Code Online (Sandbox Code Playgroud)

输出:

0
300
200
100
400
Run Code Online (Sandbox Code Playgroud)

通常加入{\}\将解决随之而来的电话,但如果我这样做了嵌套并行?

c++ macros parallel-for

0
推荐指数
1
解决办法
144
查看次数