C言語でのOpenMPの使い方について教えてください. プログラミングを

C言語でのOpenMPの使い方について教えてください.
プログラミングを勉強中の者です.
現在,Visual Studio 2015を用いてC言語でプログラミングを行っています. 並列処理に興味を持って今作っているプログラムにOpenMPを導入してみたのですが,どうも並列化されていないようです.
そこでOpenMPのテストの為に以下のようなソースコードを書きました.
#include
#include
#include
int main(void) {
#pragma omp parallel num_threads(4)
{
printf(“現在使用中のスレッド数は「%d」です。\n”, omp_get_num_threads());
printf(“使用可能なスレッド数は最大「%d」です。\n”, omp_get_max_threads());
}
system(“pause”);
return 0;
}
これを「デバッグなしで開始」すると,
現在使用中のスレッド数は「1」です。
使用可能なスレッド数は最大「4」です。
と表示されます.
“#pragma omp parallel num_threads(4)”とスレッド数を指定しており,かつその数は使用可能な最大スレッド数を超えていないにも関わらず,スレッド数が1となってしまっていて並列処理が行われていませんでした.
ちなみに,プロパティ>構成プロパティ>C/C++>言語の「OpenMPのサポート」は「はい(/openmp)」に設定してあります.
この場合,どのような原因が考えられるでしょうか?
詳しい方,教えていただけないでしょうか.
※参考になるか分かりませんが,実は
プロパティ>構成プロパティ>リンカー>システムの「サブシステム」を「コンソール」にしても,実行後に勝手にコンソール画面が消えてしまうため,system(“pause”);という行を追加しています.
何らかの理由で,プロパティの変更が反映されなくなってしまっているのでしょうか?
初月無料の見放題はこちら
>type test.c
#include
#include
#include
int main(void) {
#pragma omp parallel num_threads(4)
{
printf(“現在使用中のスレッド数は「%d」です。\n”, omp_get_num_threads());
printf(“使用可能なスレッド数は最大「%d」です。\n”, omp_get_max_threads());
}
system(“pause”);
return 0;
}
>cl /openmp test.c
Microsoft(R) C/C++ Optimizing Compiler Version 19.14.26430 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
test.c
Microsoft (R) Incremental Linker Version 14.14.26430.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:test.exe
test.obj
>test
現在使用中のスレッド数は「4」です。
使用可能なスレッド数は最大「8」です。
現在使用中のスレッド数は「4」です。
使用可能なスレッド数は最大「8」です。
現在使用中のスレッド数は「4」です。
使用可能なスレッド数は最大「8」です。
現在使用中のスレッド数は「4」です。
使用可能なスレッド数は最大「8」です。
続行するには何かキーを押してください . . .
初月無料の見放題はこちら

コメント