У меня большой массив в памяти 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 / тяги?