为什么Visual Studio 2012 Express的自动并行化报告功能仅适用于Win32?

时间:2013-04-25 23:47:30

标签: visual-c++ visual-studio-2012 parallel-processing 64-bit 32bit-64bit

我尝试使用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)?

1 个答案:

答案 0 :(得分:3)

/ Qpar-report在零售版的x64编译模式下运行良好。 Express不使用编译器的特殊版本。

可能的解释是您忘记还为x64配置设置/ Qpar-report选项。每个配置都保存这些设置。右键单击项目“属性”。检查对话框顶部的组合框。确保您已选择正确的配置和平台。

并确保为Release版本执行此操作,Debug构建不会并行化这些循环。