-
Notifications
You must be signed in to change notification settings - Fork 24
Open
Description
I tried compiling the following code with ghc-9.2.8:
module Main (main) where
import Control.Parallel.Strategies
import GHC.Conc
import System.IO
import Text.Printf
sigmoid :: Double -> Double
sigmoid x = 1.0 / (1.0 + (exp (-x)))
genStuff :: [String]
genStuff = do
let ints = [0..]
doubles = map (\x -> fromIntegral x :: Double) ints
sigmoids = map (\x -> sigmoid x) doubles
strs = map (\x -> (printf "%.5F" x) ++ "\n") sigmoids
strs
main :: IO ()
main = do
hSetBuffering stdout LineBuffering
let stuff = genStuff `using` parBuffer numCapabilities rdeepseq
putStr (foldr (++) "" (take 100000 stuff))
And I compiled it with -threaded -rtsopts -eventlog and used threadscope to look at the results, and got this:
I'm pretty sure that it should be using all of the cores consistently, shouldn't it?
Metadata
Metadata
Assignees
Labels
No labels