Я использую следующую функцию параллельного отображения, реализованную в PLINQ.
let parmap f (xs:list<_>) = xs.AsParallel().Select(fun x -> f x) |> Seq.toList
Я хочу улучшить свое ускорение на 4 ядрах, которые я не могу получить выше 2. Я обнаружил, что можно сделать настраиваемое разбиение на разделы, чтобы улучшить параллельную производительность. Но в основном я видел примеры C # и не знаю, как заставить его работать с F #. Следующее ничего не меняет, но я думаю, что это разделение по умолчанию, используемое TPL? Как я могу использовать здесь различные параметры (статические, динамические и т. Д.)?
let pmap_plinqlst_parts f (xs:list<_>) =
let parts = Partitioner.Create(xs)
parts.AsParallel().Select(fun x -> f x) |> Seq.toList
Parallel.For(Each)
более убедительно и легче настраивается (используяPartitioner
), чемPLINQ
. - person pad   schedule 04.06.2012