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

自动-矢量器使用

在 MSDN 文档中,它注意到,现在编译器自动性能方面的原因是有能力的"概述"循环和支持 SIMD 指令,这是大多数情况下,对于所有 X 86 处理器 / X 64 现代的处理器速度快 8 倍也许一个循环。

在 Visual Studio 2010 年,使其说明,需要考虑添加的选项编译器选项

与 Visual Studio 11 的预览,SIMD 指令和相关的记录这一事实自动使用。

与 Visual Studio 2010 年 C/c + + 中下面的循环

1.for (int i=0;i <MAX_;i++) 2. { 3. a[i]=i*7.0; 4. }


给出下面的汇编程序代码用于指令和寄存器操纵的浮点数。(fld、 fmul、 fstp、 fstp、 ST (1) (0)、 ST ))

1.; 38 : for (int i=0;i <MAX_;i++) 2. 3. fld QWORD PTR __real@401c000000000000 4. add esp, 4 5. mov esi, eax 6. xor eax, eax 7. mov DWORD PTR _i$83361[ebp], eax 8.$LN3@wmain: 9. 10.; 39 : { 11.; 40 : a[i]=i*7.0; 12. 13. fild DWORD PTR _i$83361[ebp] 14. inc eax 15. mov DWORD PTR _i$83361[ebp], eax 16. fmul ST(0), ST(1) 17. fstp QWORD PTR [esi+eax*8-8] 18. cmp eax, 100000000 ; 05f5e100H 19. jl SHORT $LN3@wmain 20. 21.; 41 : }


Visual Studio 11 在相同的环路,在默认情况下为下面的代码使用说明和特定的跟踪记录在汇编程序。(movsd、 超低、 cvtdq2pd、 xmm0、 xmm1 ))

1.; 38 : for (int i=0;i <MAX_;i++) 2. 3. movsd xmm1, QWORD PTR __real@401c000000000000 4. add esp, 4 5. mov esi, eax 6. xor ecx, ecx 7. npad 5 8.$LL9@wmain: 9. 10.; 39 : { 11.; 40 : a[i]=i*7.0; 12. 13. movd xmm0, ecx 14. cvtdq2pd xmm0, xmm0 15. inc ecx 16. mulsd xmm0, xmm1 17. movsd QWORD PTR [esi+ecx*8-8], xmm0 18. cmp ecx, 100000000 ; 05f5e100H 19. jl SHORT $LL9@wmain 20. 21.; 41 : }


它是可能要禁用此功能吗?

是不足以转到该属性的 c + + 项目, 。代码生成。启用增强指令集和选择号增强说明 (/ 拱: IA32) (默认情况下,它是没有设置,这意味着是否启用了自动矢量化角),如下图所示

image

在我的测试机器,未设置,对应/ 拱: SSE2.

您还会注意到现在 11 VS 管理的新的全指令

它是影响性能吗?

是对 1 万的迭代,我获取大量的优化上我简单的循环

没有说明

image

说明

image

自动并行

在文档中表示,现在已经可以利用多处理器使用 VS 11,并行,就能够重新组织的环路上多核爆发中的一项新功能的机器。新的指令/Qpar ,可启用此功能,#杂注,用于标识该并行化的循环和开发人员必须表明协办。

image

但是在时间或我你说,在预览中安装 Visual Studio 11、 bug 不会不调查更详细。

加速 c + + 的大规模并行处理 (AGP) 支持

VS 11 将使它也能够利用 GPGPU 中的图形卡的可能性。换句话说,它将可以混合使用传统代码 CPU 和 GPU 代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值