मैं बीओवुल्फ़ क्लस्टर पर एमपीआई के साथ समानांतर प्रोग्रामिंग कर रहा हूं। हमने नकली एनीलिंग के लिए समांतर एल्गोरिदम लिखा था। यह बढ़िया काम करता है। हम धारावाहिक कोड के मुकाबले 15 गुना तेजी से निष्पादन की उम्मीद करते हैं। लेकिन हमने विभिन्न आर्किटेक्चर और ऑपरेटिंग सिस्टम पर धारावाहिक सी कोड का कुछ निष्पादन किया ताकि हम प्रदर्शन माप के लिए अलग-अलग डेटा सेट प्राप्त कर सकें। हमने अपने कोड में इस रैंडम फ़ंक्शन का उपयोग किया है। हम दोनों विंडोज़ और यूबंटू लिनक्स पर जीसीसी का उपयोग करते हैं। हमने पाया कि निष्पादन लिनक्स पर अधिक समय लेता है, और हम नहीं जानते कि क्यों। क्या कोई इस कोड को लिनक्स और विंडोज़ पर जीसीसी के साथ संकलित कर सकता है और मुझे समझाने की कोशिश करता है।जीसीसी प्रदर्शन
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (int argc, char** argv){
double Random();
int k,NUM_ITERATIONS = 10;
clock_t start_time = clock();
NUM_ITERATIONS=atoi(argv[1]);
// iniciranje random generatora
srand(time(NULL));
for(k=0; k<NUM_ITERATIONS; k++){
double raa = Random();
}
clock_t end_time = clock();
printf("Time of algorithm execution: %lf seconds\n", ((double) (end_time - start_time))/CLOCKS_PER_SEC);
return 0;
}
// generate random number bettwen 0 and 1
double Random(){
srand(rand());
double a = rand();
return a/RAND_MAX;
}
अगर मैं 100 000 000 NUM_ITERATIONS के लिए तर्क के रूप में साथ निष्पादित, मैं खिड़कियों पर की तुलना में लिनक्स पर 20 बार धीमी निष्पादन मिलता है। दोहरी बूट जीत + ubuntu linux के साथ एक ही वास्तुकला के साथ मशीन पर परीक्षण किया। हमें मदद चाहिए क्योंकि इस रैंडम फ़ंक्शन को हमारे डेटा के साथ दिखाना चाहते हैं, इसके लिए बाधा है।
लिनक्स में इसे संकलित करते समय आप जीसीसी को क्या कमांड लाइन विकल्प पास कर रहे हैं, और विंडोज़ में कौन से विकल्प उपयोग किए जा रहे हैं। –
"gcc -o rand rand.c -lm" दोनों प्रणालियों पर। – Zec
जो भी यादृच्छिक संख्या जनरेटर आप समाप्त करते हैं, उसे ** एक बार ** प्रोग्राम चलाने के लिए शुरू करें। ** केवल एक बार! ** – pmg