Parallel patterns: convolution —— An introduction to stencil computation

news2025/1/23 13:04:48

在接下来的几章中,我们将讨论一组重要的并行计算模式。这些模式是许多并行应用中出现的广泛并行算法的基础。我们将从卷积开始,这是一种流行的阵列操作,以各种形式用于信号处理、数字记录、图像处理、视频处理和计算机视觉。在这些应用领域,卷积通常作为过滤器执行,将信号和像素转换为更理想的值。我们的图像模糊内核是一个过滤器,可以平滑信号值,以便人们可以看到大画面的趋势。另一个例子是,高斯滤波器是卷积滤波器,可用于锐化图像中对象的边界和边缘。

在高性能计算中,卷积模式通常被称为模板计算,这在求解微分方程的数值方法中广泛出现。它还构成了模拟模型中许多力计算算法的基础。卷积通常涉及每个数据元素上的大量算术运算。对于高清图像和视频等大型数据集,计算量可能非常大。每个输出数据元素都可以相互独立计算,这是并行计算的理想特征。另一方面,在具有一定挑战性的边界条件的输出数据元素之间有相当程度的输入数据共享。这使得卷积成为复杂的tile方法和输入数据暂存方法的重要用例。

7.1 BACKGROUND
卷积是一种数组操作,其中每个输出数据元素是相邻输入元素集合的加权和。加权和计算中使用的权重由输入掩码数组定义,通常称为卷积内核。由于CUDA内核函数和卷积内核之间存在不幸的名称冲突,我们将这些掩码数组称为卷积掩码,以避免混淆。相同的卷积掩码通常用于数组的所有元素。

在这里插入图片描述

在音频数字信号处理中,输入数据为ID形式,并表示采样信号量作为时间函数。图7.1显示了1D数据的卷积示例,其中5元卷积掩码数组M应用于7元输入数组N。我们将遵循C语言惯例,其中N和P元素从0到6索引,M元素从0到4索引。我们使用5元素掩码M的事实意味着每个P元素是由对应位置的N个元素的加权和生成的,左边是两个N个元素,右边是两个N个元素。

例如, P[2] 的值生成为 N[0](即 N[2-2])到N[4](即N[2+2])的加权和。在这个例子中,我们任意假设N个元素的值是1,2,3,…,7。M元素定义了权重,在本例中,其值为3、4、5、4、3。在将乘积加在一起之前,每个权重值乘以相应的N个元素值。如图7.1所示,P[2]的计算如下:
在这里插入图片描述
通常,掩码的大小往往是一个奇数,这使得加权和计算围绕正在计算的元素是对称的。也就是说,一个奇数的掩码元素定义了加权和,以包括被计算元素两侧相同数量的元素。在图7.1,掩码尺寸是5。每个输出元素计算为相应输入元素、左侧两个元素和右侧两个元素的加权和。
在这里插入图片描述

在图7.1中,P[i] 的计算可以看作是从 N[i-2] 开始的N子数组和M数组之间的内积。图7.2显示了P[3]的计算。计算由一个N个元素从图7.1.中的N个元素移动。也就是说,P[3] 的值是N[1](即N[3-2])通过N[5](即N[3 + 2])的加权和。
我们可以认为 P[3] 的计算如下:
在这里插入图片描述
由于卷积是根据相邻元素定义的,因此接近数组末端的输出元素自然会出现边界条件。如图7.3所示,当我们计算P[1]时,N[1]左边只有一个N个元素。也就是说,根据我们的卷积定义,没有足够的N个元素来计算P[1]。处理此类边界条件的典型方法是定义这些缺失的N个元素的默认值。对于大多数应用程序,默认值是0,这是我们在图7.3.中使用的。例如,在音频信号处理中,我们可以假设信号音量在录制开始前和结束后为0。在这种情况下,P[1]的计算如下:
在这里插入图片描述
此计算中不存在的N元素在图7.3.中显示为虚数框。应该清楚的是,P[0]的计算将涉及两个缺失的N个元素,在本例中,这两个元素都将被假定为0。我们把P[0]的计算作为练习。这些缺失的元素在文献中通常被称为“ghost cells”或“halo cells”。由于在并行计算中使用 tile,还有其他类型的 ghost cells。这些幽灵细胞可以对tile的有效性和/或效率产生重大影响。我们很快就会回到这一点上。
在这里插入图片描述
此外,并非所有应用程序都假设幽灵单元格包含0。例如,一些应用程序可能会假设幽灵单元格包含与最接近的有效数据元素相同的值。

对于图像处理和计算机视觉,输入数据通常是二维数组,像素在x-y空间中。因此,图像卷积是二维卷积,如图7.4.所示。在二维卷积中,掩码M是一个二维数组。它的x和y维度决定了加权和计算中要包含的邻居的范围。在图7.4中,为了简单起见,我们使用5×5的掩码。总的来说,掩码不一定是正方形数组。要生成输出元素,我们取中心位于输入数组N中相应位置的子数组。然后,我们在掩码数组的元素和图像数组的元素之间进行成对乘法。在我们的示例中,结果显示为图7.4.中N和P下方的5×5乘积数组。输出元素的值是乘积数组所有元素的总和。在这里插入图片描述
图7.4中的例子。显示了 P 2.2 P_{2.2} P2.2的计算。为了简洁,我们将使用Ny.x在寻址C数组时表示N[y][x]。由于N和P很可能是动态分配的数组,我们将在实际代码示例中使用线性化索引。N的子数组用于计算P2.2的值,在x或水平方向上从N0.0到N0.4,在y或垂直方向上从N0.0到N4.0。计算方法如下:
在这里插入图片描述
与1D卷积一样,2D卷积也必须处理边界条件。对于x和y维度的边界,有更复杂的边界条件:输出元素的计算可能涉及沿水平边界、垂直边界或两者的边界条件。图7.5说明了涉及两个边界的P元素的计算。来自图7.5,P1.0 的计算涉及N子数组中缺少两列和一个缺失的水平行。与1D卷积一样,不同的应用程序对这些缺失的N个元素假设不同的默认值。在我们的示例中,我们假设默认值为0。这些边界条件也会影响瓷砖的效率。我们很快就会回到这一点上。

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

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

相关文章

超简单的node爬虫小案例

同前端爬取参数一样,输入三个参数进行爬取 注意点也一样: 注意分页的字段需要在代码里面定制化修改,根据你爬取的接口,他的业务规则改代码中的字段。比如我这里总条数叫total,人家的不一定。返回的数据我这里是data.r…

存内计算技术打破常规算力局限性

目录 前言 关于存内计算 1、常规算力局限性 2、存内计算诞生记 3、存内计算核心 存内计算芯片研发历程及商业化 1、存内计算芯片研发历程 2、存内计算先驱出道 3、存内计算商业化落地 基于知存科技存内计算开发板ZT1的降噪验证 (一)任务目标以…

linux-部署Samba文件共享服务

linux-部署Samba文件共享服务 1、使用命令安装samba服务和samba客户端 dnf install samba samba-client # 或者 yum install samba samba-client2、配置文件的设置(可提前备份smb.conf) vim /etc/samba/smb.conf [global]workgroup SAMBAsecurity userpassdb backend tdbsam…

芯品荟|电梯外呼面板屏驱市场调研报告

PART ONE 产品简介 - Introduction - 1.电梯外呼面板介绍 电梯外呼面板,用于显示电梯当前位置、运行状态和楼层信息,以便乘客在等待电梯时了解电梯的运行情况。 电梯外呼面板,按显示屏的种类,分为3类,分别是LED屏、L…

Linux Mii management/mdio子系统分析之二 mdio总线-设备-驱动模型分析

Linux Mii management/mdio子系统分析之二 mdio总线-设备-驱动模型分析 (转载)原文链接:https://blog.csdn.net/u014044624/article/details/123303139 接着上篇文章继续分析mdio子系统,本章主要介绍mdio子系统的驱动模型&#xf…

3.3.2 CSMA/ CD协议

3.3.2 CSMA/ CD协议 CSMA/CD(Carrier Sense Multiple Access with Collision Detection):载波监听多点接入/碰撞检测。 检测到碰撞后: 适配器立即停止发送。(碰撞点后面的信号会一直叠加)等待一段随机时间…

【AI】 AIOTSummary

智能物联网(AIoT)是2018年兴起的概念,指系统通过各种信息传感器实时采集 各类信息(一般是在监控、互动、连接情境下的),在终端设备、边缘域或云中心 通过机器学习对数据进行智能化分析,包括定位、比对、预测、调度等。智能物联网(AIoT)是2018年兴起的概念,指系统通过…

你还没脱单,这些软件都得背锅

不管你是否认可情人节概念,是否会在这天与自己的那个ta相聚,每个成年人都会或多或少地思考自己的感情问题。 在互联网兴盛之前,人与人的交往大都依靠职场关系和熟人介绍来结识新的对象,但也有媒人、婚姻介绍所等专门的职业为适龄…

服务异步通讯——springcloud

服务异步通讯——springcloud 文章目录 服务异步通讯——springcloud初始MQRabbitMQ快速入门单机部署1.1.下载镜像安装MQ SpringAMQPwork Queue 工作队列Fanout Exchange广播模式DirectExchange路由模式TopicExchange话题模式 消息转换器 初始MQ RabbitMQ快速入门 官网https:/…

科研绘图(八)线性热图

线性热图(Linear Heat Map)是一种数据可视化技术,用于展示数值在一维线性空间上的分布情况。它通常用于展示沿着一条线(例如时间线或任何一维序列)的数据密度或强度变化。线性热图与传统的二维热图不同,后者…

Sectigo多域名通配符证书买一年送一个月

Sectigo随着互联网的发展也在飞速发展,旗下颁发了多种单域名SSL证书、多域名SSL证书和通配符SSL证书产品。Sectigo旗下的SSL证书产品丰富,为了满足一些域名多,子域名也比较多的企事业单位的需求,推出了一种多域名通配符SSL证书。今…

Linux内核架构和工作原理详解(一)

简介 作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内核启动init程序…

simulink之state

状态 状态描述了无功系统的运行模式。在Stateflow图表中,状态用于顺序设计,以创建状态转换图。 状态可以是激活状态,也可以是非激活状态。一个状态的激活或不激活可以根据事件和条件而变化。事件的发生通过使状态变为激活或非激活来驱动状态…

跨境电商多账号防关联攻略分享,盘点那些可以多账号登录的指纹浏览器

在跨境电商行业中,卖家常常需要在电商平台上同时运营多个店铺,但像亚马逊这样的平台都禁止同一个卖家在同一个站点上开设多家店铺,这一做法也常常会带来账号关联的风险,而关联的后果可能非常严重。那么拥有多个账号的跨境卖家应该…

多级缓存(nginx本地缓存、JVM进程缓存、redis缓存)

文章目录 整体示意图1.nginx缓存2.进程缓存Caffeine示例 3.Lua语法(为了在nginx中做编程)4.OpenResty5.封装向Tomcat发送的Http请求,获取数据6.Tomcat集群的负载均衡7.redis缓存8.查询Redis缓存9.Nginx本地缓存 整体示意图 1.nginx缓存 2.进程缓存 Caffeine示例 3.…

多级缓存架构(二)Caffeine进程缓存

文章目录 一、引入依赖二、实现进程缓存1. 配置Config类2. 修改controller 三、运行四、测试 通过本文章&#xff0c;可以完成多级缓存架构中的进程缓存。 一、引入依赖 在item-service中引入caffeine依赖 <dependency><groupId>com.github.ben-manes.caffeine…

企业内部知识库搭建方法,一般人都不知道

让我们想象一下&#xff0c;你是一家创业公司的创始人或者是已有企业的CEO&#xff0c;你是否遇到过这样的问题&#xff0c;公司的员工有时候互相之间的信息交流不够顺畅&#xff0c;不同部门之间的知识沟通不够清晰&#xff1f; 或者是新加入的员工刚开始工作几个月都处在一个…

网络部署实战具体学习内容总结

网络部署实战具体学习内容总结 &#x1f4bb;网络部署实战课程通常旨在教授学生如何规划、配置、维护和优化计算机网络。这些课程涵盖了广泛的主题&#xff0c;以确保学生具备网络部署和管理所需的技能。 网络部署实战课程具体学习内容&#x1f447; 1️⃣网络架构设计及网络原…

遥测终端机选择要点:功能、稳定性与成本的综合考量

在当今的智能化时代&#xff0c;遥测终端机作为数据采集、传输和处理的关键设备&#xff0c;广泛应用于水利、气象、环保等领域。然而&#xff0c;面对市场上琳琅满目的遥测终端机产品&#xff0c;如何选择一款性能优良、稳定性高且成本合理的设备成为摆在用户面前的一大难题。…

第一篇:node的背景及版本的检查

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 前言 Node.js 是一个基于 Chrome V8 JavaScript 引擎…