2012-06-20 14 views
5

मैं जोर देने के लिए नया हूं और एक बात है जिसे मैं समझ नहीं पा रहा हूं। असीमित या तुल्यकालिक जोर है?जोर सिंक्रोनस या असीमित है?

यदि मैं निम्नलिखित कोड लिखता हूं, तो लिया गया समय 0 नहीं है। लेकिन अन्य टैग में, अन्य उपयोगकर्ता 0 के परिणाम की रिपोर्ट करते हैं। सच क्या है?

clock_t start,end; 

start=clock(); 
thrust::sort_by_key(vettore.begin(), vettore.end(), counter.begin()); 

end=clock(); 

double time=((double)(end-start))/CLOCKS_PER_SEC; 

cout<<"execution time"<<time<<endl;// the result is 0.327 
+0

नोट: एनवीआईडीआईए मंच पर संबंधित प्रश्न [यहां] (https://devtalk.nvidia.com/default/topic/864759/is-thrust-copy-synchrous-or-asynchronus-/)। – BenC

उत्तर

2

कर्नेल की शुरूआत हमेशा अतुल्यकालिक किया गया है - CUDA 1.0 में भी - तो किसी भी थ्रस्ट कॉल कि केवल एक कर्नेल लांच में जो परिणाम अतुल्यकालिक हो जाएगा।

किसी भी जोर कोड जो स्पष्ट रूप से memcpy की ट्रिगर्स को ट्रिगर करता है, धारा समर्थन की कमी के कारण तुल्यकालिक होगा, जैसा कि marina.k द्वारा बताया गया है।

+3

उदाहरण के लिए, जोर :: कम() निश्चित रूप से तुल्यकालिक है क्योंकि यह परिणाम को वापस पढ़ता है और इसे वापसी मान के माध्यम से कॉलिंग थ्रेड पर लौटाता है। मैं अपने हालिया ब्लॉग पोस्ट में इन सीमाओं के बारे में कुछ टिप्पणियां करता हूं: http://developer.nvidia.com/content/expressive-algorithmic-programming-thrust – harrism

0

घड़ी() फ़ंक्शन की ग्रैन्युलरिटी अच्छी नहीं है जैसा कि आप विंडोज में सोचते हैं। और विंडोज एक्सपी में इसकी ग्रैन्युलरिटी 16 एमसीईसी जितनी अधिक है।

घड़ी का उपयोग करने के बजाय() एक उच्च रिज़ॉल्यूशन टाइमर या कटिल लाइब्रेरी के समय फ़ंक्शन का उपयोग करें (जिसे आमतौर पर पसंद किया जाता है)। Windows में उच्च संकल्प टाइमर के बारे में

चर्चा: C++ high precision time measurement in Windows

समय के लिए CUtil पुस्तकालय की उपयोगिता के बारे चर्चा: CUDA: CUtil timer - confusion on elapsed time

0

आप इसे मैन्युअल, इंडेक्सर को time.h जोड़ने प्राथमिकताएं पर जाएं कर सकते हैं - > C/C++ -> अनुक्रमणिका और मौजूदा के सामने रख दिया इस तरह "फ़ाइलें सामने अनुक्रमित करने के लिए":

time.h, cstdarg, stdarg.h, ..... 

यह काम करने जा रहा

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