2012-12-08 20 views
6

मेरे पास फोरट्रान में एक कोड है जो एमकेएल से DGESVD का उपयोग करता है और इंटेल कंपाइलर के साथ 8 कोर पर चलता है। ओपनएमपी के माध्यम से कोड तेज हो गया है। इसके अलावा मुझे पता है कि ओपनएमपी और एमकेएल की धागे की संख्या निर्धारित करने के लिए अपनी सेटिंग है (omp_num_threads और mkl_num_threads)। मैं धागे की इष्टतम संख्या जानना चाहता हूँ। क्या मुझे LAPACK दिनचर्या को कॉल करने से पहले OMP_NUM_THREADS=1 सेट करना है? क्या ओपनएमपी धागे की संख्या एमकेएल धागे की संख्या को प्रभावित करती है?ओपनएमपी और एमकेएल थ्रेडिंग

उत्तर

12

एमकेएल अपने बहुप्रचारित ड्राइवर के लिए ओपनएमपी का भी उपयोग करता है। इसका मतलब है कि ओपनएमपी धागे की संख्या एमकेएल धागे की संख्या को प्रभावित करती है, लेकिन एक बहुत ही जटिल तरीके से।

सबसे पहले, ओपनएमपी कोड होने के नाते, एमकेएल को थ्रेड की संख्या निर्धारित करने के लिए सामान्य ओपनएमपी तरीकों से भी नियंत्रित किया जाता है, उदाहरण के लिए OMP_NUM_THREADS और omp_set_num_threads पर कॉल करें। लेकिन यह MKL_NUM_THREADS और mkl_set_num_threads() के रूप में ओवरराइड कॉन्फ़िगरेशन तंत्र भी प्रदान करता है। यह उपयोगकर्ता कोड में और एमकेएल रूटीन में अलग-अलग धागे की अनुमति देता है।

वांछित संख्याओं को कॉन्फ़िगर करने के बाद, किसी को यह भी पता होना चाहिए कि कैसे एमकेएल नेस्टेड समांतरता मामलों में व्यवहार करता है। यही है, यदि उपयोगकर्ता कोड में एक सक्रिय parallel क्षेत्र के अंदर से कहा जाता है तो एमकेएल डिफ़ॉल्ट रूप से एकल-थ्रेडेड चलाएगा। एमकेएल MKL_DYNAMIC स्विच प्रदान करता है जो इस व्यवहार को ओवरराइड कर सकता है लेकिन इसके लिए आवश्यक है कि उसी ओपनएमपी कंपाइलर का उपयोग उपयोगकर्ता कोड के लिए एमकेएल के रूप में किया जाता है (इसे पढ़ें - आपको इंटेल के कंपाइलर का उपयोग करना चाहिए) क्योंकि विभिन्न ओपनएमपी रनटाइम के बीच कोई संगतता गारंटी नहीं है।

आम तौर पर, आपको एमकेएल में कॉल करने से पहले धागे की संख्या को 1 पर सेट करने की आवश्यकता नहीं है, क्योंकि इससे इसे एकल-थ्रेड किया जाएगा, जब तक कि एमकेएल धागे की संख्या स्पष्ट रूप से कॉन्फ़िगर करके ओवरराइड नहीं की जाती। और जब आपको नेस्टेड समांतरता सक्षम किया जाता है तो आपको parallel क्षेत्रों के अंदर से कॉल करते समय सावधान रहना चाहिए।

एमकेएल में धागे की संख्या को नियंत्रित करने के बारे में और पढ़ें MKL's User Guide में उपलब्ध है।

संबंधित मुद्दे