现在我正在学习用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