计算机体系结构期末复习3:GPU架构及控制流问题

目录

一、GPU设计思路

1.简化流水线、增加核数

2.单指令多线程(SIMT)

3.同时驻留大量线程

4.总思路:多线程+单指令多线程 

二、GPU的控制流问题

 1.什么是控制流问题

2.怎么应对分支分歧


一、GPU设计思路

1.简化流水线、增加核数

2.单指令多线程(SIMT)

多个核心共用一条指令。

用Nvidia的术语描述就是:

  • 多个threads,每个都有自己的寄存器
  • 一组共同发射的线程称为一个wrap(问:执行某代码段需要多少个warps?即执行该代码段需要发射多少次线程。循环次数/核心个数。)
  • 所有一块发射的threads执行同一条指令
  • 每个流水线称为一个SM(streaming multiprocessor)

3.同时驻留大量线程

在单核心上维护远多于执行单元的线程数,以实现细粒度的调度掩盖高延迟的操作。

 通俗理解多线程

采用细粒度多线程,流水线每周期读入不同线程的指令(即读取不同PC)。因为这些指令来自不同的线程,所以不存在数据相关,也不会因为数据相关而引入阻塞。

假设有八个线程。需要1个全局PC+8个线程PC,8组context(通用寄存器)。

4.总思路:多线程+单指令多线程 

  • 每个SM支持几十个wraps.(几十组PC,几十组互不相关的指令)。每周期取一条指令,来自一个warp.
  • 每个wrap上有32个线程.即一条指令可分担到32个线程进行处理。

二、GPU的控制流问题

 1.什么是控制流问题

1)当GPUwarp中的线程,分支到不同的执行路径时,会产生分支分歧。

ex.假设GPU的某个warp每组有64个线程,即GPU有64个核心。执行下面代码。

for(int i=0;i<1024;i++)
{if(i%2==0){a[i]++;}else{a[i]--;}
}

可以看到循环内分别有三条指令:A.i%2==0  B.a[i]++  C.a[i]--

对于第一条指令,warp中的64个线程都可以执行(i%2==0)的操作。

对于第二条指令,warp中的32个线程可以执行(a[i]++)的操作。由于每个周期只能执行一条指令,wrap中的剩下32个线程被迫停歇。第三条指令同理,也是只有一半的线程在执行指令。

问1:执行该代码段需要多少个wraps?

答1:一个warp就是GPU中一组发射的共同线程。1024/64=16.

问2:执行该代码段,GPU的利用率是多少?

答2:(1+0.5+0.5)/3=66.7%

2.怎么应对分支分歧

1)工作流程

每个warp用stack存储不跳转分支的PCs和掩码

遇到分支时

– 将当前掩码入栈

– 将不跳转分支的掩码和PC入栈

– 设置当前掩码为跳转分支的掩码

分支执行完时

– 将不跳转分支的掩码和PC出栈,并执行分支

不跳转分支执行完时

– 将分支之前的源掩码弹出

如果一个分支的掩码都是0,跳过该代码块

注:若掩码第i位为1,代表wrap中的第i个线程执行该指令;为0代表不执行。如果一个分支的掩码都是0,跳过该代码块。 

2)完整实例

ex1.假设每个wrap有四个线程,初始掩码为1111.执行下面的代码段:

//原掩码:1111
if (m[i] != 0) {    //指令m[i] != 0执行后:1100if (a[i] > b[i]) {    .//指令a[i] > b[i]执行后:1000y[i] = a[i] - b[i];    //指令C:} else {//指令a[i] > b[i]对应的不跳转分支:0100y[i] = b[i] - a[i];    }
} else {    //指令m[i] != 0对应的不跳转分支掩码:0011y[i] = 0;    
}

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

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

相关文章

[实用指南]如何将视频从iPhone传输到iPad

概括 将视频从 iPhone 传输到 iPad 时遇到问题&#xff1f;您可能知道一种方法&#xff0c;但不知道如何操作。此外&#xff0c;您要传输的视频越大&#xff0c;完成任务就越困难。那么如何将视频从 iPhone 传输到 iPad&#xff0c;特别是当您需要发送大视频文件时&#xff1f…

药片(药丸)和胶囊识别数据集,使用yolo,pasical voc xml, coco json格式标注,可识别药片和胶囊两种标签,2445张原始图片

药片(药丸)和胶囊识别数据集&#xff0c;使用yolo&#xff0c;pasical voc xml, coco json格式标注&#xff0c;可识别药片和胶囊两种标签&#xff0c;2445张原始图片 数据集分割 训练组80&#xff05; 1967图片 有效集13% 317图片 测试集7% 161图片 预处…

解决winform中comboBox下拉不够长的问题

默认情况下的combobox 可以看到comboBox不够长 导致信息显示不完成 解决方法 修改属性&#xff1a;DropDownWidth为308 修改前修改后

HTML——43.创建表格

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表格</title></head><body><!--table标签用来定义表格&#xff0c;border属性表示边框--><!--tr标签表示表格中的一行--><!--th标签表示表…

[硬件] DELL BIOS 相关注意事项

前言 前段时间重装系统. DELL BIOS属实资料少, 又难用. 这里给出相关的注意事项, 并且配上图片. BIOS相关注意事项 进入BIOS ESC/F2/ F12. 都可以进入BIOS, 当进U盘的入Win PE系统时, 使用F12 效果更佳. 关闭安全模式 切换到Boot Configuration选项,将Secure Boot选项off选…

ip归属地怎么判定?如何查看自己ip属地

在当今数字化时代&#xff0c;IP地址作为互联网通信的基础&#xff0c;扮演着至关重要的角色。而IP归属地的判定与查看&#xff0c;不仅关乎网络安全、隐私保护&#xff0c;还直接影响到社交平台的信任机制与信息传播的真实性。本文将深入探讨IP归属地的判定原理以及如何查看自…

大数据与机器学习(它们有何关系?)

想了解大数据和机器学习吗&#xff1f;我们将为你解释它们是什么、彼此之间有何关联&#xff0c;以及它们为何在数据密集型应用中如此重要。 大数据和机器学习是如何相互关联的&#xff1f; 大数据指的是传统存储方法无法处理的海量数据。机器学习则是计算机系统从观察结果和…

前端安全措施:接口签名、RSA加密、反调试、反反调试、CAPTCHA验证

文章目录 引言I 设置防爬虫功能使用robots.txt文件通过配置HTTP头部中的X-Robots-TagII 禁止打开开发者工具反复清空控制台无限debugger反调试检查是否按下了F12或其他调试快捷键禁用右键监听调试快捷键例子III 屏蔽粘贴/复制/剪切/选中IV 知识扩展: javascript内置命令调试分…

Mac M2 Pro安装MySQL 8.4.3

絮絮叨叨 MacBook Pro&#xff0c;芯片&#xff1a;Apple M2 Pro, macOS: Sonoma 14.0一直知道很多软件对Mac M1或M2的支持不好&#xff0c;但没想到在安装MySQL 8.x上也让我吃尽了苦头本文除了介绍如何安装MySQL 8.4.3外&#xff0c;还会记录笔者遇到的一些问题以及解决方法 …

基于Sentinel的服务保护方案的三种方式(请求限流、线程隔离、服务熔断)超详细讲解

目录 1、三种方式介绍 1.1请求限流 1.2 线程隔离方案 1.3 服务熔断 2、基于sentinel实现 2.1 启动sentinel 2.2 基于springboot整合sentinel 2.2.1请求限流 2.2.2请求隔离 2.2.2.1 OpenFeign整合Sentinel 2.2.3 服务熔断 2.2.3.1 编写降级代码 2.2.3.2 服务熔断 1、…

EasyExcel(环境搭建以及常用写入操作)

文章目录 EasyExcel环境搭建1.创建模块 easyexcel-demo2.引入依赖3.启动类创建 EasyExcel写1.最简单的写入1.模板2.方法3.结果 Write01.xlsx 2.指定字段不写入Excel1.模板2.方法3.结果 Write02.xlsx 3.指定字段写入excel1.模板2.方法3.结果 Write03.xlsx 4.按照index顺序写入ex…

python钉钉机器人

上代码 #coding:utf-8 import sys import time import hmac import hashlib import base64 import urllib.parse import requeststimestamp str(round(time.time() * 1000)) secret 你的secret secret_enc secret.encode(utf-8) string_to_sign {}\n{}.format(timestamp, …

2025:OpenAI的“七十二变”?

朋友们&#xff0c;准备好迎接AI的狂欢了吗&#xff1f;&#x1f680; 是不是跟我一样&#xff0c;每天醒来的第一件事就是看看AI领域又有什么新动向&#xff1f; 尤其是那个名字如雷贯耳的 OpenAI&#xff0c;简直就是AI界的弄潮儿&#xff0c;一举一动都牵动着我们这些“AI发…

Codigger集成Copilot:智能编程助手

在信息技术的快速发展中&#xff0c;编程效率和创新能力的提升成为了开发者们追求的目标。Codigger平台通过集成Copilot智能编程助手&#xff0c;为开发者提供了一个强大的工具&#xff0c;以增强其生产力、创新力和技能水平。本文将深入探讨Codigger与Copilot的集成如何为IT专…

IP寻址映射与网络通信互联

IP寻址映射 IP寻址映射能够让数据准确传输的重要部分。在网络之中&#xff0c;所有联网的设备都具有一个IP地址&#xff0c;而IP寻址映射就是负责将IP地址与设备位置或其他相关标识相联系起来&#xff0c;确保数据找到正确的路径传输&#xff0c;保障网络能够畅通。 动态主机配…

Java [后端] 开发日常记录(1)

目录 1、常用的注解 2、对字符串的处理 3、对JSON串的处理 -- The End -- 详细如下&#xff1a; 1、常用的注解 若返回的字段中有NUll&#xff0c;则不返回 JsonInclude(value JsonInclude.Include.NON_NULL) //在实体类中添加这个注解 JsonInclude(JsonInclude.Include.NON…

C高级:Day3

思维导图 总览 链接&#xff1a;C高级&#xff1a;思维导图-CSDN博客 用数组求出当前目录下以.sh结尾文件个数 用数组求出当前目录下所有文件个数 代码 结果 表明 直接通配任意名称文件&#xff0c;也会通配隐藏文件

Anaconda+PyTorch(CPU版)安装

1.Anaconda下载 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 如果已安装python&#xff0c;下载之前要彻底删除之前下载的python 2.Anaconda安装 3.添加环境变量 //根据实际安装路径进行更改 D:\Anaconda D:\Anaconda\Scripts D:\…

ROS2+OpenCV综合应用--10. AprilTag标签码追踪

1. 简介 apriltag标签码追踪是在apriltag标签码识别的基础上&#xff0c;增加了小车摄像头云台运动的功能&#xff0c;摄像头会保持标签码在视觉中间而运动&#xff0c;根据这一特性&#xff0c;从而实现标签码追踪功能。 2. 启动 2.1 程序启动前的准备 本次apriltag标签码使…

【MATLAB APP Designer】小波阈值去噪(第一期)

代码原理及流程 小波阈值去噪是一种信号处理方法&#xff0c;用于从信号中去除噪声。这种方法基于小波变换&#xff0c;它通过将信号分解到不同的尺度和频率上来实现。其基本原理可以分为以下几个步骤&#xff1a; &#xff08;1&#xff09;小波变换&#xff1a;首先对含噪信…