अद्यतन अब मैं एक डुअल कोर मशीन पर 1.7x speedup की तुलना में बेहतर हासिल करते हैं।
मैंने सोचा कि मैं एक समांतर सॉर्टर लिखने की कोशिश करूंगा जो .NET 2.0 में काम करता है (मुझे लगता है, मुझे इस पर जांचें) और यह ThreadPool
के अलावा कुछ भी उपयोग नहीं करता है। सुंदर इष्टतम के करीब 2x मैं के लिए उम्मीद की गई थी - - इस माहौल में
Time Parallel Time Sequential
------------- ---------------
2854 ms 5052 ms
2846 ms 4947 ms
2794 ms 4940 ms
... ...
2815 ms 4894 ms
2981 ms 4991 ms
2832 ms 5053 ms
Avg: 2818 ms Avg: 4969 ms
Std: 66 ms Std: 65 ms
Spd: 1.76x
मैं एक 1.76x speedup मिला:
-
यहाँ एक 2,000,000 तत्व सरणी छँटाई के परिणाम हैं 2,000,000 यादृच्छिक Model
ऑब्जेक्ट्स
- तुलनात्मक प्रतिनिधि द्वारा ऑब्जेक्ट्स को सॉर्ट करना जो दो
DateTime
गुणों की तुलना करता है।
- मोनो JIT कम्पाइलर संस्करण 2.4.2.3
- मैक्स ओएस एक्स 10.5.8 2.4 GHz इंटेल कोर 2 डुओ
पर इस बार मैं Ben Watson's QuickSort in C# इस्तेमाल किया।
QuickSortSequential:
QuickSortSequential (beg, l - 1);
QuickSortSequential (l + 1, end);
करने के लिए:: मैं से अपने QuickSort
भीतरी पाश बदल
QuickSortParallel:
ManualResetEvent fin2 = new ManualResetEvent (false);
ThreadPool.QueueUserWorkItem (delegate {
QuickSortParallel (l + 1, end);
fin2.Set();
});
QuickSortParallel (beg, l - 1);
fin2.WaitOne (1000000);
fin2.Close();
(। वास्तव में, कोड में मैं एक छोटे से लोड संतुलन कि मदद करने के लिए प्रतीत होता है करते हैं)
मैंने पाया कि इस समानांतर संस्करण को चलाने से केवल सरणी में 25,000 से अधिक आइटम होते हैं (हालांकि, कम से कम 50,000 मेरे प्रोसेसर को सांस लेने देता है)।
मैंने कई सुधार किए हैं क्योंकि मैं अपनी छोटी दोहरी कोर मशीन पर सोच सकता हूं। मुझे 8-रास्ते राक्षस पर कुछ विचारों को आजमाने की इच्छा होगी। साथ ही, यह काम थोड़ा 13 "मैकबुक चल रहा है मोनो पर किया गया था। मुझे उत्सुकता है कि दूसरों को सामान्य .NET 2.0 इंस्टॉल पर किराया कैसे मिलता है।
इसकी सभी बदसूरत महिमा में स्रोत कोड यहां उपलब्ध है: http://www.praeclarum.org/so/psort.cs.txt। मैं कर सकता हूं यह साफ है कि वहाँ कोई दिलचस्पी है या नहीं।
हैं (जैसा कि सीपीयू कैश और मुख्य राम के सापेक्ष गति, कि अब तक रैम और समय मर्ज प्रकार की खोज की थी के रूप में टेप के रिश्तेदार गति बंद नहीं है, शायद हम एक तरह से फिर से विलय का उपयोग शुरू कर देना चाहिए) सॉर्टिंग स्थिर होना चाहिए (बराबर तत्व अपना मूल क्रम रखते हैं), या यदि तुलना महंगा है (कम तुलना), [mergesort] (http://www.martinstoeckli.ch/csharp/parallel_mergesort.html) एल्गोरिदम एक अच्छा है Quicksort के लिए विकल्प। – martinstoeckli