Tôi đang lập trình song song với MPI trên cụm Beowulf. Chúng tôi đã viết thuật toán song song cho việc ủ mô phỏng. Nó hoạt động tốt. Chúng tôi dự kiến thực thi nhanh hơn 15 lần so với mã nối tiếp. Nhưng chúng tôi đã thực hiện một số việc thực thi mã C nối tiếp trên các kiến trúc và hệ điều hành khác nhau để chúng tôi có thể có các bộ dữ liệu khác nhau để đo lường hiệu suất. Chúng tôi đã sử dụng chức năng Ngẫu nhiên này trong mã của chúng tôi. Chúng tôi sử dụng GCC trên cả hai cửa sổ và linux Ubuntu. Chúng tôi đã tìm ra rằng việc thực hiện mất nhiều thời gian hơn trên các linux và chúng tôi không biết tại sao. Ai đó có thể biên dịch mã này trên linux và windows với gcc và cố gắng giải thích cho tôi.Hiệu năng GCC
#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;
}
Nếu tôi thực thi nó với 100 000 000 làm đối số cho NUM_ITERATIONS, tôi nhận được thực thi chậm hơn 20 lần trên linux so với trên cửa sổ. Thử nghiệm trên máy có cùng kiến trúc với khởi động kép win + ubuntu linux. Chúng tôi cần trợ giúp vì chức năng Ngẫu nhiên này là nút cổ chai cho những gì chúng tôi muốn hiển thị cùng với dữ liệu của mình.
Tùy chọn dòng lệnh nào bạn chuyển sang gcc khi biên dịch trong linux và những tùy chọn nào đang được sử dụng trong cửa sổ. –
"gcc -o rand rand.c -lm" Trên cả hai hệ thống. – Zec
Bất kỳ trình tạo số ngẫu nhiên nào mà bạn kết thúc, khởi tạo nó ** một lần ** mỗi lần chạy chương trình. ** CHỈ CÓ NGÀY! ** – pmg