параллельный haskell (ghc 6.10.4) не принимает -N больше -N1 - PullRequest
0 голосов
/ 19 августа 2010

Я пытаюсь запустить параллельный код в GHC 6.10.4 (из MacPorts) на OS X 10.5

Я строю с помощью -threaded, в моем make-файле:

GHC=ghc -prof -auto-all -O -threaded

glicko: glicko.hs Lib.hs
        $(GHC) --make -main-is Glicko glicko.hs lib.hs

Когда я вызываю ./glicko +RTS -N или ./glicko +RTS -N1, код запускается, но, похоже, использует только один процессор. Если я вызываю как ./glicko +RTS -N2, то мне выдается справочное сообщение, которое документирует параметры командной строки; но документация предполагает, что это должно запустить программу.

Почему -N2 не работает?

Здесь больше информации о времени:

$ ./glicko +RTS --info
 [("GHC RTS", "YES")
 ,("GHC version", "6.10.4")
 ,("RTS way", "rts_thr_p")
 ,("Host platform", "i386-apple-darwin")
 ,("Host architecture", "i386")
 ,("Host OS", "darwin")
 ,("Host vendor", "apple")
 ,("Build platform", "i386-apple-darwin")
 ,("Build architecture", "i386")
 ,("Build OS", "darwin")
 ,("Build vendor", "apple")
 ,("Target platform", "i386-apple-darwin")
 ,("Target architecture", "i386")
 ,("Target OS", "darwin")
 ,("Target vendor", "apple")
 ,("Word size", "32")
 ,("Compiler unregisterised", "NO")
 ,("Tables next to code", "YES")
 ]

1 Ответ

5 голосов
/ 20 августа 2010

RTS way "," rts_thr_p "

Вы скомпилировали profiling и threading . Профилировщик работает только в многоядерном режимес 1 процессором (структуры данных профилирования во время выполнения еще не поддерживают потокобезопасность).

Скомпилируйте вашу программу без профилирования, и вы сможете использовать более -N1.

См. билет № 886

...