2015-01-13 10 views
8

में सीपीयू कोर की संख्या प्राप्त करें मैं जूलिया में उपलब्ध कोर की संख्या प्राप्त करना चाहता हूं। वर्तमान में मैं निम्नलिखित कर रहा हूं:जूलिया

using PyCall 
@pyimport psutil 
nCores = psutil.cpu_count() 

यह एक पायथन फ़ंक्शन को कॉल करता है। हालांकि, मैं कुछ जूलिया प्रक्रिया का उपयोग करना चाहता हूं। यह कैसे किया जा सकता है?

+4

निरंतर [बेस.सीपीयू_CORES] (http://docs.julialang.org/en/latest/stdlib/constants/#Base.CPU_CORES) चाल कर सकता है (लेकिन यह हाइपर-थ्रेडिंग कोर को पूर्ण-कोर के रूप में गिना जाता है)। –

+1

'psutil.cpu_count() 'मेरे इंटेल i7-2720QM- संचालित लैपटॉप पर 8 कोर की रिपोर्ट करता है, इसलिए यह हाइपर-थ्रेडिंग कोर को पूर्ण कोर के रूप में भी गिना जाता है। – Simon

उत्तर

6

मैं इस बारे में 100% निश्चित नहीं हूं, लेकिन CPU_CORES मेरी मशीन (ओएसएक्स 10.9.5 और जूलिया 0.3.5) पर (हाइपर-थ्रेडिंग) कोर की संख्या देता है, भले ही मैं सीरियल मोड में जूलिया शुरू करता हूं। मैं nworkers() और nprocs() का उपयोग कर उपलब्ध कोर की संख्या की जांच कर रहा हूं। -p के बिना जूलिया शुरू करना यह दोनों के लिए 1 रिटर्न ध्वज।

जब मैं CPU_CORES रिटर्न 8.

+0

मेरे उत्तर को स्वीकार करने के लिए मेरी माफी माँगती है। – Pablo

+2

'' 'Base.CPU_CORES''' बहिष्कृत है। इस जानकारी को प्राप्त करने के लिए, आपको '' Sys.CPU_CORES''' '' '' '' प्रयास करना चाहिए। अधिक जानकारी मिल सकती है [यहां] (https://github.com/JuliaLang/julia/blob/9ab1519db4ab8c525f84fce542bfc463d9a2b071/base/sysinfo.jl#L21) – tndoan

1

मैं जूलिया पता नहीं है, लेकिन जैसा कि julia -p 4

julia> nprocs() 
5 

julia> nworkers() 
4 

दोनों ही मामलों में जूलिया शुरू "psutil.cpu_count (तार्किक = झूठी)" पायथन में आप देता है भौतिक CPUs की संख्या (हाइपर थ्रेडेड वाले गिना नहीं जाता है)।

-2

JoshAdel का उत्तर सही है: Base.CPU_CORES वर्चुअल वाले समेत उपलब्ध कोर की संख्या रखता है।

मैं इस विकल्प को एक वैकल्पिक नोट करने के लिए जोड़ रहा हूं: Hwloc पैकेज का उपयोग कर। परियोजना के विवरण से,

यह जूलिया पैकेज hwloc लाइब्रेरी को लपेटता है।

पोर्टेबल हार्डवेयर स्थान (hwloc) सॉफ्टवेयर पैकेज एक पोर्टेबल अमूर्त प्रदान करता है (, ओएस, संस्करण, आर्किटेक्चर भर में ...) NUMA स्मृति नोड्स, सॉकेट, साझी कैश सहित आधुनिक आर्किटेक्चर, के श्रेणीबद्ध टोपोलॉजी की, कोर और एक साथ multithreading। यह कैश और मेमोरी जानकारी के साथ-साथ नेटवर्क इंटरफेस, इन्फिनीबैंड एचसीए या जीपीयू जैसे विभिन्न सिस्टम विशेषताओं को भी एकत्र करता है। इसका मुख्य उद्देश्य अनुप्रयोगों को आधुनिक कंप्यूटिंग हार्डवेयर के बारे में जानकारी इकट्ठा करने में मदद करना है ताकि इसे तदनुसार और कुशलतापूर्वक उपयोग किया जा सके।

import Hwloc 
topology = Hwloc.topology_load() 
counts = Hwloc.histmap(topology) 
ncores = counts[:Core] 
npus = counts[:PU] 
println("This machine has $ncores cores and $npus PUs (processing units)") 

इस का उपयोग कर के लाभ:

परियोजना पृष्ठ से

इसके अलावा, जिस तरह से शारीरिक कोर की संख्या और {शारीरिक, आभासी} कोर (यानी, प्रसंस्करण इकाइयों) प्राप्त करने के लिए इस प्रकार है पैकेज भौतिक और आभासी कोर के बीच अंतर करने की पोर्टेबल क्षमता में निहित है, जो वर्तमान में जूलिया में उपलब्ध नहीं है। हालांकि, भाषा आधार में इस क्षमता को शामिल करने के लिए petition है।

3

जूलिया के हाल के संस्करणों में, आप Sys.CPU_CORES (और Base.CPU_CORES का उपयोग कुछ उत्तरों के रूप में नहीं कर सकते हैं) का उपयोग कर सकते हैं। 0.6 पर परीक्षण किया गया।

+0

यह वास्तव में https में उल्लिखित अंडरस्कोर के साथ 'Sys.CPU_CORES' है://stackoverflow.com/questions/27931026/obtain-the-number-of-cpu-cores-in-julia/45170709#comment65214105_27957225 –