Неожиданный результат параллельного сокращения SIMD OpenMP на M1C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Неожиданный результат параллельного сокращения SIMD OpenMP на M1

Сообщение Anonymous »

У меня был неожиданный результат от сокращения параллельного simd openmp на Apple M1 с Clang 17.0.6 и -O3, которого я никогда не встречал с gcc. В конечном итоге проблема сводится к следующему примеру:

Код: Выделить всё

std::size_t size = 1024;
std::vector vec(size);

double total = 0.0;
#pragma omp parallel for simd reduction(+ : total) schedule(static)
for (std::size_t itr_x = 0; itr_x < size; ++itr_x)
{
double val = 1;
vec[itr_x] = val; // without this line `total` gives 1024 as expected
total += val;
}
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78433103/unexpected-result-from-openmp-parallel-simd-reduction-on-m1[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»