• 往期技术文章勘误


    最近在整理一个材料,借用了我在往期推送的一些技术文章中的内容。回头看文章中的细节,发现还是存在一些当时理解不充分,或者是笔误的地方。由于微信推送出去的文章已经不便于更改(除非重新推送),因此就特起一篇勘误文章,把目前发现的错误订正下,希望没有给大家带来困扰。

     

    《TI C6000优化手册——让代码看起来像钉子》

    错误位置:描述“restrict”关键字的部分。

    原文:“restrict”关键字也不能随便乱加,我们需要了解C6000的片上内存组成,只有当两个指针所指的内存在不同的block里时,restrict才是合法的。

    解析:正如“restrict”的作用所言,用它声明过的指针变量,能够保证不会同其它指针变量指向同一个数据体。这与指针指向的数据体是否在同一个block存储区无关,也不需要考虑具体的片上内存组成形式。比如:

    short *restrict a; 

    short *b;

    short x[100];

    short y[100];

     

    这里可以确认程序不会出现a=x;b=x;的情况。而a=x;b=y是合法的,即使数组x和y在同一个block中对齐到了同一个bank。

    勘误:删除该句。

     

    《现代处理器与代码性能优化》

    错误位置:代码片段3 

    原文:

    void array_sum(short *a, short *sum, length)

    {

         unsigned int i;

         short sum_temp1 = 0;

         short sum_temp2 = 0;

         for(i=0; i<length-1 ; i+=2)

         {

              sum_temp1 = sum_temp1   + a[i];

              sum_temp2 = sum_temp2   + a[i+1];

         }

         for(; i<length; i++)

         {

              sum_temp1 = sum_temp1   + a[i];

         }

         *sum = sum_temp1 + sum_temp1;

    }

     

    解析:最后一条语句中的一个sum_temp1应更改为sum_temp2。

    勘误:

    void array_sum(short *a, short *sum, length)

    {

         unsigned int i;

         short sum_temp1 = 0;

         short sum_temp2 = 0;

         for(i=0; i<length-1 ; i+=2)

         {

              sum_temp1 = sum_temp1   + a[i];

              sum_temp2 = sum_temp2   + a[i+1];

         }

         for(; i<length; i++)

         {

              sum_temp1 = sum_temp1   + a[i];

         }

         *sum = sum_temp1 + sum_temp2;

    }

     


    错误位置:4.1节 确认性能瓶颈,其中讲到Amdahl定律可以用公式表达为: Told/Tnew = 1/[(1-a) + a/b]。

    原文:设原程序执行时间为Told,其某部分代码所需执行时间占该时间的比例为a,而该部分性能提升的比例为b。

    解析:最后一小句中b表示为待优化部分代码性能提升的比例有误,很容易会发现这里公式推导不通,b正确的含义是待优化部分代码性能提升的倍数。

    勘误:设原程序执行时间为Told,其某部分代码所需执行时间占该时间的比例为a,而该部分性能提升的倍数为b。

     

     

     

    ·END·

     

    欢迎来我的微信公众号做客:信号君

    专注于信号处理知识、高性能计算、现代处理器&计算机体系 

     

    技术成长 | 读书笔记 | 认知升级

    幸会~

  • 相关阅读:
    001 云开发基础
    HttpClient 调用外部接口(简单实用)
    MD5加密(简单实现_可自行扩展)
    SAA C02考点梳理
    支配树
    CF1320E 题解
    dp套dp
    20210705模拟赛总结
    20210703模拟赛
    20210629模拟赛总结
  • 原文地址:https://www.cnblogs.com/ncdxlxk/p/9248629.html
Copyright © 2020-2023  润新知