現在我正在學習用C並行編程使用OpenMP,現在我已經在下面的問題絆倒了。我有一個簡單的for循環,我想要並行化。使用OpenMP,我想下面的代碼應該做的工作並行編程使用OpenMP
unsigned long int teller_groot;
int boel = 0;
int k = 0;
int l = 1;
unsigned long int sum2;
int thread_id;
int nloops;
#pragma omp parallel private(thread_id, nloops)
{
sum2 = 0;
#pragma omp for
for (teller_groot=1000000; teller_groot<1000000000000; teller_groot++)
{
boel = 0;
for (int i = 0; i < 78498; i++)
{
if (floor(teller_groot/array[i]) == teller_groot/array[i])
{
boel = 1;
break;
}
}
if (boel == 0)
{
sum2 = sum2 + teller_groot;
}
if (sum2 >= 1000000000)
{
sum2 = sum2 - 1000000000;
}
if (k == 10000000)
{
printf("%d, ", l);
l++;
k = 0;
}
k++;
}
thread_id = omp_get_thread_num();
printf("Thread %d performed %d iterations of the loop.\n", thread_id, nloops);
}
代碼
只是我知道我們是多麼遙遠的循環。如果我運行該程序,它不會打印任何內容,這意味着它不計算任何內容。那麼代碼有什麼問題?謝謝。
請修復縮進和使用空格;它看起來非常糟糕! –
@意義 - 事情對不起,LP已編輯,所以我希望它現在看起來確定。 – Badshah
是否執行了最後一個'printf'? – LPs