《并行计算的编程模型》一3.4.2 分配和释放

简介: 本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.4.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4.2 分配和释放

对称堆的分配和释放函数与C语言标准的分配和释放函数类似,唯一复杂的因素是用户必须确保每个PE在大小和顺序上执行完全相同的分配序列。这样做能确保对称堆的一致性,允许PE使用自身对象的地址定位对称对象。
对称准则:每个PE的分配和释放操作都要按相同的顺序并使用相同的变量来执行。不能保证必要的对称性至少会导致程序挂起,因为分配是全局同步事件。
代码清单3-2通过创建三个对称对象展示了这一准则。数组a和b通过static关键字保证了对称,指针c指向了另一块由shmalloc()分配再由shfree()释放的对称内存(有10个整数的数组)。因为每个PE实例有相同的声明和动态分配序列,所以这个堆是对称的。
screenshot
screenshot
代码清单3-3展示了几个违背对称准则之处。注意该程序的主要错误是分配的执行、顺序或大小都一定程度上取决于每个PE上不同的数据。
screenshot

相关文章
|
6月前
|
算法 应用服务中间件 nginx
超越内存限制:深入探索内存池的工作原理与实现
这篇文章将深入探索内存池的工作原理与实现,介绍如何超越传统的内存限制。首先,我们将了解什么是内存池以及它与传统内存分配方式的不同之处。接着,我们将探索内存池的工作原理,包括内存池的数据结构和算法。我们还将解释内存池如何提升性能,避免内存碎片化,并减少内存分配的开销。此外,我们将介绍一些常见的内存池实现技术,例如固定大小内存池和动态大小内存池,并对比它们的优劣之处。
43 0
|
2月前
|
Rust 并行计算 安全
Rust中的并行与并发优化:释放多核性能
Rust语言以其内存安全和高效的并发模型在并行计算领域脱颖而出。本文深入探讨了Rust中的并行与并发优化技术,包括使用多线程、异步编程、以及并行算法等。通过理解并应用这些技术,Rust开发者可以有效地利用多核处理器,提高程序的性能和响应能力。
|
8月前
|
机器学习/深度学习 PyTorch 算法框架/工具
降龙十八掌:这套优化transformer内存占用的组合技值得收藏(1)
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
200 0
|
8月前
|
存储 PyTorch 测试技术
降龙十八掌:这套优化transformer内存占用的组合技值得收藏(2)
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
228 0
|
8月前
|
机器学习/深度学习 存储 PyTorch
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
降龙十八掌:这套优化transformer内存占用的组合技值得收藏
161 0
|
11月前
|
存储 C语言
内存的读写过程、现实模型及指针
内存的读写过程、现实模型及指针
114 0
内存的读写过程、现实模型及指针
|
并行计算
《并行计算的编程模型》一2.2.2 线程
本节书摘来华章计算机《并行计算的编程模型》一书中的第2章 ,第2.2.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
868 0
|
并行计算 API
《并行计算的编程模型》一3.4.3 关于分配和对称堆的说明
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.4.3节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
902 0
|
并行计算
《并行计算的编程模型》一3.7.2 同步数组和工作数组
本节书摘来华章计算机《并行计算的编程模型》一书中的第3章 ,第3.7.2节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1060 0