Parallelize poking

This commit is contained in:
2022-06-25 14:18:53 +01:00
parent 81b1fa5b5e
commit dc78561c20
2 changed files with 6 additions and 4 deletions
+5 -4
View File
@@ -20,6 +20,7 @@ import qualified Data.Vector.Unboxed.Mutable as UMV
import qualified Data.Vector.Mutable as MV
import qualified Data.Vector.Fusion.Stream.Monadic as VS
import Control.Monad.Primitive
import qualified Control.Monad.Parallel as MP
pokeVerxs
:: MV.MVector (PrimState IO) FullShader
@@ -105,10 +106,10 @@ pokeTopPrism :: Int -> Ptr Float -> Ptr GLushort
-> IO ()
pokeTopPrism size ptr iptr ieptr counts svs = do
nv <- UMV.unsafeRead counts 0
-- MP.bindM3 (\_ _ _ -> return ())
UV.mapM_ (pokeTopPrismIndex nv iptr counts) (memoTopPrismIndices V.! size)
UV.mapM_ (pokeTopPrismEdgeIndex nv ieptr counts) (memoTopPrismEdgeIndices V.! size)
VS.mapM_ (pokeJustV ptr counts) (VS.fromList svs)
MP.bindM3 (\_ _ _ -> return ())
(UV.mapM_ (pokeTopPrismIndex nv iptr counts) (memoTopPrismIndices V.! size))
(UV.mapM_ (pokeTopPrismEdgeIndex nv ieptr counts) (memoTopPrismEdgeIndices V.! size))
(VS.mapM_ (pokeJustV ptr counts) (VS.fromList svs) )
pokeTopPrismEdgeIndex :: Int -> Ptr GLushort
-> UMV.MVector (PrimState IO) Int