के साथ मल्टीकोर समांतरता script पर काम कर रहा था जिसमें मुझे mapM
Async.mapConcurrently
के साथ mapM
को स्वैप करके मेरी मशीन में एकाधिक प्रोसेसर का लाभ उठाने की उम्मीद थी।स्टैक runghc
उस उदाहरण में कोई गति वृद्धि नहीं देखते हुए, मैं सत्यापित करना चाहता था कि runghc
वास्तव में एकाधिक कोर का उपयोग कर सकता है।
import Control.Concurrent
main = print =<< Control.Concurrent.getNumCapabilities
अगर मैं फ़ाइल संकलन इस प्रकार है::
stack ghc -- -threaded Foo.hs
और फिर इसे चलाने के इस प्रकार है:
एक फ़ाइल Foo.hs
को देखते हुए
./Foo
यह परिणाम देता है 1
। इसकी उम्मीद है, क्योंकि आरटीएस विकल्पों की आपूर्ति नहीं की गई है। (nproc
साथ सहमत हो)
./Foo +RTS -N
संख्या 6
देता है, वहाँ के रूप में मेरी मशीन में 6 प्रोसेसर हैं: बजाय इसे चल रहा है इस प्रकार है।
हालांकि, जब मैं बहुत की तरह "व्याख्या मोड" में स्क्रिप्ट चलाने:
Running /home/kostmo/.stack/programs/x86_64-linux/ghc-nopie-8.0.2/bin/ghc-pkg --no-user-package-db list --global exited with ExitFailure 1
ghc-pkg: the flag -N requires the program to be built with -threaded
यह ढेर के साथ कई कोर का उपयोग करना संभव है ":
GHCRTS="-N" stack runghc Foo.hs
यह निम्न त्रुटि पाठ पैदावार स्क्रिप्ट "?