Windows 上的多核 Haskell

发布于 2024-07-15 06:16:48 字数 1062 浏览 3 评论 0原文

我读过一些教程 Haskell 上。 但是,我无法让编译后的应用程序在 Windows(32 位) 上的多核(我有一个 Intel 四核)上运行。

我尝试了很多方法:

  • ghc -O2 --make A.hs -threaded
  • < a href="http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/29" rel="nofollow noreferrer">./real-par +RTS -N2
  • < a href="http://cgi.cse.unsw.edu.au/~dons/blog/2007/11/29" rel="nofollow noreferrer">./real-par +RTS -N4

但是没有运气。

编译后的应用程序仅在一个核心上 100% 运行。

有任何想法吗?

代码:

import Control.Parallel
import Control.Monad
import Text.Printf

fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = l `pseq` r `pseq` l+r
    where
    l = fib (n-1)
    r = fib (n-2)

main = forM_ [0..350] $ \i ->
        printf "n=%d => %d\n" i (fib i)

I've been reading a number of tutorials on Haskell. However, I have not been able to get the compiled application to run on a multicore (I have an Intel Quad Core) on windows (32 bit).

I have tried a number of things:

But no luck.

The compiled application runs 100% on one core only.

Any ideas?

Code:

import Control.Parallel
import Control.Monad
import Text.Printf

fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = l `pseq` r `pseq` l+r
    where
    l = fib (n-1)
    r = fib (n-2)

main = forM_ [0..350] $ \i ->
        printf "n=%d => %d\n" i (fib i)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

裸钻 2024-07-22 06:16:48

使用 par 而不是 pseq 似乎可以解决此问题。

Using par instead of pseq seems to fix it.

尾戒 2024-07-22 06:16:48

如果 vili 是正确的(我无法测试,因为我没有任何 MS 盒子),它可能与 这个错误

If vili is correct (I can't test as I don't own any MS boxes), it might be related to this bug

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文