使用CUDA推力并行化代码段

时间:2019-03-30 07:01:34

标签: parallel-processing cuda thrust

我正在使用CUDA推力API来并行化串行代码。但是,我一直坚持有效执行部分代码。请为我提供以下代码的高效C ++ CUDA实现。

for(int i=0; i<n; i++)
{
    double f_value = func(agents[i].position); //input is thrust::vector
    if(f_value < agents[i].best_value)
    {
       agents[i].best_value = f_value;
       agents[i].best_position = agents[i].position;
    }
    if(f_value < global_best_val)
    {
        global_best_val = f_value;
        global_best_pos = agents[i].position;
    }
}

EDIT:我知道第二个if本质上是argmax,但是第一个if喜欢根据函数值更新每个位置。我无法弄清楚如何在单个函子中同时实现两者。

0 个答案:

没有答案