Я в Ubuntu 10.04
, версия gcc 4.4.3
. Я компилирую код C ++ с omp.h
и параметром g ++ -fopenmp
. В большинстве случаев все работает как положено. У меня четырехъядерный процессор с гиперпоточностью, так что практически 8 ядер.
Случайно, когда я запускаю свое программное обеспечение (и наблюдаю за системным монитором), все 8 ядер работают на 100%, фанаты бьются, все это хорошо. В течение полсекунды все ядра, кроме 1, отключаются, а одно продолжает работать.
В настоящее время, если я отменяю свою программу (просто Ctrl + C) и перезапускаю ее - она работает как положено, все ядра продолжают работать на 100%.
Вот фрагменты кода на случай, если он будет полезен:
28 #include <time.h>
29 #include <omp.h>
30 #include <string>
...
713 #ifdef _OPENMP
714 if(omp_get_dynamic())
715 omp_set_dynamic(1);
716 #endif
717
718 #pragma omp parallel
719 {
720 #pragma omp for schedule(dynamic) private(node)
721 for (int c = 0; c < buffer->GetCount(); c++) {
... initialize objects pointers etc
724 #pragma omp critical(BUFFER_LOOKUP)
725 {
... perform chunk of code that is a choke
734 }