मैं समानांतर मोड में LIBSVM चलाने की कोशिश कर रहा हूं, हालांकि मेरा प्रश्न सामान्य रूप से ओपनएमपी में है। LIBSVM FAQ के अनुसार, मैंने ओपनएमपी का उपयोग करने के लिए #pragma कॉल के साथ कोड को संशोधित किया है। मैं भी तो यह हो जाता है एक -fopenmp तर्क जोड़कर Makefile (के लिए संयुक्त राष्ट्र * x) संशोधित:कैसे बताएं कि ओपनएमपी काम कर रहा है या नहीं?
CFLAGS = -Wall -Wconversion -O3 -fPIC -fopenmp
कोड अच्छी तरह से संकलित करता है। मैं जाँच (यह मेरे पीसी नहीं है के बाद से) OpenMP द्वारा स्थापित किया गया है या नहीं:
/sbin/ldconfig -p | grep gomp
और देखते हैं कि यह -probably- स्थापित किया गया है:
libgomp.so.1 (libc6,x86-64) => /usr/lib64/libgomp.so.1
libgomp.so.1 (libc6) => /usr/lib/libgomp.so.1
अब; जब मैं प्रोग्राम चलाता हूं, मुझे कोई गति सुधार नहीं दिखता है। साथ ही जब मैं "शीर्ष" के साथ जांच करता हूं, तो प्रक्रिया अधिकांश% 100 सीपीयू (8 कोर हैं) पर उपयोग कर रही है, सीपीयू बाधा नहीं है (केवल 100 और सीपीयू उपयोग के साथ एक और उपयोगकर्ता), मैं अपेक्षा से अधिक देखने की उम्मीद कर रहा था % 100 (या एक अलग संकेतक) कि प्रक्रिया एकाधिक कोर का उपयोग कर रहा है।
क्या यह जांचने का कोई तरीका है कि यह एकाधिक कोर काम कर रहा है?
बस एक विचार है, लेकिन यह अधिकतम नहीं होना चाहिए। 100%/कोर की संख्या जब केवल एक धागा चल रहा है? – Tibor
नहीं, जब मल्टीकोरर्स नियोजित होते हैं (कम से कम मेरे सर्वर की स्थापना में) हम 100% –
@ टिबोर से बहुत अधिक मूल्य देखते हैं, आईरिक्स मोड में शीर्ष डिफ़ॉल्ट जो एक एकल CPU के पूर्ण लोड और एन * 100% के लिए 100% दिखाता है एन सीपीयू का पूरा भार। यदि आप आईरिक्स मोड को टॉगल करते हैं ('I' दबाएं) यह 100% दिखाता है जब सभी CPUs का उपयोग किया जाता है। –