मैं टेराबाइट-आकार की सिग्नल फ़ाइलों पर एक एफएफटी की गणना को समानांतर करने की कोशिश कर रहा हूं। अभी इस तरह के एफएफटी एक ओपन-सोर्स लाइब्रेरी का उपयोग करते हुए कई घंटे लगते हैं, यहां तक कि सबसे तेज जीपीयू मेरे पास CUDA के माध्यम से चल रहा है। मैं इस प्रक्रिया के अनुरूप ढलने की कोशिश कर रहा हूं। बहुत ही बुनियादी शब्दों में, Hadoop निम्नलिखित तरीके से किसी भी सर्वर नोड पर एक समस्या वितरित करता है:
• आप अपनी इनपुट फ़ाइल को (मुख्य, मूल्य) जोड़े में विभाजित करते हैं।
• इन जोड़ियों को एक "मैप" एल्गोरिथ्म में खिलाया जाता है, जो आपके (कुंजी, मूल्य) जोड़े को कुछ अन्य (कुंजी, मूल्य) जोड़े में बदल देता है जो आप मानचित्र के अंदर डालते हैं।
• फ्रेमवर्क तब मैप्स से सभी (कुंजी, मूल्य) आउटपुट एकत्र करता है और उन्हें कुंजी द्वारा सॉर्ट करता है, साथ ही एकल जोड़ी के लिए एक ही कुंजी के साथ मूल्यों को एकत्र करता है, इसलिए आप के साथ समाप्त होता है (कुंजी, सूची (value1, value2), ..)) जोड़े
• इन जोड़ियों को फिर एक "रिड्यूस" एल्गोरिथ्म में खिलाया जाता है, जो बदले में आपके अंतिम परिणाम (एक फ़ाइल में लिखे गए) के रूप में अधिक (कुंजी, मूल्य) जोड़े को आउटपुट करता है।
इस मॉडल के लिए प्रोसेसिंग सर्वर लॉग्स जैसे व्यावहारिक सामान में कई एप्लिकेशन हैं, लेकिन मुझे एफएफटी को "मैप" और "कम" कार्यों में काटकर फ्रेमवर्क को लागू करने में मुश्किल समय आ रहा है, खासकर जब से मैं वास्तव में डीएसपी से परिचित नहीं हूं।
मैं आपको प्रोग्रामिंग मम्बो जंबो के साथ परेशान नहीं करूंगा, क्योंकि यह एक डीएसपी क्यू एंड ए है। हालाँकि, मैं समानांतर में FFTs की गणना के लिए क्या एल्गोरिदम मौजूद है पर उलझन में हूँ; मानचित्र और कार्य कम करें (तकनीकी रूप से) एक दूसरे से बात नहीं कर सकते हैं, इसलिए एफएफटी को स्वतंत्र समस्याओं में विभाजित किया जाना चाहिए, जहां से परिणाम किसी भी तरह अंत में पुनर्संयोजित किया जा सकता है।
मैंने Cooley-Tukey Radix 2 DIT के एक साधारण कार्यान्वयन को क्रमबद्ध किया है जो छोटे उदाहरणों पर काम करता है, लेकिन एक अरब बाइट्स के लिए विषम / समान इंडेक्स DFTs की पुनरावर्ती गणना के लिए इसका उपयोग करने से काम नहीं चलेगा। मैंने कई पत्रों को पढ़ने में कुछ सप्ताह बिताए हैं, जिसमें एक मैपरेड्यूस एफएफटी एल्गोरिथ्म पर लिखा गया है (एसएसए गुणन पर उनके पेपर के हिस्से के रूप में त्सज़-वो सेज़ द्वारा लिखा गया है, मैं 2 से अधिक हाइपरलिंक लिंक नहीं कर सकता) और "चार-चरण एफएफटी" ( इधर और उधर), जो एक दूसरे के समान लगते हैं और जो मैं पूरा करने की कोशिश कर रहा हूं। हालाँकि, मैं गणित में बुरी तरह से बुरा हूँ, और किसी भी तरीके को हाथ से लागू करके {1,2, 3, 4, 5, 6, 7, 8} जैसे कुछ का एक सरल सेट (सभी काल्पनिक घटकों के साथ 0) देता है। मुझे बेतहाशा गलत परिणाम मिले। क्या कोई मुझे अंग्रेजी में एक कुशल समानांतर एफएफटी एल्गोरिदम समझा सकता है (एक जिसे मैंने लिंक किया है या कोई अन्य) ताकि मैं कोशिश करूं और इसे कार्यक्रम कर सकूं?
संपादित करें: जिम क्ले और कोई भी जो मेरे स्पष्टीकरण से भ्रमित हो सकता है, मैं टेराबाइट फ़ाइल का एक एकल एफएफटी करने की कोशिश कर रहा हूं। लेकिन मैं इस प्रक्रिया को गति देने के लिए कई सर्वरों पर समवर्ती रूप से करने में सक्षम होना चाहता हूं।