Microsoft Visual Studio 2012 Express を使用して、Win 32 ビットおよび x64 ビット設定で「for」ループを自動並列化しようとしました。コマンド ライン オプションが /O2 /Qpar /Qpar-report:2 に設定され、最適化、自動並列化、および "for" ループ自動並列化の成功と失敗のレポートが有効になりました。32 ビットから 64 ビットの設定は、次の方法で変更されました: ( http://msdn.microsoft.com/en-us/library/vstudio/9yb4317s.aspx )。64 ビット バージョンの Windows がコンピューターで実行されています。私が使用したサンプル コードは、ここからのものです: ( http://msdn.microsoft.com/en-us/library/hh872235.aspx )。私が実行したコードは次のとおりです。
int A[1000];
void test()
{
___#pragma loop(hint_parallel(0))
___for (int i=0; i<1000; ++i)
___{
______A[i] = A[i] + 1;
___}
___for (int i=1000; i<2000; ++i)
___{
______A[i] = A[i] + 1;
___}
}
int main()
{
___test();
___return 0;
}
Win32 でビルドすると、次のレポート出力が得られます。
--- Analyzing function: void __cdecl test(void)
d:\myproject\mytest.cpp(4) : loop parallelized
d:\myproject\mytest.cpp(4) : loop not parallelized due to reason '1008'
x64 でのビルドでは、「ループが並列化されている」または「ループが並列化されていない」という報告はありませんでした。
なぜ報告がなかったのですか?Visual Studio 2012 Express しか持っていないのに、VS 2012 Professional が必要だったからですか? これはすべてのコンピューターで発生しますか、それとも VS 2012 のすべてのバージョンで発生しますか? 64 ビット Microsoft Visual Studios プロジェクトで自動並列化レポート ( /Qpar-report:2 ) を有効にするには、この問題をどのように修正すればよいですか?