_transpose :: (
    NFData a
    ) => Boxed.Vector (Boxed.Vector a)  -- ^ Vector of vectors to transpose
      -> Boxed.Vector (Boxed.Vector a)
_transpose v = 
    let outerS = Boxed.length v
        innerS = Boxed.length $ v Boxed.! 0
        l = Boxed.toList $ Boxed.generate innerS (\i -> Boxed.generate outerS $ \j -> v Boxed.! j Boxed.! i)
        lp = l `Parallel.using` Parallel.parListChunk (innerS `div` 8) Parallel.rdeepseq
    in  Boxed.fromList lp
_transpose :: (
    NFData a
    ) => Boxed.Vector (Boxed.Vector a)  -- ^ Vector of vectors to transpose
      -> Boxed.Vector (Boxed.Vector a)
_transpose v = 
    let outerS = Boxed.length v
        innerS = Boxed.length $ v Boxed.! 0
        l = Boxed.toList $ Boxed.generate innerS (\i -> Boxed.generate outerS $ \j -> v Boxed.! j Boxed.! i)
        lp = l `Parallel.using` Parallel.parListChunk (innerS `div` 8) Parallel.rdeepseq
    in  Boxed.fromList lp
_transpose v = 
    let outerS = Boxed.length v
        innerS = Boxed.length $ v Boxed.! 0
        l = Boxed.toList $ Boxed.generate innerS (\i -> Boxed.generate outerS $ \j -> v Boxed.! j Boxed.! i)
        lp = l `Parallel.using` Parallel.parListChunk (innerS `div` 8) Parallel.rdeepseq
    in  Boxed.fromList lp