如何在 Microsoft Visual Studio 2017 或 2019 中启用或使用自动矢量化以及自动并行化?
Posted
技术标签:
【中文标题】如何在 Microsoft Visual Studio 2017 或 2019 中启用或使用自动矢量化以及自动并行化?【英文标题】:How to enable or use auto vectorization along with auto parallelization in Microsoft Visual Studio 2017 or 2019? 【发布时间】:2020-12-15 01:16:33 【问题描述】:我正在尝试在下面的 for 循环中测试自动矢量化。我无法让自动矢量化工作。代码如下所示。
float dotproduct(float a[], float b[], int size)
int x = 0.0;
for (int i = 0; i < size; i++)
x = x + a[i] * b[i];
return x;
int main()
const int N = 8;
float a[N] = 2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0;
float b[N] = 9.0,8.0,7.0,6.0,5.0,4.0,3.0,2.0;
dotproduct(a, b, N);
cout << dotproduct(a, b, N);
return 0;
我将/Qvec-report:2 /Qpar-report:2
行添加到我的项目属性页面的附加选项部分,但我没有收到说明矢量化是否失败的报告。
【问题讨论】:
你有没有试过把这个语法`#pragma loop(hint_parallel(8))`放在for循环之上? 是的,我尝试使用它,但仍然没有任何变化。 【参考方案1】:没有矢量化报告,因为您在调试模式 (/Od
) 下编译,在这种情况下,由于禁用了优化,因此不会应用自动矢量化。所以,切换到发布版本。
/O1
和 /OS
会导致报告失败原因为 1404。
/Ox
和 /O2
将尝试自动矢量化,但使用 /fp:precise
(您现在已设置)此循环由于原因 1105 无法矢量化。指定 /fp:fast
将使其工作。
【讨论】:
以上是关于如何在 Microsoft Visual Studio 2017 或 2019 中启用或使用自动矢量化以及自动并行化?的主要内容,如果未能解决你的问题,请参考以下文章
微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版
如何在 Microsoft Visual Studio 2019 中调试 nestjs 程序?