11 октября 2009 · Комментарий

Без заголовка

Именно так. Но есть и более простые случаи. К примеру, суммирование элементов массива в последовательной записи: res = 0 for i = 0 to n res = res + a[i] параллелизуется только с учетом законов ассоциативности. Что означает изменение порядка операций и значит может повлиять на ошибки округления чисел с плавающей точкой, что не всегда допустимо в расчетах. Т.е. вообще говоря, он не параллелизуется без явных указаний компилятору. Ну и другой случай - даже если последовательная запись допускает извлечение параллелизма, компилятор не всегда сможет это распознать. К примеру, если треугольную матрицу плотно упаковать в линейный массив, для экономии памяти, то компилятор потеряет весь параллелизм.

К записи · К обсуждению