1

コード:

#include <stdio.h>
#include <stdlib.h>
#include <omp.h>

int main(int argc, char** argv){

    omp_set_dynamic(0);
    omp_set_num_threads(4);

    #pragma omp paralell
    {
        printf("%d\n", omp_get_thread_num());
    }

}

出力:

0

出力は、0、1、2、および 3 の順列であるべきではありませんか?

4

3 に答える 3

1

ソース コードをコピーして貼り付けた場合、"parallel" のスペルが間違っているためだと思います。-W フラグが設定されていない場合、gcc は openmp プラグマのスペルミスを黙って無視することがわかりました。-Wall でコンパイルすると、

warning: ignoring #pragma omp paralell [-Wunknown-pragmas]
#pragma omp paralell

したがって、gcc に警告を表示させることをお勧めします。

于 2013-10-15T16:43:44.533 に答える
0

また、gcc/icc/vc++ などの主流のコンパイラではデフォルトで無効になっているコンパイラの OpenMP サポートを有効にすることを忘れないでください。

于 2013-10-15T16:44:18.833 に答える