سؤال

لقد قرأت عددًا من دروس على هاسكل.ومع ذلك، لم أتمكن من تشغيل التطبيق المترجم على معالج متعدد النواة (لدي Intel Quad Core) ويندوز (32 بت).

لقد حاولت عددا من الأشياء:

ولكن لا حظ.

يعمل التطبيق المترجم بنسبة 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)
هل كانت مفيدة؟

المحلول

إذا كان vili صحيحًا (لا يمكنني إجراء الاختبار لأنني لا أملك أيًا من صناديق MS)، فقد يكون الأمر مرتبطًا بـ هذا الخطأ

نصائح أخرى

يبدو أن استخدام par بدلاً من pseq يعمل على إصلاح المشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top