《并行计算的编程模型》一2.3.4 锁与中断

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

2.3.4 锁与中断

在2.2.2节中,讲到GASNet可以在客户端并行执行AM处理程序,即使客户端是单线程的。而且多线程客户端在执行过程中需要避免并行调用GASNet的屏障函数。因此本节将重点介绍GASNet的控制并发机制。
GASNet提供了专门的接口处理线程安全性,由于存在多线程执行GASNet的可能,这种接口对于单线程客户端非常重要。其中主要的机制是一个简单的互斥锁,称作“处理程序安全锁”或“HSL”,数据类型为基于互斥锁类型的gasnet_hsl_t类型。目的是为了确保该互斥锁类型适合于给定的程序实现(其中包括GASNet客户端与其实现都为单线程时无操作的情况)。

除了GASNet规范中提及的细节描述外,上述函数与pthread_mutex_t中的常量、函数非常相似。同POSIX线程一样,这些操作能够防止对数据结构或代码进行并行访问。关于互斥锁的使用方法不在本章讨论的范围之内。需要注意的是,上述操作为节点本地的互斥锁,且GASNet没有提供跨节点互斥处理机制。但是2.6.5节的示例将会讲到如何使用AM实现一个著名的互斥共享内存算法。
除前文中介绍的用于执行客户端AM处理程序的内部线程方法之外,GASNet规范允许出现中断驱动实现情况。虽然写本书时尚未出现这样的应用实现,但是这里简要地介绍一下相关概念。

上述的两个函数通常成对使用,它们定义了线程上不能被AM处理程序执行过程中断的代码段。这与使用HSL方式避免多线程并行访问给定代码或数据有较大的不同。无中断部分主要用于保护可能由客户端处理程序和非处理程序访问的非重入客户端代码。无中断部分使用较少有两个主要原因:(1)使得HSL能够隐式访问无中断部分;(2)AM处理程序在隐式无中断部分执行。注意如果存在动态循环嵌套操作,那么上述函数不必嵌套,因此客户端主要负责无中断部分。
在使用GASNET_SEQ构建时,当且仅当GASNet实现既不使用线程也不使用内部中断执行客户端处理程序时,不需要编译互斥调用。

相关文章
|
SQL 分布式计算 Java
GraalVM在Facebook大量使用,性能提升显著!
GraalVM在Facebook大量使用,性能提升显著!
1020 0
GraalVM在Facebook大量使用,性能提升显著!
|
9月前
|
存储 机器学习/深度学习 缓存
性能最高提升7倍?探究大语言模型推理之缓存优化
本文探讨了大语言模型(LLM)推理缓存优化技术,重点分析了KV Cache、PagedAttention、Prefix Caching及LMCache等关键技术的演进与优化方向。文章介绍了主流推理框架如vLLM和SGLang在提升首Token延迟(TTFT)、平均Token生成时间(TPOT)和吞吐量方面的实现机制,并展望了未来缓存技术的发展趋势。
2746 12
性能最高提升7倍?探究大语言模型推理之缓存优化
|
机器学习/深度学习 数据可视化 算法
Ray Flow Insight:让分布式系统调试不再"黑盒"
作为Ray社区的积极贡献者,我们希望将这些实践中沉淀的技术能力回馈给社区,推动Ray生态在实际场景中的应用深度和广度。因此,2024年底我们做了激活AntRay开源社区的决策,AntRay会始终保持与官方Ray版本强同步(即AntRay会紧随Ray官方社区版本而发布),内部Feature亦会加速推向AntRay以开源研发模式及时反哺内部业务,同时会将社区关注的Feature提交至Ray官方社区,实现内外部引擎双向价值流动。后续我们会以系列文章形式同步蚂蚁推向开源的新特性,本文将重点介绍:Ray Flow Insight —— 让分布式系统调试不再"黑盒"。
|
机器学习/深度学习 监控 数据可视化
DeepSeek模型解释与可视化
深度学习模型常被视为“黑盒”,其决策过程难以理解,但在医疗、金融等高风险领域,理解模型决策至关重要。DeepSeek提供多种工具和方法,帮助解释和可视化模型的决策过程。本文介绍如何使用DeepSeek进行特征重要性分析、中间层可视化、局部解释(如LIME和SHAP)及训练过程监控,并通过代码示例详细讲解这些技巧,助力你掌握模型解释与可视化的方法。
|
10月前
|
缓存 PyTorch 算法框架/工具
离线推理精度问题分析
传统模型迁移到昇腾设备上出现了精度问题,介绍精度问题的定位方法和解决方案,重点介绍了精度问题的定位定界方法。
离线推理精度问题分析
|
11月前
|
文字识别 算法 API
飞桨x昇腾生态适配方案:04_模型精度对齐
本文详细介绍了模型在不同硬件(如GPU与NPU)间迁移时的精度对齐方法,包括前向和反向对齐的具体步骤。前向对齐通过模块化对比计算结果(如平均值、最大最小值等),确保误差在合理范围内;反向对齐则聚焦于梯度差异,利用二分法定位问题算子。同时,文章结合PPHGNet_small和MultiHead等具体模块代码,说明了如何打印输出并分析中间结果。此外,还探讨了私有格式、梯度异常及特殊shape等可能影响精度的因素,并提出相应解决策略。整体流程清晰,为跨硬件模型迁移提供了实用指导。
573 10
|
机器学习/深度学习 存储 PyTorch
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
在大规模深度学习模型训练中,GPU内存容量常成为瓶颈,特别是在训练大型语言模型和视觉Transformer时。本文系统介绍了多种内存优化策略,包括混合精度训练、低精度训练(如BF16)、梯度检查点、梯度累积、张量分片与分布式训练、
631 14
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
|
自然语言处理 Kubernetes 异构计算
推理降本与提升资源效率的实践
本课程从业务角度探讨大模型推理部署及资源利用率提升。首先分析大模型与GPU发展趋势,包括模型开源、规模增长及多模态能力增强;其次介绍高效部署大模型推理业务的步骤,涵盖业务场景选择、架构优化及显存规划;接着讲解如何通过DeepCPU-LLM框架和DeepNCCL通讯库优化推理效率;最后探讨通过KuberGPU实现细粒度GPU资源管理,提升整体资源利用率,降低推理成本。
|
人工智能 并行计算 编译器
【AI系统】SIMD & SIMT 与 CUDA 关系
本文深入解析了AI芯片中SIMD和SIMT的计算本质,基于NVIDIA CUDA实现的对比,探讨了不同并行编程模型,包括串行(SISD)、数据并行(SIMD)和多线程(MIMD/SPMD)。文章详细介绍了各模型的特点及应用场景,特别强调了英伟达GPU中的SIMT机制如何通过SPMD编程模型实现高效并行计算,以及SIMD、SIMT、SPMD之间的关系和区别。
982 13

热门文章

最新文章