Влияние рабочих элементов на вычисления - PullRequest
0 голосов
/ 01 марта 2012

Я знаю, что количество рабочих элементов влияет на время выполнения, но следует ли ожидать, что результаты будут немного отличаться при использовании различного количества рабочих элементов при многократном запуске ядра? Спасибо

1 Ответ

0 голосов
/ 03 марта 2012

Если вы получите другие результаты , значит, в вашем коде есть ошибка.Если вы просто наберете norm+=element*element; для глобальной переменной norm, произойдет то, что некоторые потоки делают это одновременно, и часть вашей нормы теряется.

Чтобы упростить задачу, это даже происходиткогда два рабочих элемента увеличивают один и тот же счетчик, a++.Оба читают текущее значение a, оба увеличивают его до a+1, и оба записывают a+1 обратно в регистр.Таким образом, вы получите a+1 вместо a+2.То, что происходит, похоже на ваш вектор.

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