2

我尝试使用 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专业版?这是否发生在所有计算机或所有版本的 VS 2012 上?如何解决此问题,以便在 64 位 Microsoft Visual Studios 项目中启用自动并行化报告 ( /Qpar-report:2 )?

4

1 回答 1

3

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

一个可能的解释是您忘记为您的 x64 配置设置 /Qpar-report 选项。这些设置按配置保存。右键单击您的项目,属性。选中对话框顶部的组合框。确保您选择了正确的配置和平台。

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

于 2013-04-28T16:22:08.093 回答