当前位置: 首页 > news >正文

并行计算的一些知识点分享--并行系统,并行程序, 并发,并行,分布式

并行计算  核是个啥?

在并行计算中,“核”通常指的是处理器的核心(CPU核心)。每个核心都是一个独立的处理单元,能够执行计算任务。多核处理器指的是拥有多个这样核心的单一物理处理器,这样的设计可以允许多个任务并行处理,从而提高计算效率和处理速度。
在并行编程中,开发者可以利用多核处理器的特性,设计出能够同时执行多个任务的应用程序。这种程序设计方式被称为多线程或并行处理,可以有效提升程序的性能,特别是在处理大量数据和复杂计算时。
在提及“核”的数量时,我们通常是在讨论系统中可用的CPU核心总数。例如,一个具有4核的处理器就能够在同一时间为4个不同的任务提供处理能力。现代的服务器、工作站和家用电脑通常都配备有多核处理器,以适应日益增长的性能需求。
 

多核处理器的工作原理

多核处理器的工作原理基于并行处理的概念,它将多个处理器核心集成在单个芯片上,以实现同时执行多个任务的目的。

以下是多核处理器工作原理的简要说明:


1. **核心结构**:多核处理器由两个或更多个独立的处理核心组成,每个核心都有自己的算术逻辑单元(ALU)、控制单元和缓存(一级缓存、二级缓存等)。这些核心可能共享一些资源,如内存控制器和总线接口,但它们也有独立的执行引擎。


2. **并行处理**:当操作系统或应用程序启动多个线程或进程时,多核处理器可以同时运行这些线程或进程。每个核心可以处理一个线程,这样多个核心就可以同时处理多个线程,从而提高整体的处理速度和效率。


3. **任务分配**:操作系统负责将任务分配给各个核心。这个过程称为负载平衡,目的是确保所有核心都得到充分利用,避免某些核心过载而其他核心空闲的情况。


4. **资源共享**:虽然每个核心都有一定的独立资源,但多核处理器也共享一些资源,如内存和I/O接口。这种共享需要通过一定的机制来管理,以防止多个核心访问共享资源时发生冲突。


5. **缓存一致性**:由于每个核心都有自己的缓存,当多个核心访问同一数据时,需要确保缓存中的数据一致。多核处理器使用缓存一致性协议(如MESI协议)来管理这个问题,确保所有核心看到的数据是同步的。


6. **功耗和热设计功耗(TDP)**:多核处理器在提高性能的同时,也需要考虑功耗和散热问题。为了管理功耗,现代处理器采用了动态频率和电压调整技术,根据负载情况自动调整核心的工作频率和电压。


7. **指令级并行性**:现代处理器还利用指令级并行性(ILP)来提高性能。这意味着处理器可以同时执行多个指令,通过流水线技术、超标量架构和乱序执行等技术来实现。


举例

多核处理器的例子在个人电脑(PC)、服务器以及移动设备中都非常普遍。以下是一些具体的例子:


1. **英特尔酷睿i7处理器**:
   英特尔酷睿i7系列处理器是高端的个人电脑和工作站处理器,它们通常具有4到8个核心,能够提供强大的多任务处理能力。例如,酷睿i7-10900K拥有10个核心和20个线程,可以同时处理多个任务,非常适合需要大量计算资源的应用,如视频编辑、3D渲染和复杂的科学计算。


2. **AMD锐龙Threadripper处理器**:
   AMD的锐龙Threadripper系列是为高级工作站和服务器设计的,拥有更多的核心和线程。例如,Threadripper 3970X拥有32个核心和64个线程,非常适合专业的视频编辑、CAD设计和大规模的数据分析。


3. **ARM Cortex-A系列**:
   ARM Cortex-A系列处理器广泛应用于移动设备,如智能手机和平板电脑。例如,高通骁龙865移动平台采用的Cortex-A77核心,提供了强大的性能和能效比,支持多任务处理和高级游戏。


4. **服务器处理器,如AMD EPYC和英特尔至强**:
   服务器处理器需要处理大量的并发请求,因此它们通常具有更多的核心。例如,AMD EPYC 7742拥有64个核心和128个线程,而英特尔的至强Platinum 8280则拥有28个核心。
在实际使用中,多核处理器的工作原理可以通过一个简单的例子来说明:
假设你正在使用一个拥有8个核心的处理器。当你同时运行多个应用程序时,操作系统会将这些应用程序的线程分配给不同的核心。如果有一个应用程序需要大量的计算资源,操作系统可能会将其线程分配到多个核心上,以便它们可以并行运行,从而加快处理速度。


例如,如果你在编辑一个视频的同时还在后台运行病毒扫描,操作系统可能会将视频编辑软件的线程分配给一些核心,而将病毒扫描程序的线程分配给其他核心。这样,两个任务可以同时进行,而不会因为争夺处理器资源而减慢速度。

什么是显示并行计算结构?

显示的并行计算结构(Explicitly Parallel Instruction Computing,EPIC)是一种计算机架构设计理念,它是由英特尔和惠普共同开发的,旨在提高指令级并行的效率和简化编程模型。EPIC是安腾(Itanium)处理器架构的基础,这种架构主要用于高端的服务器和工作站。


EPIC的主要特点包括:


1. **指令级并行**:EPIC架构通过让编译器来决定哪些指令可以并行执行,而不是像传统的超标量处理器那样由硬件来决定。这使得处理器的设计可以更加简单,同时也能够更有效地利用并行性。


2. **超长指令字(VLIW)**:EPIC架构采用了超长指令字技术,即每条指令包含多个操作,这些操作可以在不同的执行单元上并行执行。编译器负责将这些操作打包成一条指令,并确保它们可以同时执行。


3. **静态调度**:在EPIC架构中,指令的并行性和依赖关系是由编译器在编译时静态确定的,而不是在运行时由处理器动态决定。这减少了处理器内部的复杂性,但要求编译器能够有效地分析代码并生成高效的并行指令序列。


4. **推测执行**:EPIC架构还支持推测执行,即处理器会根据现有的信息猜测下一步可能执行的操作,并提前执行这些操作。如果猜测正确,可以显著提高性能;如果错误,则撤销错误的操作。
EPIC架构的目标是通过让编译器承担更多的并行性优化工作,来简化处理器的硬件设计,并提高并行计算的效率和性能。然而,EPIC架构的推广并不如预期,主要是因为它对编译器的要求非常高,而且传统的超标量架构在指令级并行方面取得了显著的进步,使得EPIC架构的优势并不明显。


随着时间的推移,EPIC架构的影响逐渐减弱,而英特尔和其他处理器制造商转而专注于其他提高并行性的技术,如多核处理器和异构计算。
 

什么是消息传递口?

消息传递接口(Message Passing Interface,MPI)是一种用于编写并行计算程序的编程模型和通信协议,它允许在不同的计算节点之间传递消息。MPI是一种标准化的通信接口,广泛应用于高性能计算领域,尤其是在集群计算环境中。


MPI的主要特点和功能包括:


1. **点对点通信**:MPI支持进程之间的直接通信,即一个进程可以发送消息到另一个进程,也可以接收来自其他进程的消息。


2. **集体通信**:MPI还提供了一组集体通信操作,如广播、聚集、分散和全交换,这些操作可以在一组进程之间同步数据。


3. **同步和栅栏**:MPI提供了同步机制,如栅栏(barrier),用于协调不同进程的执行,确保在某个点所有进程都到达后再继续执行。


4. **通信器**:MPI使用通信器(communicator)来定义一组可以相互通信的进程。通信器可以是全局的,包含所有进程,也可以是局部的,只包含一部分进程。


5. **数据类型**:MPI支持多种基本数据类型和用户定义的数据类型,允许程序员发送和接收不同类型的数据。


6. **错误处理**:MPI提供了错误处理机制,允许程序检测和处理通信错误。
MPI的实现通常包括一个库,这个库提供了MPI标准的接口。程序员可以使用这些接口在他们的并行程序中实现进程间的通信。MPI程序通常是用C、C++或Fortran编写的,这些语言都有对MPI的原生支持。


MPI的一个常见应用场景是在分布式内存系统上进行科学计算和工程模拟,其中每个计算节点都有自己的内存,节点之间通过网络互连。通过MPI,程序员可以将大的计算任务分解成小的任务,分配给不同的节点并行执行,并通过消息传递来管理和同步数据。



 

相关文章:

并行计算的一些知识点分享--并行系统,并行程序, 并发,并行,分布式

并行计算 核是个啥? 在并行计算中,“核”通常指的是处理器的核心(CPU核心)。每个核心都是一个独立的处理单元,能够执行计算任务。多核处理器指的是拥有多个这样核心的单一物理处理器,这样的设计可以允许多…...

设计模式:访问者模式

访问者模式(Visitor Pattern)是行为设计模式的一种,它使你能够在不修改对象结构的情况下,给对象结构中的每个元素添加新的功能。访问者模式将数据结构和作用于结构上的操作解耦,使得操作集合可相对自由地演化。 核心概…...

vivado Virtex-7 配置存储器器件

Virtex-7 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Virtex -7 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 , 并支持通过 Vivado 软件对其中所列非易失性存储器 进行擦除、…...

检测服务器环境,实现快速部署。适用于CRMEB_PRO/多店

运行效果如图: 最近被好多人问,本来运行的好好的,突然swoole就启动不了了。 本工具为爱发电,如果工具正好解决了您的需求。我会很开心 代码如下: """本脚本为爱发电by:网前雨刮器 """…...

Spring Security初探

url说明方法/login/oauth/authorize授权断点。无登录态时跳转到/authentication/require,有登录态时跳转到/loginorg.springframework.security.oauth2.provider.endpoint.AuthorizationEndpoint#authorize/authentication/require自己写的用于重定向到登录页面的ur…...

【Java代码审计】敏感信息泄漏篇

【Java代码审计】敏感信息泄漏篇 敏感信息泄露概述 敏感信息泄露概述 敏感信息是业务系统中对保密性要求较高的数据,通常包括系统敏感信息以及应用敏感信息 系统敏感信息指的是业务系统本身的基础环境信息,例如系统信息、中间件版本、代码信息&#xff…...

Windows Server 2012 R2 新增D盘分区

我们经常搭建windows版本的游戏时会要在D盘上操作,今天就介绍下新的服务器如何新增一个D盘。 在"开始"图标右边有个”服务器管理器“,单击点开 点开服务器管理器后,点击“工具”打开“计算机管理” 打开计算机管理后点击“存储”-…...

transformer与beter

transformer与beter 解码和编码器含义tokizer标记器和one-hot独热编码编码解码--语义较好的维度空间矩阵相乘--空间变换编码理解如何构造降维的嵌入矩阵--实现到达潜空间上面是基础,下面是transformer正文自注意力机制注意力分数--上下文修正系数为什么需要KQ两个矩…...

MySQL索引设计遵循一系列原则

高频查询与大数据量表:对查询频次较高且数据量较大的表建立索引。这是因为索引主要是为了加速查询过程,对于经常需要访问的表和数据,索引的效果最为显著。 选择合适索引字段:从WHERE子句中提取最佳候选列作为索引字段&#xff0c…...

windows窗口消息队列与消息过程处理函数

在Windows窗口应用程序中,消息队列和窗口过程函数是实现消息驱动机制的核心组件。 消息队列(Message Queue): 消息队列是用于存储窗口消息的缓冲区。当用户与应用程序交互时,系统会将生成的消息插入到消息队列中&…...

【Chisel】chisel中怎么处理类似verilog的可变位宽和parameter

在 Chisel 中处理可变位宽和参数的方式与 Verilog 有一些不同,因为 Chisel 是建立在 Scala 语言之上的。以下是如何在 Chisel 中处理这些概念的方法: 参数化(Parameters) 在 Chisel 中,参数化是通过在模块构造函数中定…...

[Easy] leetcode-225/232 栈和队列的相互实现

一、用栈实现队列 1、题目 仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 …...

Springboot+Vue项目-基于Java+MySQL的个人云盘管理系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…...

Leetcode 116:填充每一个节点的下一个右侧节点指针

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到…...

AI智能分析赋能EasyCVR视频汇聚平台,为安全生产监管提供保障

一、背景需求 为提升公共及生产安全监管,深入贯彻落实中央关于智慧城市、数字乡村的部署要求,视频设备融合管理已成为视频治理的必然趋势。针对当前部分地区在视频监控系统建设中存在的问题,如重点地区视频监控系统建设零散、视频监控数据孤…...

Java设计模式 _结构型模式_外观模式

一、外观模式 1、外观模式 外观模式(Facade Pattern)是一种结构型模式。主要特点为隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这有助于降低系统的复杂性,提高可维护性。当客户端与多个子系统之间存在大量…...

数据结构之----栈与队列

栈是限定仅在表尾进行插入和删除操作的线性表; 队列是只允许在一端进行插入操作,而另一端进行删除操作的线性表; 栈,允许插入和删除的一端称为栈顶,另一端称为栈底,特点后进先出。 插入操作称为进栈&#…...

如何在windows server下安装mysql5.7数据库,并使用Navicat Premium 15可视化工具新建数据库并读取数据库信息。

如何在windows server下安装mysql5.7数据库? MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/点击↑,然后选择对应版本和平台↓下载 将下载后的安装包放入固定目录(这里以D:…...

Calendar 366 II for Mac v2.15.5激活版:智能日历管理软件

在繁忙的工作和生活中,如何高效管理日程成为了许多人的难题。Calendar 366 II for Mac,作为一款全方位的日历管理软件,以其独特的功能和优秀的用户体验,成为您的日程好帮手。 Calendar 366 II for Mac支持多种视图模式&#xff0c…...

react引入阿里矢量库图标

react引入阿里矢量库图标 登录阿里矢量库,将项目所需的图标放一起 react项目中新建文件夹MyIcon.js 3. 在页面中引入,其中type为图标名称...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析

MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...

记一次spark在docker本地启动报错

1,背景 在docker中部署spark服务和调用spark服务的微服务,微服务之间通过fegin调用 2,问题,docker容器中服务器来后,注册中心都有,调用服务也正常,但是调用spark启动任务后报错,报错…...

Vue.js教学第二十一章:vue实战项目二,个人博客搭建

基于 Vue 的个人博客网站搭建 摘要: 随着前端技术的不断发展,Vue 作为一种轻量级、高效的前端框架,为个人博客网站的搭建提供了极大的便利。本文详细介绍了基于 Vue 搭建个人博客网站的全过程,包括项目背景、技术选型、项目架构设计、功能模块实现、性能优化与测试等方面。…...