मैं समानांतर में किसी सरणी में आइटम्स का मूल्यांकन करने की रणनीति लिखना चाहता हूं। ऐसा करने के लिए पुरानी रणनीतियों में parArr
था (see here)। लेकिन यह नए नियंत्रण में नहीं मिला है। Parallel.Strategies मॉड्यूल।हास्केल सरणी रणनीतियों को कैसे लिखें
उदा। समानांतर सूची मूल्यांकन: amap f myArr `using` parArr rdeepseq
, जहां amap
Data.Array.Base से है और तत्वों (क्रमिक रूप से) से प्रत्येक के लिए एक समारोह लागू होता है: map f myList `using` parList rdeepseq
मैं की तरह कुछ करने के लिए सक्षम होने के लिए चाहते हैं।
निम्नलिखित काम करने लगता है लेकिन मुझे आश्चर्य है कि यह सही कर रहा है, और जानना चाहता हूं कि मैं अपना खुद का parArr
कैसे परिभाषित कर सकता हूं।
यह काम करता है: amap ((+1) `using` rpar) $ Array.array (0,4) [(0,10),(1,20),(2,30),(3,40),(4,50)]
@ डेव 4420: संपादन के लिए धन्यवाद :-) – vis
क्या आप वाकई काम करते हैं? क्योंकि 'rpar'' का उपयोग करके '' (+1)' काफी अजीब है। यह समानांतर में '(+1)' अभिव्यक्ति का मूल्यांकन करेगा, जो अधिक समझ में नहीं आता है क्योंकि '(+1) 'एक लैम्ब्डा-अभिव्यक्ति है, इस प्रकार यह पहले से ही डब्ल्यूएचएनएफ में है और मूल्यांकन के लिए कुछ भी नहीं बचा है। हो सकता है कि आप 'amap ((' 'rpar का उपयोग कर) हो। (+ 1))' ', नहीं? – Rotsor
क्यों 'रेपा' या 'वेक्टर' का उपयोग न करें, जिसमें पहले से ही समांतर रणनीतियां हैं, और सामान्य रूप से अधिक लचीली हैं? –