2012-01-03 11 views
7

संपादित करें: बस एक पुष्टि है कि आप इसे पुन: पेश कर सकते हैं या नहीं उपयोगी होंगे। इसे करने के लिए केवल एक कंप्यूटर की आवश्यकता है (कोई दूरस्थ कनेक्शन आवश्यक नहीं है)।कर्नेल-फ्रंट एंड संचार को समझना - मेरा फ्रंट एंड फ्रीज क्यों करता है?

अद्यतन ऐसा लगता है कि यह मैक या विन 7 पर पुन: उत्पन्न नहीं कर सकता है, इसलिए यह या तो WinXP- विशिष्ट या मेरी मशीन के लिए विशिष्ट है। इस बिंदु पर मैं हार रहा हूँ।


यह कैसे फ़्रंट एंड और कर्नेल संवाद पर एक ट्यूटोरियल के लिए अच्छा होगा, तो हम दूरस्थ कर्नेल मुद्दों डीबग कर सकते हैं। ऐसे किसी भी सामान्य उत्तर (या कहीं और ट्यूटोरियल के लिंक) का स्वागत है। मैं पहले से ही सास्चा क्रैटकी द्वारा Remote Kernel Strategies के बारे में जानता हूं।

अब व्यावहारिक प्रश्न: जब मैं किसी भी तरह से रिमोट मशीन से कनेक्ट होता हूं (उदा। दूरस्थ कर्नेल रणनीतियों का उपयोग करके), फ्रंट एंड जल्द ही या बाद में जमा हो जाएगा। मेरे द्वारा इसे कैसे रोका जा सकता है?

का चयन करें -

  1. एक नया कर्नेल विन्यास बनाएँ (> कर्नेल विन्यास विकल्प ... मूल्यांकन मेनू):

    यहाँ कैसे एक मशीन पर समस्या (जरूरत नहीं दूरस्थ कनेक्शन) पुन: पेश करने के लिए उन्नत विकल्प।

    MLOpen के तर्क:

    -LinkName "[email protected],[email protected]" -LinkMode Listen 
    -LinkProtocol TCPIP -LinkHost "YOUR-IP-HERE" -LinkOptions MLDontInteract 
    

    (।। आपके कंप्यूटर के आईपी पते के साथ YOUR-IP-HERE विंडोज पर आप एक कमांड विंडो में ipconfig टाइप करके इस प्राप्त कर सकते हैं बदलें)

    शैल गिरी शुरू करने के लिए आदेश: छोड़ खाली (हम इसे मैन्युअल रूप से करेंगे)

  2. एक नई नोटबुक खोलें, नोटबुक के कर्नेल को आपके द्वारा सेट अप किए गए सेट पर सेट करें, और कुछ मूल्यांकन करें (1+1)।

  3. अब कनेक्शन कनेक्शन से पहले हमें कर्नेल को मैन्युअल रूप से लॉन्च करने की आवश्यकता है। तो कमांड लाइन मोड में एक नया कर्नेल (math) प्रारंभ करें, और निम्न का मूल्यांकन:

    link=LinkConnect["8000,8001",LinkProtocol->"TCPIP"] (* connect to front end link *) 
    
    $ParentLink = link; (* set the front end link as parent link *) 
    

    अब कनेक्शन स्थापित हो जाने, और सब कुछ सही ढंग से (काम सामने अंत के गुलाबी संदेश विंडो में एक संदेश के लिए बचाने के लिए प्रकट होता है)

  4. Manipulate[n, {n, 0, 100, 1}] का मूल्यांकन करें। सबसे पहले, यह भी काम करने लगता है। अब स्लाइडर के साथ खेलते हैं। जल्द या बाद में फ्रंट एंड फ्रीज हो जाएगा और उसे मारने की जरूरत है। मेरे लिए, ~ 10 सेकंड के लिए स्लाइडर को ऊपर और नीचे खींचकर हमेशा पर्याप्त मात्रा में इसे छोड़कर।

फ़्रंट एंड क्यों फ्रीज करता है? मैं फ्रंट एंड और कर्नेल के बीच एक टीसीपीआईपी-मोड कनेक्शन कैसे बना सकता हूं जिससे सब ठीक से काम कर रहे हों?


कुछ नोट:

  • Windows XP पर हूँ।
  • यदि मैं LinkProtocol -> "SharedMemory" का उपयोग करता हूं तो समस्या कभी प्रकट नहीं होती है।
  • मूल्यांकन का उपयोग करके गणना निरस्त करना -> मूल्यांकन मूल्यांकन सही ढंग से काम करता है।
  • मैंने Links[] का उपयोग करके सत्यापित किया है कि MathLink`$PreemptiveLink और MathLink`$ServiceLink बनाए गए हैं और LinkConnectedQ[] उन पर True लौटाते हैं।

फिर, ध्यान दें कि फ्रंट एंड केवल Manipualate स्लाइडर को इसे जारी किए बिना कुछ सेकंड के लिए खींचने के बाद फ्रीज हो जाएगा।

Link to same question on MathGroup.

संबंधित: Firewall settings for remote kernel to work (Mathematica)

+0

closers को: यह एक वैध प्रोग्रामिंग प्रश्न है। कर्नेल से कनेक्शन प्रोग्रामेटिक रूप से स्थापित किया जा सकता है (या तो फ्रंट एंड, एक और कर्नेल, या अन्य सॉफ़्टवेयर), जैसा कि मैं यहां कर रहा हूं। प्रश्न गणित के संचार प्रोटोकॉल को समझने और उपयोग करने के बारे में भी है। – Szabolcs

+0

बस मेरे दो सेंट, जब आप एक ग्राफिकल तत्व खींचते हैं कि विंडोज़ संदेश लूप आमतौर पर माउस अप संदेश तक संशोधित होता है, ताकि तत्व या खिड़की को आसानी से खींचा जा सके। संभवतः, यह आपके कंप्यूटरों के बीच सिंक संदेशों को बाधित करने का कारण बन रहा है जिसके परिणामस्वरूप टाइमआउट स्थिति होती है। – Motes

+0

मैंने विंडोज 7 पर यह कोशिश की और लटकना पुन: उत्पन्न नहीं कर सका, जो आश्चर्यजनक है क्योंकि मुझे उम्मीद है कि इस विधि को असफल होने की उम्मीद है क्योंकि फ्रंटेंड और कर्नेल कई लिंक बनाए रखता है ($ पेरेंटलिंक के अलावा): एक सेवा लिंक और एक पूर्व-गुप्त लिंक। मेरा मानना ​​है कि अगर प्री-एम्प्टिव लिंक सही तरीके से सेट नहीं किया गया है, तो डायनामिक खराब तरीके से विफल हो जाएगा। –

उत्तर

2

(एक नहीं जवाब है, लेकिन टिप्पणी के रूप में लिख करने के लिए कठिन)

FYI करें, वहाँ के लिए कैसे दृश्यपटल वार्ता के बारे में जानकारी पर एक छोटा सा है कर्नेल http://reference.wolfram.com/mathematica/tutorial/AdvancedDynamicFunctionality.html

लगभग आधा रास्ता नीचे, यह कहता है

The front end and kernel communicate with each other through several 
MathLink connections, known as the main link, the preemptive link, 
and the service link. The main and preemptive links are pathways by 
which the front end can send evaluation requests to the kernel, and 
the kernel can respond with results. The service link works in reverse, 
with the kernel sending requests to the front end. 

और वहां और भी बहुत कुछ। हो सकता है कि मदद मिलेगी। इसके अलावा, एक ही जानकारी पेज 31 पर पीडीएफ फाइल में है:

http://www.wolfram.com/learningcenter/tutorialcollection/DynamicInteractivity/

गिरी और सामने के छोर के बीच वास्तविक मैसेजिंग प्रोटोकॉल बहुत उन्नत किया जाना चाहिए।

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