haskell - Haskell 中的并行计算

标签 haskell parallel-processing ghc

当我运行这个 Haskell 片段时,它只加载了 1 个 CPU。两个fg是无意义的,但它不应该在可用时加载两个 CPU 吗?编译为 ghc -O2 snippet.hs .

f x = 1 + (f $! x)
g x = 5 + (g $! x)

z = a `par` b `seq` a+b
        where
        a = f 3
        b = g 5

main = do
    print z

最佳答案

您需要使用线程选项进行编译,即ghc -O2 -threaded snippet.hs ,然后在命令行上传递可执行文件的核心数,如下所示,四个核心:

./snippet +RTS -N4

或者您可以让机器仅使用 -N 来选择内核数。 .

http://www.haskell.org/haskellwiki/Haskell_for_multicores

关于haskell - Haskell 中的并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12250167/

相关文章:

haskell - 为什么定义 MonadReader 需要 FunctionalDependency?

Haskell - 计算列表中某个值出现的次数

haskell - 如何在 WAI (Warp) 应用程序中执行 IO

haskell - 使用无点身份函数而不是通配符有优势吗?

python - concurrent.futures 的个别超时

在创建共享对象时,不能使用针对 `__TMC_END__' 的 Haskell 堆栈静态二进制重定位 R_X86_64_32

list - Haskell:将列表拆分为两个新列表的元组

c# - 如何在多线程中并行运行依赖任务?

parallel-processing - 并行处理真的可能吗?

haskell - 如何将所有零移掉?