Visual Studio 11开发指南(18)C++11更新-自动矢量器使用

最后更新于:2022-04-01 10:27:29

自动矢量器使用 在 MSDN 文档中,现在编译器自动性能方面的原因是有能力的"概述"循环和支持 SIMD 指令,这是大多数情况下调用自动性能的话,对于所有 X 86 处理器 / X 64 现代的处理器中运行的速度要快 8 倍**。** 与 Visual Studio 11 的预览版本中,SIMD 指令和概述记录是自动优化使用。 与 Visual Studio 2010 年 c/c + + 中下面的循环 ~~~ for (int i=0;i <MAX_;i++) { a[i]=i*7.0; } ~~~ 给出下面的汇编程序代码用于指令和寄存器操纵的浮点数。(**fld、 fmul、 fstp、 fstp、 ST (1) (0)、 ST** )) ~~~ for (int i=0;i <MAX_;i++) fld QWORD PTR __real@401c000000000000 add esp, 4 mov esi, eax xor eax, eax mov DWORD PTR _i$83361[ebp], eax $LN3@wmain: { a[i]=i*7.0; fild DWORD PTR _i$83361[ebp] inc eax mov DWORD PTR _i$83361[ebp], eax fmul ST(0), ST(1) fstp QWORD PTR [esi+eax*8-8] cmp eax, 100000000 ; 05f5e100H jl SHORT $LN3@wmain } ~~~   Visual Studio 11 在相同的环路循环中,**在默认情况下,**下面的代码是在汇编程序的特定的跟踪记录代码实现。(**movsd、 超低、 cvtdq2pd、 xmm0、 xmm1** )) ~~~ for (int i=0;i <MAX_;i++) movsd xmm1, QWORD PTR __real@401c000000000000 add esp, 4 mov esi, eax xor ecx, ecx npad 5 $LL9@wmain: { a[i]=i*7.0; movd xmm0, ecx cvtdq2pd xmm0, xmm0 inc ecx mulsd xmm0, xmm1 movsd QWORD PTR [esi+ecx*8-8], xmm0 cmp ecx, 100000000 ; 05f5e100H jl SHORT $LL9@wmain } ~~~ 是可能要禁用此功能吗? 是不足以转到该属性的 c + + 项目, 。代码生成。启用增强指令集**和选择**号增强说明 (/ 拱: IA32) (默认情况下,它是**没有设置**,这意味着是否启用了自动矢量化角),如下图所示 [![image](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-01_56fdf1507a0d6.png "image")](http://www.microsofttranslator.com/bv.aspx?from=fr&to=zh-CHS&a=http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-46-55-metablogapi%2F8422.image_5F00_16BD87FD.png) 在测试机器,未设置,对应: SSE2. 它是影响性能吗? 是对 1 万的迭代循环,看下优化以后的效果 没有说明 [![image](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-01_56fdf1509269f.png "image")](http://www.microsofttranslator.com/bv.aspx?from=fr&to=zh-CHS&a=http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-46-55-metablogapi%2F1072.image_5F00_455390DF.png) 说明 [![image](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-01_56fdf150aaef9.png "image")](http://www.microsofttranslator.com/bv.aspx?from=fr&to=zh-CHS&a=http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-46-55-metablogapi%2F6431.image_5F00_491135AF.png) 自动并行 在文档中表示,现在已经可以利用多处理器使用 VS 11的**并行处理功能,就能够启动多核优化的功能。新的指令/Qpar ,可启用此功能。 [![image](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-01_56fdf150c5eeb.png "image")](http://www.microsofttranslator.com/bv.aspx?from=fr&to=zh-CHS&a=http%3A%2F%2Fblogs.msdn.com%2Fcfs-file.ashx%2F__key%2Fcommunityserver-blogs-components-weblogfiles%2F00-00-01-46-55-metablogapi%2F6428.image_5F00_50D92851.png) 加速 c + + 的大规模并行处理 (AGP) 支持 VS 11 将使它也能够利用 GPGPU 中的图形卡的可能性。换句话说,它将可以混合使用传统代码 CPU 和 GPU 代码。   赶紧下载VS11体验吧 [http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200098144](http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200098144)  
';