parallel.For function
Have you tried not using explicit chunk sizes? Parallel.For does some fancy chunking (range-splitting) and load-balancing under the hood, which usually gives very good performance on it's own.

In other words, try a simpler solution first, e.g.,:

let mapInPlace (mapping : 'T -&gt; 'T) (array : 'T[]) : unit =
    Parallel.For (0, array.Length, fun i -&gt;
        array.[i] &lt;- mapping array.[i])
    |&gt; ignore


Another point -- if you're iterating over lists of 10000 elements, you should convert those lists to an array once, then call your iterative function however many times you need to. I suspect you're losing a non-trivial amount of performance from doing the list-to-array conversion repeatedly.