Сейчас я узнаю о параллельном программировании в C с openmp, и теперь я наткнулся на следующую проблему. У меня есть простой цикл, который я хочу распараллелить. Использование OpenMP, я думал, следующий код должен делать эту работуПараллельное программирование в C с 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);
}
Код
if (k == 10000000)
{
printf("%d, ",l);
l++;
k = 0;
}
k++;
только для меня, чтобы знать, как далеко в цикле мы. Если я запускаю программу, она ничего не печатает, то есть ничего не вычисляет. Что не так с кодом тогда? Благодарю.
Исправьте углубление и используйте пустое пространство; это выглядит очень плохо! –
@ смысл-дела извините, LPs отредактировал, поэтому я надеюсь, что теперь он выглядит нормально. – Badshah
Выполняется ли последний 'printf'? – LPs