c++ - #pragma omp barrier inserted by preprocessor? -


मेरे पास ओएमपी #pragma omp महत्वपूर्ण के साथ कोड है, लेकिन कोई #pragma omp बाधा । फिर भी, विजुअल स्टूडियो 2008 में डिबग बिल्ड में मेरे प्रोग्राम में क्रैश हो गया

  घातक उपयोगकर्ता त्रुटि 1002: '#pragma omp बाधा' अनुचित तरीके से '#pragma omp गंभीर' में नेस्टेड  

क्या यह संभव है कि ऐसा कोई #pragma omp बाधा स्वचालित रूप से डाला जाता है, हो सकता है कि एक प्रयास / पकड़ ब्लॉक में या तो? क्या अधिक निदान संबंधी जानकारी प्राप्त करने का कोई तरीका है, उदा। जहां वास्तव में समस्या मौजूद है?

संपादित करें: यह कोड की संरचना है मैं अपवादों को पकड़ने और याद रखने के लिए और साझा किए गए चर तक पहुंचने के लिए omp महत्वपूर्ण का उपयोग कर रहा हूं यह सभी एक-लाइन ब्लॉक है।

  std :: vector & lt; RunResult & gt; runResults; मूल्यांकनकर्ता मूल्यांकनकर्ता; std :: वेक्टर & LT; std :: runtime_error & gt; exceptionsDuringParallelExecution; कुछ प्रकार के कुछ वैरिएबल; // निजी डेवलपर के रूप में बाद में #pragma omp समानांतर {#pragma omp के लिए निजी (कुछ वैरिएबल) के लिए (इंट मोंटे कार्लो लोप क्वॉक्टर = मोंटे कार्लो कन्वर्टर ऑफसेट; मोंटे कार्लो लूप क्वंटर & lt; numMonteCarloRuns + मोंटेकार्लो कंट्रोल ऑफसेट; मोंटे कार्लो लूप क्वंटर ++) {bool हैएक्सेशन = झूठे; #pragma omp महत्वपूर्ण (exceptionAccess) {hasException = अपवादों के दौरान पारालेलएक्झिक्यूशन.एमपीटी () == गलत; } यदि (हैअस्वीपशन == गलत) {tryResult runRes; // कुछ नेस्टेड लूप: (अहस्ताक्षरित int j = 0; j & lt; 10; j ++) {जबकि (कुछ वैरिएबल- & gt; शर्त ()) {for (अहस्ताक्षरित int i = 0; i & lt; 20; i ++) {यदि (कुछ कंडिशन ) {// कुछ #pragma omp गंभीर मूल्यांकनकर्ता की गणना। मूल्यांकन (कुछ); }}} RunRes.setSomeResult (); } #pragma omp महत्वपूर्ण रनप्रतिसाध्य। Push_back (runRes); } पकड़ (std :: exception & amp; e) {#pragma omp महत्वपूर्ण (अपवाद अपवाद) अपवादों के दौरान ParaallelExecution.push_back (std :: runtime_error (e.what ())); } पकड़ (...) {#pragma omp महत्वपूर्ण (अपवाद अपवाद) अपवाद के दौरान पैरालएलएक्सेक्यूशन.push_back (std :: runtime_error ("अप्रत्याशित अपवाद")); }}}} यदि (अपवादों के दौरान पारालेलएक्ससीक्यूशन।) () == झूठे) (अपवादों को छोड़कर; पैरालएलएक्सेक्यूशन.फ्रंट (); }  

मैं चार #pragma omp महत्वपूर्ण निर्देशों को देखता हूँ आपका कोड (पहले लेकिन सबसे पहले) जो तत्काल एक ब्रेस-संलग्न ब्लॉक के बाद आवश्यक वाक्यविन्यास का पालन न करें।

आवश्यक वाक्यविन्यास दिखाता है:

  # Pragma omp महत्वपूर्ण [(नाम)] {code_block}  

Comments

Popular posts from this blog

winforms - C# Form - Property Change -

javascript - amcharts makechart not working -

java - Algorithm negotiation fail SSH in Jenkins -