2010-08-19 5 views
0

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

Я строю с -threaded, в моей Makefile:

 
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") 
] 
+0

Есть ли причина, чтобы не использовать бинарный инсталлятор Mac для GHC 6.12.3 (Lastest Haskell Platform?) Параллельная производительность значительно лучше. –

+0

только тот, который уже установлен на моем ноутбуке, а другой нет. Знаете ли вы что-нибудь, чтобы предположить, что это повлияет на это? (а не «сломанный». попробуйте другую версию.)?) –

ответ

5

РТС путь», "rts_thr_p"

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

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

См ticket #886

Смежные вопросы