并行硬件环境及并行编程

news2025/6/9 0:28:54

文章目录

  • A1. (并行编程 基于的)硬件环境 的 基本模型
  • A2. 特定的硬件实现
  • B1. 并行编程基本模型与编程技术
    • ✅ 并行编程的一般流程
      • **第一阶段:基于“编程直觉模型”设计程序**
      • **第二阶段:程序编译并部署到实际硬件**
  • B2.特定的 硬件环境下的 并行编程

A1. (并行编程 基于的)硬件环境 的 基本模型

  • 缓存一致性
  • 内存一致性模型
  • 同步原语

Coherence is a key hardware design concept and is a necessary part of our intuitive notion the memory abstraction.
缓存一致性是硬件设计中的一个关键概念,并且是我们对“内存抽象”的直觉理解中不可缺少的一部分。
“Memory abstraction”(内存抽象)指的是:我们希望内存就像一个统一的存储体,不管由谁访问,结果都是一致的。
“Coherence”(一致性)确保这一点在多处理器系统中成立。

However, parallel software often makes stronger assumptions about how memory behaves.
然而,并行软件通常会对内存行为做出更强的假设。
比如程序员可能会假设某个写操作会立即对其他线程可见,或者假设不同线程看到的共享变量更新顺序是一致的——这在现代硬件中未必成立,需要内存模型(即符合哪一种内存一致性模型)来进行约束。

Note that sequential consistency does not obviate the need for synchronization.
SC allows operations from different processes to be interleaved arbitrarily and at the granularity of individual instructions.
Synchronization is needed if we want to preserve atomicity (mutual exclusion) across multiple memory operations from a process, or if we want to enforce certain orders in the interleaving across processes.
顺序一致性只是规定了所有处理器看到的操作顺序,但不会自动保证并发程序中所需的临界区互斥、原子性、同步条件等正确性
因此,仍然需要锁、信号量、屏障等同步手段。
在顺序一致性模型下,来自不同进程的操作可以以单条指令为粒度进行任意交错执行。
如果我们希望在一个进程的多个内存操作之间保持原子性(互斥性),或希望在多个进程之间的操作交错中强制实施某些顺序,就必须使用同步机制。

Section 5.6 examines how the low-level synchronization operations make use of the available hardware primitives on cache coherent multiprocessors, and how the algorithms can be tailored to use the machine efficiently.
第 5.6 节将研究低层次同步操作如何利用缓存一致性多处理器所提供的硬件原语(primitives),以及如何对同步算法进行调整以高效利用机器资源。
这句话重点在于:
低层次同步操作:如锁、自旋锁、原子操作(如 compare-and-swap);
硬件原语:指的是架构层面提供的支持同步的功能,比如总线锁、cache invalidation、load-linked/store-conditional 等;
tailored:是指对算法做调整,使它们能更好地“贴合”当前硬件的工作方式,从而获得更好的效率(如减少总线争用、避免伪共享等)。

The latter portions of the chapter examine the implications these cache coherent shared memory architectures have for software that runs on them.
本章后半部分将探讨这些具有缓存一致性(cache coherent)的共享内存架构对其上运行的软件所产生的影响。
这里说的是:“缓存一致性共享内存系统”不仅是硬件问题,还会影响到运行其上的软件设计,尤其是在多线程程序、同步机制和性能优化方面。

A2. 特定的硬件实现

B1. 并行编程基本模型与编程技术

并行编程通常先按编程直觉模型(如 SC)设计与验证逻辑,然后在部署或实现阶段,再通过编译器或硬件机制适配具体平台的内存一致性模型

✅ 并行编程的一般流程

第一阶段:基于“编程直觉模型”设计程序

  • 通常假设 Sequential Consistency(SC)
    ➤ 所有线程都按程序顺序执行,操作全局统一生效,如同单核系统接力运行
  • 这个阶段开发者聚焦逻辑正确性
    • 判断是否有数据竞争(data race)
    • 验证临界区是否加锁
    • 思考共享变量访问的可见性与一致性
  • 代表工具/语言模型:
    • C++/Java 中的 SC-for-DRF(Data-Race-Free 程序视为顺序一致)模型
    • OpenMP/Pthreads 的默认语义
    • CUDA/OpenCL 中的 thread group sync 机制

第二阶段:程序编译并部署到实际硬件

  • 此时才要面对实际硬件的内存模型,如:
    • x86 的 TSO
    • ARM、RISC-V 的 RCsc/RCpc
    • GPU 的非常弱一致性模型
  • 编译器或程序员需要:
    • 插入合适的 memory fences(内存栅栏)
    • 使用 atomic 指令 / 原语
    • 利用 内存模型相关 API(如 std::memory_order_acquire 等)

B2.特定的 硬件环境下的 并行编程

Section 5.7 discusses the implications for parallel programming more generally, putting together our knowledge of parallel programs from Chapters 2 and 3 and of bus-based cache-coherent architecture from this chapter.
第 5.7 节将从更广义的角度探讨这些架构对并行编程的影响,并综合第 2 章和第 3 章关于并行程序的知识,以及本章关于基于总线的缓存一致性架构的内容。
这里将回顾前面章节介绍的 并行程序基本模型与编程技术
与本章所学的 硬件架构(总线型缓存一致性系统) 结合,进一步分析编程层面会遇到什么样的约束与优化方向。

In particular, it discusses how temporal and spatial data locality may be exploited to reduce cache misses and traffic on the shared bus.
特别地,它会讨论如何利用时间局部性空间局部性来减少缓存未命中率(cache miss)和共享总线上的数据通信(流量)。
Temporal locality(时间局部性):近期访问的数据未来可能还会被访问(→ 使用缓存可以提高命中率);
Spatial locality(空间局部性):访问一个地址后,很可能会访问邻近地址(→ 利用块式缓存可提高效率);
降低 cache miss 和总线流量 是共享内存并行编程中性能优化的关键目标,尤其是在基于总线的系统中,总线是瓶颈资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2404750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go语言map扩容

map是什么? ​在Go语言中,map是一种内置的无序key/value键值对的集合,可以根据key在O(1)的时间复杂度内取到value,有点类似于数组或者切片结构,可以把数组看作是一种特殊的map,数组的key为数组的下标&…

5.3 Spring Boot整合JPA

本文详细介绍了如何在Spring Boot项目中整合Spring JPA,实现对数据库的高效操作。首先,创建Spring Boot项目并添加必要的依赖,如Druid数据源。接着,配置数据源属性,创建实体类Comment和Article,并使用JPA注…

腾讯开源视频生成工具 HunyuanVideo-Avatar,上传一张图+一段音频,就能让图中的人物、动物甚至虚拟角色“活”过来,开口说话、唱歌、演相声!

腾讯混元团队提出的 HunyuanVideo-Avatar 是一个基于多模态扩散变换器(MM-DiT)的模型,能够生成动态、情绪可控和多角色对话视频。支持仅 10GB VRAM 的单 GPU运行,支持多种下游任务和应用。例如生成会说话的虚拟形象视频&#xff0…

[文献阅读] Emo-VITS - An Emotion Speech Synthesis Method Based on VITS

[文献阅读]:An Emotion Speech Synthesis Method Based on VITS 在VITS基础上通过参考音频机制,获取情感信息,从而实现的情感TTS方式。 摘要 VITS是一种基于变分自编码器(VAE)和对抗神经网络(GAN&#xf…

OpenCV-Python Tutorial : A Candy from Official Main Page(持续更新)

OpenCV-Python 是计算机视觉领域最流行的开源库之一,它结合了 OpenCV (Open Source Computer Vision Library) 的 C 高性能实现和 Python 的简洁易用特性,为开发者提供了强大的图像和视频处理能力。具有以下优势: 典型应用领域: …

【Vue】指令补充+样式绑定+计算属性+侦听器

【指令补充】 【指令修饰符】 指令修饰符可以让指令的 功能更强大,书写更便捷 分类: 1.按键修饰符(侦测当前点击的是哪个按键) 2.事件修饰符(简化程序对于阻止冒泡, 一些标签的默认默认行为的操作&…

LLM 笔记:Speculative Decoding 投机采样

1 基本介绍 投机采样(Speculative Sampling)是一种并行预测多个可能输出,然后快速验证并采纳正确部分的加速策略 在不牺牲输出质量的前提下,减少语言模型生成 token 所需的时间 传统的语言模型生成是 串行 的 必须生成一个&…

当SAP系统内计划订单转换为生产订单时发生了什么?

【SAP系统研究】 #SAP #计划订单 #生产订单 #采购申请 一、关于计划订单的一点疑惑 曾经对SAP为什么会有计划订单,是感到很疑惑的。 这个界面简单,配置点也不多,能被随意“摆布”,一旦要变形就消失得无影无踪的计划订单,why? 但是,再次重新审视过之后,才发现它其实…

PDF转PPT转换方法总结

你是否遇到过这些场景? 收到客户发来的产品手册PDF,明天就要用它做演示; 公司历史资料只有PDF版,领导突然要求更新为幻灯片。 这时PDF转PPT工具就成了救命稻草。接下来,介绍三种PDF转PPT工具。 1. iLoveOFD在线转换…

3D Web轻量化引擎HOOPS Communicator的定制化能力全面解析

HOOPS Communicator 是Tech Soft 3D推出的高性能Web工程图形引擎。它通过功能丰富的JavaScript API,帮助开发团队在浏览器中快速添加2D/3D CAD模型的查看与交互功能。该引擎专为工程应用优化,支持大规模模型的流畅浏览、复杂装配的智能导航、流式加载和服…

【力扣链表篇】19.删除链表的倒数第N个节点

题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]…

如何使用Jmeter进行压力测试?

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬…

Grafana-ECharts应用讲解(玫瑰图示例)

工具: MySQL 数据库 MySQL Workbench 数据库管理工具(方便编辑数据) Grafana v11.5.2 Business Charts 6.6(原 Echarts插件) 安装 安装 MySQL社区版安装 MySQL Workbench安装 Grafana在 Grafana 插件中搜索 Business Charts 进行安装以上安装步骤网上教程很多,自行搜…

前端vue3 上传/导入文件 调用接口

点击按钮导入&#xff1a; <el-uploadaction"https://run.mocky.io/v3/9d059bf9-4660-45f2-925d-ce80ad6c4d15":auto-upload"false":on-change"handleFileChange":show-file-list"false"><el-button type"warning"…

Python训练营-Day22-Titanic - Machine Learning from Disaster

Description linkkeyboard_arrow_up &#x1f44b;&#x1f6f3;️ Ahoy, welcome to Kaggle! You’re in the right place. This is the legendary Titanic ML competition – the best, first challenge for you to dive into ML competitions and familiarize yourself w…

FreeCAD:开源世界的三维建模利器

FreeCAD 开发模式 FreeCAD的开发采用多语言协作模式&#xff0c;其核心框架与高性能模块主要使用C构建&#xff0c;而用户界面与扩展功能则通过Python脚本实现灵活定制。具体来说&#xff1a; C核心层&#xff1a;作为基础架构&#xff0c;C负责实现与Open CASCADE Technology…

嵌入式里的时间魔法:RTC 与 BKP 深度拆解

文章目录 RTC实时时钟与BKPUnix时间戳UTC/GMT时间戳转换时间戳转换BKP简介BKP基本结构1. 电池供电模块&#xff08;VBAT 输入&#xff09;2. 侵入检测模块&#xff08;TAMPER 输入&#xff09;3. 时钟输出模块&#xff08;RTC 输出&#xff09;4. 内部寄存器组 RTC简介RTC时钟源…

图卷积网络:从理论到实践

图卷积网络&#xff08;Graph Convolutional Networks, GCNs&#xff09;彻底改变了基于图的机器学习领域&#xff0c;使得深度学习能够应用于非欧几里得结构&#xff0c;如社交网络、引文网络和分子结构。本文将解释GCN的直观理解、数学原理&#xff0c;并提供代码片段帮助您理…

ES 学习总结一 基础内容

ElasticSearch学习 一、 初识ES1、 认识与安装2、 倒排索引2.1 正向索引2.2 倒排索引 3、 基本概念3.1 文档和字段3.2 索引和倒排 4 、 IK分词器 二、 操作1、 mapping 映射属性2、 索引库增删改查3、 文档的增删改查3.1 新增文档3.2 查询文档3.3 删除文档3.4 修改文档3.5 批处…

Maven 构建缓存与离线模式

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…