Я пытаюсь сгенерировать все строки, которые содержат только 4 строчных буквы Engli sh (от aaaa
до zzzz
), используя OpenMP.
Моя идея такова: создать 4 вложенных цикла, каждый l oop генерирует 1 букву в строке.
char a, b, c, d, start = 'a', end = 'z';
for (a = start; a <= end; a++)
{
for (b = start; b <= end; b++)
{
for (c = start; c <= end; c++)
{
for (d = start; d <= end; d++)
{
printf("%c%c%c%c\n", a, b, c, d);
}
}
}
}
Проблема в том, что когда я использовал OpenMP для распараллеливания for
l oop:
char a, b, c, d, start = 'a', end = 'z';
#pragma omp parallel for collapse(4)
for (a = start; a <= end; a++)
{
for (b = start; b <= end; b++)
{
for (c = start; c <= end; c++)
{
for (d = start; d <= end; d++)
{
printf("%c%c%c%c\n", a, b, c, d);
}
}
}
}
I получил только этот результат:
aaam
aaan
aaao
aaap
aaae
aaaf
aaag
aaah
aaai
aaaj
aaak
aaal
aaaa
aaab
aaac
aaad