我尝试使用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构建,我没有产生任何“循环并行化”或“循环未并行化”的报告。
为什么没有报道?是因为我只有2012年的视觉工作室快递,但我需要VS 2012专业版吗?这是发生在所有计算机上还是所有版本的VS 2012中?如何解决此问题,以便我将使用64位Microsoft Visual Studios项目进行自动并行化报告(/ Qpar-report:2)?
答案 0 :(得分:3)
/ Qpar-report在零售版的x64编译模式下运行良好。 Express不使用编译器的特殊版本。
可能的解释是您忘记还为x64配置设置/ Qpar-report选项。每个配置都保存这些设置。右键单击项目“属性”。检查对话框顶部的组合框。确保您已选择正确的配置和平台。
并确保为Release版本执行此操作,Debug构建不会并行化这些循环。