我在Ubuntu 10.04
,gcc版本4.4.3
。我正在編譯c + +代碼omp.h
和g ++參數-fopenmp
。大多數情況下,一切都按預期工作。我有超線程四核,所以幾乎8核心。openmp隨機使用只有一個核心
隨機地,當我運行我的軟件(並觀看系統監視器)時,所有8個核心的低音達到100%,粉絲開始踢球,這一切都很划算。在半秒鐘內,所有核心都停止運行,其中一個仍在運行。
此時如果我取消我的程序(只是簡單地按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 }
看看這個http://www.viva64.com/en/a/0054/ openmp疑難解答指南 – 2011-03-10 19:55:00