Как обеспечить согласованность данных с тягой? - PullRequest
0 голосов
/ 29 апреля 2020

У меня большой массив в памяти CUDA, и в конце вычислений я собираюсь уменьшить его до 2 гораздо меньших массивов в операции, которая может выглядеть следующим образом

struct MyClass{
    double* result1;
    double* result2;
    double *input;
    size_t result1_size, result2_size;

    __host__ __device__
    auto operator()(size_t pos) const{
        auto &v=input[pos];
        result1[pos%result1_size]+=v;
        result2[pos%result2_size]+=v;
    }       
};

I ' Я собираюсь запустить это внутри transform_reduce function

Поскольку этот код будет выполняться параллельно и возникнут конфликты чтения / записи, я считаю, что содержимое result1 и result2 будет неопределенным.

Как правильно выполнить такую ​​операцию с помощью CUDA / тяги?

...