В haskell, данный у меня есть функция вызвать в следующей форме: foo a b
, где a
не зависит от b
и наоборот. Кажется, что можно автоматически обнаружить, что a
и b
могут быть оценены параллельно, но это, похоже, не имеет места в GHC. Вместо этого строятся как par
, которые необходимо использовать для обозначения того, что можно оценить параллельно.Автоматический параллелизм в Haskell
Итак, почему не может произойти автоматическое распараллеливание в haskell? Или, если это уже сделано, зачем существуют конструкции вроде par
?
Проблема с автоматическим параллелизмом заключается в том, что она добавляет накладные расходы, и очень сложно автоматически определить, приносит ли польза или нет параллельная оценка двух выражений. –
См. Также [Data Parallel Haskell] (http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell). –
@ PetrPudlák Итак, проблема не в том, что принцип не работает, но что он не такой большой выигрыш или даже может стать медленнее? – Kritzefitz