18、并行编程的高级方法与性能分析

并行编程的高级方法与性能分析

1. 并行编程的进一步方法

1.1 全局数组

全局数组(GA)方法是为支持科学计算应用程序的程序设计而开发的,这些应用程序主要使用基于数组的数据结构,如向量或矩阵。GA方法以库的形式提供,具有适用于不同并行平台的C、C++和Fortran接口。

GA方法基于全局地址空间,全局数组可以存储在其中,每个进程与全局数组的一个逻辑块相关联,访问该块的速度比访问其他块更快。GA库为共享地址空间提供基本操作(如put、get、scatter、gather),以及用于访问全局数组的原子操作和锁机制。进程之间的数据交换可以通过全局数组进行,也可以使用像MPI这样的消息传递库。化学模拟是GA方法的一个重要应用领域。

1.2 事务性内存

当线程并发访问共享数据时,必须进行同步。避免竞态条件的标准方法是使用互斥变量或临界区。典型的编程风格如下:
- 程序员识别程序中的临界区,并用互斥变量保护它们。进入临界区时锁定互斥变量,离开时解锁。
- 这种锁机制保证一次只有一个线程进入临界区,实现互斥。

使用锁机制会导致临界区的执行顺序化,这可能会导致性能问题,临界区可能成为瓶颈。特别是在使用大量线程且临界区较大、执行时间较长时,通常会出现可扩展性问题。

对于像典型多核架构这样只有几个核心的小型并行系统,这个问题并不重要,因为涉及的线程很少。但对于未来具有大量核心的多核系统的大型并行系统,必须仔细考虑这个问题,并显著降低临界区的粒度。此外,使用锁机制时,程序员必须严格遵循约定,明确保护所有可能发生共享数据访问冲突的程序点,以保证程序行为正确。如果程序员遗漏了一个应该锁定的程序点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值