zoukankan      html  css  js  c++  java
  • 加速计算技术---基于SSE/AVX指令集

    基于指令集的加速是利用了SIMD(Single Instruction Stream, Multiple Data Stream单指令流多数据流操作)的思路,它可以一次指令操作多组数据。

    #include <pmmintrin.h>//SSE
    #include <immintrin.h>//AVX

    	

    RecordTimer tm; tm.start(); float sum_avg[10000000]; for (int i = 0; i < 10000000; i++) { sum_avg[i] = i * 1.0 * i; } tm.end(); double ticks = tm.getTick(); std::cout <<"无并行计算:" << ticks << std::endl;//耗时 45.6397 tm.start(); float sum_avg2[10000000]; __m128 m1; __m128* dst = (__m128*)sum_avg2; for (int i = 0; i < 10000000; i+=4) { m1 = _mm_set_ps(i+3, i + 2, i + 1, i); *dst = _mm_mul_ps(m1, m1); dst++; } tm.end(); ticks = tm.getTick(); std::cout << "并行计算1:" << ticks << std::endl;//耗时22.8161 tm.start(); float sum_avg3[10000000]; __m256 m2; __m256* dst2 = (__m256*)sum_avg3; for (int i = 0; i < 10000000; i += 8) { m2 = _mm256_set_ps(i + 7, i + 6, i + 5, i + 4, i + 3, i + 2, i + 1, i); *dst2 = _mm256_mul_ps(m2, m2); dst2++; } tm.end(); ticks = tm.getTick(); std::cout << "并行计算2:" << ticks << std::endl; //耗时10.7683

      上面是操作同一组数据测试得到的计算时间,可以发现,AVX > SSE > 未优化的。

  • 相关阅读:
    IIS5布署MVC3
    操作数数据类型 ntext 对于 max 运算符无效
    iis配置
    IIS取消目录浏览
    mediamind SyncAds
    告诉你如何做网站运营
    xml as3解析
    mediamind 组件
    AIR for androd 笔记
    开发AIR for android 大象游戏合集开发总结
  • 原文地址:https://www.cnblogs.com/merlinzjl/p/14615450.html
Copyright © 2011-2022 走看看