Spark overflow occurs when a fixed-size spark pool fills faster than Haskell execution contexts can consume it. Newly created sparks are then discarded, so they produce no parallel evaluation. section 13.4.3
Image mapping
A pixel-mapping strategy created 1,318,768 sparks, but only 10,163 were converted and 1,210,301 overflowed. The program therefore failed to compute the mapping in parallel. Grouping pixels into larger chunks reduced the count to 1,001 sparks, all converted and none overflowed. section 13.4.3
Avoid overflow by creating fewer sparks while giving each spark more work. parListChunk provides chunked list evaluation; parVectorChunk adapts it by converting a Vector to a list, applying rseq to each chunk, and converting the result back. section 13.4.3
