2016-06-01 1 views
-2

Я пытаюсь запустить цикл параллельно, добавив «#pragma omp parallel for», но это не сработало никаких предложений о том, как я могу параллелировать этот цикл?Как сделать параллельное это для цикла в OpenMP?

#pragma omp parallel for 
    for (p = split; *p != 0; p++) if (*p == ' ') *p = '0'; 
+1

Пожалуйста, добавьте окружение, которое вы используете для своей сборки. Это похоже на компиляцию или определение задано неправильно. – namar0x0309

+0

По какой причине вы спамеровали Java-тег? – Olaf

ответ

5

Для того чтобы OpenMP мог распараллелить цикл, количество итераций цикла должно быть определено заранее. В данном конкретном случае, вы должны сначала определить длину строки:

size_t len = strlen(split); 
#pragma omp for 
for (size_t p = 0 ; p < len; ++p) if (split[p] == ' ') split[p] = '0'; 

Это очень сомнительно, что вы получите какой-либо выигрыш в производительности от распараллеливания для этого примера, хотя.