Распараллелить фрагмент кода, используя тягу CUDA - PullRequest
1 голос
/ 30 марта 2019

Я использую API-интерфейсы CUDA для распараллеливания последовательного кода.Тем не менее, я застрял на эффективной реализации части моего кода.Пожалуйста, помогите мне с эффективной реализацией 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;
    }
}

РЕДАКТИРОВАТЬ: я знаю, что второй if по сути argmax, но первый if, как обновление каждой позиции на основе значения функции.Я не могу понять, как реализовать оба в одном функторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...