जीएनयू समानांतर
मैं एक सिंथेटिक संकलन बेंचमार्क बना रहा था और इसे मेकफाइल लिखने के लिए परेशान नहीं किया जा सकता था, इसलिए मैंने इसका इस्तेमाल किया:
sudo apt-get install parallel
ls | grep -E '\.c$' | parallel -t --will-cite "gcc -c -o '{.}.o' '{}'"
स्पष्टीकरण:
{.}
इनपुट तर्क लेता है और उसका विस्तार हटाता है
-t
हमें प्रगति का विचार देने के लिए चलाए जा रहे आदेशों को छापता है
--will-cite
यदि आप इसका उपयोग करके परिणाम प्रकाशित करते हैं तो सॉफ़्टवेयर का हवाला देने का अनुरोध निकाल देता है ...
parallel
इतना सुविधाजनक है कि मैं खुद भी एक टाइमस्टैम्प की जांच कर सकता हूं:
ls | grep -E '\.c$' | parallel -t --will-cite "\
if ! [ -f '{.}.o' ] || [ '{}' -nt '{.}.o' ]; then
gcc -c -o '{.}.o' '{}'
fi
"
xargs -P
समानांतर में भी नौकरी चला सकते हैं, लेकिन विस्तार में हेरफेर करना या इसके साथ कई कमांड चलाना थोड़ा कम सुविधाजनक है: xargs के माध्यम से कई कमांड को कॉल करना
समानांतर लिंकिंग में पूछा गया था: क्या लिंक करते समय कई कोर का उपयोग किया जा सकता है?
TODO: मुझे लगता है कि मैंने कहीं पढ़ा है कि मैट्रिक्स गुणन में संकलन को कम किया जा सकता है, इसलिए शायद बड़ी फ़ाइलों के लिए एकल फ़ाइल संकलन को गति देना भी संभव है। लेकिन मुझे अब संदर्भ नहीं मिल रहा है।
उबंटू 18.10 में परीक्षण किया गया।