21、并行执行的不同类型及数据一致性处理

并行执行的不同类型及数据一致性处理

1. 函数并行性

1.1 单核心到多核心的转变:以冒泡排序为例

在一些场景中,如PC软件、智能手机和平板电脑,通常会有大量独立的应用程序并行执行。然而,在高性能计算中,函数并行性并不常见,不过图形处理中的渲染就是一个函数大规模并行化的例子。

在经典嵌入式领域,函数之间紧密关联,且很多函数最初是为单处理器核心(单核)开发的。当转向多核时,会遇到诸多问题,因为代码间的紧密交织使得不能简单地将代码拆分并分布到多个处理器核心上。下面以冒泡排序算法为例进行说明。

冒泡排序算法很简单,代码如下:

void BubbleSort(unsigned int* s, unsigned int size)
{
    unsigned int i,j,temp;
    for(i=1; i<size; i++) {
        for(j=0; j<(size-i); j++) {
            if(s[j] > s[j+1])
            {
                temp = s[j];
                s[j] = s[j+1];
                s[j+1] = temp;
            }
        }
    }
}

对于一个包含n个元素的数组,内层循环迭代次数c的计算公式为:
[c = \sum_{i=1}^{n}(n - i) = \frac{n^2 - n}{2}]
这个数字对算法的执行时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值