次の形式の Parallel.ForEach 式を作成します。
let low = max 1 (k-m)
let high = min (k-1) n
let rangesize = (high+1-low)/(PROCS*3)
Parallel.ForEach(Partitioner.Create(low, high+1, rangesize), (fun j ->
let i = k - j
if x.[i-1] = y.[j-1] then
a.[i] <- b.[i-1] + 1
else
a.[i] <- max c.[i] c.[i-1]
)) |> ignore
エラーが表示されます: メソッド 'ForEach' に一致するオーバーロードがありません。しかし、私はParallel.ForEach<TSource>
メソッド ( Partitioner<TSource>, Action<TSource>
) を使用しており、それは私には正しいようです。何か不足していますか?
編集済み:以下のコードと同じ結果を得ようとしています(パーティショナーを使用していません):
let low = max 1 (k-m)
let high = min (k-1) n
let rangesize = (high+1-low)/(PROCS*3)
let A = [| low .. high |]
Parallel.ForEach(A, fun (j:int) ->
let i = k - j
if x.[i-1] = y.[j-1] then
a.[i] <- b.[i-1] + 1
else
a.[i] <- max c.[i] c.[i-1]
) |> ignore