网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 技术交流 >> 文章正文
  [组图]计算一个数组所有元素之和(无锁方法)           ★★★ 【字体:
计算一个数组所有元素之和(无锁方法)
作者:zenny_ch…    文章来源:http://blog.csdn.net/zenny_chen    点击数:    更新时间:2008-5-26    

上一贴介绍了比较常见的基于旋锁的并行计算方法。这里将介绍另一种无锁的并行计算方法。两者各有利弊。

同样是计算一个数组,在Blackfin561双核DSP中,可以利用两个核对一个数组进行同时计算,其中一个核计算该数组的前50个元素,另一个核计算该数组的后50个元素。

下面贴除源代码:

 

// 在共享存储区
//  shared.c

int resultA = 0, resultB = 0;

int progress = 0;


int array[100];

 

// 核A
// main.cpp

extern int array[100];
extern int resultA, resultB, progress;

int main(void)
{
    
// initialize the array
    for(int i=0; i<100; i++)
        array[i] 
= i + 1;
        
    register 
int result = 0;
      
    SICA_SYSCR 
&= ~0x20;    // Enable and activate core B
    
    
for(int i=0; i<50; i++)
        result 
+= array[i];    // calculate first 50 elements
        
    resultA 
= result;
    progress
++;                // this subtask has been completed
    
    
while(progress < 2);    // wait for the other subtask
    
    TRACE(
"The answer is: %d ", resultA + resultB);

    
return 0;
}

 

// 核B
// main.cpp

extern int array[100];
extern int resultB, progress;

int main(void)
{
    register 
int result = 0;
    
    
for(int i=50; i<100; i++)
        result 
+= array[i];        // calculate last 50 elements
        
    resultB 
= result;
    progress
++;

    
return 0;
}

 

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    对比ADI两代TD-SCDMA射频IC得
    [结尾篇]ADSP-TS20XS系列DSP
    一种基于DDS的幅值可调信号发
    基于ADSP2181的CAN总线通讯设
    一种采用单片机控制AD9854为
    在vs2008下使用ffmpeg(5):
    在vs2008下使用ffmpeg(4):
    在vs2008下使用ffmpeg(3):
    ADI AD8275电平转换16位ADC驱
    Boot在ADSP-BF533上的移植
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:AnalogCN安诺电子 湘ICP备06016315号