我使用以下 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