मैं वर्तमान में अगले 8 सप्ताह में एक ग्रेड-स्तरीय कंपाइलर पाठ्यक्रम के लिए एक परियोजना चुनने की प्रक्रिया में हूं। मैं अनुकूलन से संबंधित कुछ करना चाहता हूं क्योंकि मैंने पहले उस क्षेत्र में ज्यादा काम नहीं किया है, लेकिन मैदान में कुछ भी उचित खेल है।दिलचस्प कंपाइलर परियोजनाएं
आपके द्वारा किए गए सबसे दिलचस्प कंपाइलर से संबंधित प्रोजेक्ट क्या था? आपने सबसे ज्यादा क्या सीखा?
संपादित करें: आप अपने सभी महान सुझाव के लिए धन्यवाद। मैं इतने लंबे समय तक इसे अपडेट नहीं करने के लिए क्षमा चाहता हूं।
मैं जिस परियोजना को समाप्त कर रहा था वह एलएलवीएम पर एक सरल ऑटोवॉक्साइजेशन ऑप्टिमाइज़ेशन था। एलएलवीएम में वेक्टर प्रकार हैं, लेकिन सामने के अंत के समर्थन के बिना उनका लाभ उठाने का कोई तरीका नहीं प्रतीत होता। इस अनुकूलन ने सामान्य स्केलर कोड को वेक्टर कोड में परिवर्तित कर दिया।
चूंकि ऑटो-वेक्टरिज़ेशन लागू करने के लिए काफी कठिन अनुकूलन है, इसलिए हमने जितना संभव हो उतना दायरा सीमित कर दिया है। सबसे पहले, कोड में निर्देश स्तर समानांतरता का पर्दाफाश करने के लिए, हमने एक मानदंड लूप की तलाश की जो हमारे मानदंडों से मेल खाते थे, फिर उन्हें एक विशिष्ट संख्या में अनलॉक किया गया ताकि वे आसानी से वेक्टरिज़ेबल हो सकें। इसके बाद हमने लार्सन और अमरसिंघे द्वारा Exploiting Superword Level Parallelism with Multimedia Instruction Sets में पैकिंग एल्गोरिदम लागू किया।
यहां तक कि इस अनुकूलन का एक सरलीकृत संस्करण भी जटिल है। बहुत सारी बाधाएं हैं; उदाहरण के लिए, आप एक वैरिएबल को वेक्टरिज़ करना नहीं चाहते हैं जो लूप से बाहर रहता है, क्योंकि शेष कार्यक्रम को स्केलर होने की उम्मीद है। हमने पिछले कुछ हफ्तों में बहुत सारे घंटे लगाए हैं। हालांकि परियोजना बहुत मजेदार थी, और हमने बहुत कुछ सीखा।
तो जय 8 सप्ताह से अधिक हो गया है। हमें बताएं कि क्या हुआ। –
कोई खबर जय? मैं जल्द ही एक अंडरग्रेड कंपाइलर कोर्स पढ़ाना शुरू कर दूंगा और यह जानना दिलचस्प होगा कि आपने क्या किया। – fbinder