第一篇文章!openmp創建隨機數的線程
主要編輯..
我有了這個程序計算的點積,使用gcc與-fopenmp編譯。問題是,它沒有創建我告訴它創建的線程數。在一臺計算機上,它會不斷產生2個線程,在另一臺計算機上。這兩個數字都不是賦予它們的數字。我正在使用(靜態,塊大小)調度,這是一種間接方式,可以通過更改塊大小來選擇要創建的線程數。我覺得運行時有些東西會覆蓋我的指令,因爲所有的計算機都使用相同的可執行文件。我也注意到,如果我給程序一個與總負載相等的塊大小,它將使用一個線程,但仍然產生與之前相同的線程數。我究竟做錯了什麼?
#pragma omp parallel shared(vector1, vector2, loadsize, vectorsize, final_sum) private(i, threadsum, threadid)
{
threadsum = 0;
threadid = omp_get_thread_num();
#pragma omp for schedule(static, loadsize)
for (i = 0; i < vectorsize; i++){
threadsum += vector1[i] * vector2[i];}
printf("thread %d reached up to index %d with a sum of %d\n", threadid, (i-1), threadsum);
#pragma omp critical
final_sum += threadsum;
}
printf("final sum: %d", final_sum);
感謝,
扎克
謝謝,它似乎對它創建的線程數有一個默認限制。我用omp_get_max_threads()檢查了它們,發現我僅限於2個線程。 – zedjay72