2014-09-25 6 views
0

Я использую Ubuntu и пишу несколько строк кода. Но он создает только один поток. Когда я бегу на моем терминале команду nproc, выход 2. Мой код нижеOpenMP создает только один поток

int nthreads, tid; 

#pragma omp parallel private(tid) 
{ 
    tid = omp_get_thread_num(); 
    printf("Thread = %d\n", tid); 

    /* for only main thread */ 
    if (tid == 0) 
    { 
     nthreads = omp_get_num_threads(); 
     printf("Number of threads = %d\n", nthreads); 
    } 
} 

Выход:

Thread = 0 
Number of threads = 1 

Как я могу сделать параллелизм?

ответ

0

Если вы используете GCC/G ++ вы должны убедиться, что вы включили openmp расширения с -fopenmpкомпилятором и линкера вариантов. Указание его во время связывания будет связано в соответствующей библиотеке (-lgomp).

Compile что-то вроде:

g++ -fopenmp myfile.c -o exec 

или:

g++ -c myfile.c -fopenmp 
g++ -o exec myfile.o -fopenmp 

Если вы не зададите опцию -fopenmp компиляции программа будет компилироваться, но она будет работать, как если бы не использовался OpenMP. Если ваша программа не использует omp_set_num_threads, чтобы установить количество потоков, они могут быть установлены из командной строки:

OMP_NUM_THREADS=8 ./exec 

Я думаю, что по умолчанию, как правило, число ядер в конкретной системе.

+1

ok.I понял.Thnaks снова. – andressophia

+0

Добро пожаловать. Рад, что у вас это получилось. Я более подробно изложил свой ответ. Также я упоминаю переменную среды OMP_NUM_THREADS. –

+0

Я просто попробовал. Спасибо за Ваш ответ. – andressophia

Смежные вопросы