SIMT与SIMD的区别?
来源: SIMD指令和SIMT指令有什么区别?
SISD + 多核系统
在出现SIMD和SIMT之前,占主导地位的是SISD(Single instruction single data)。但很快人们发现,在一些逻辑简单但计算量大的场景下,这些计算可以并行完成。因此,直接想到的解决方案就是多块芯片并行计算,即多核系统,与此对应的编程模型是多线程编程。
SIMD
多核系统的产生使得编程变得轻松,只需解决多线程互斥、同步等一些小问题即可。但很快有人意识到,从硬件的角度看,这么做很不划算。我们只是为了并行计算,按理说只需要多块计算元件和寄存器就行了,而现在为了并行计算,甚至指令元件(如取指、译码和发射等)都有好几块,这不是浪费吗?于是,有聪明人解决了这个问题,使得一套指令部件能够带动很多套元算部件。这种硬件现在在指令集层面上体现为单条指令的操作数,从原来的几个变成了可以有很多个,即SIMD。
但是很快人们就发现了SIMD的两个痛点。第一个是高级语言不好支持,基本上都是靠在C语言里嵌入汇编来使用,这很痛苦,而且能够理解的人也不多。第二个是使用起来很不灵活,因为有时候我只需要在一部分位置进行计算,而在其他位置则不需要,这很难实现。于是,人们开始怀念多线程编程的轻松和快乐。
SIMT
之后,一家有野心的公司英伟达推出了GPU。从硬件层面看,GPU本质上与前面提到的SIMD相同,都是少量的指令部件带一大堆运算部件。但是英伟达希望能够解决SIMD的这两个痛点。首先,在指令集的设计上,指令仍然像SISD一样,几个操作数就是几元运算,只不过在执行时,调度器会给这条指令分配很多套计算元件和寄存器。这样做的第一个好处就是,这样的可执行代码可以通过一个类似高级语言多线程的编程模式编译而来,这个模式就是CUDA,从而解决了第一个痛点。在用户看来,上述的“一套运算部件和寄存器”就像一个线程一样,因此这种模式被称为SIMT。此外,英伟达还为这些指令提供了很多修饰符,比如一个Bit Mask可以指定哪些线程干活,哪些空转,这样SIMT就可以很好地支持分支语句了,从而解决了第二个痛点。
因此,总的来说,英伟达提出SIMT的初衷是希望硬件像SIMD一样高效,编程起来又像多核多线程一样轻松。
先写到这里,有人看再更新。
SIMT与SIMD的区别?相关推荐
- SIMT和SIMD之总结篇
一.SISD与SIMD 以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数:之后再一次访问内存,取得第二个操作数:随后才能进行求和运算.而在SIMD ...
- CUDA入门:硬件模型入门与性能优化
目录 硬件模型: 线程模型: 内存模型: SIMT架构: Warp(并行线程组): 基本概念: warp的执行方式: SIMT与SIMD的区别: Volta架构: 注意: 性能优化: 核心原则: 实现 ...
- 【科普向】从gtx480的落败到并行计算再到SIMD,MIMD,SIMT
在gf100(gtx480)发售前夕,也就是2010年左右,英伟达的gpu事业部总经理在接受采访曾毫不吝啬自己对gtx480的赞美,并将其称为是地球上最强的gpu.然而,gtx480虽然性能强悍,但论 ...
- SIMD<SIMT<SMT: NVIDIA GPU的并行机制
原文出处: SIMD < SIMT < SMT: parallelism in NVIDIA GPUs 目录 1.概述 1.1.SIMD 2.SIMD vs SIMT 2.1 单指令.多 ...
- SIMD、SIMD、SIMT、MISD、MIMD详解与比较
1.SISD SISD(Single Instruction Single Data stream)单指令流单数据流,计算机体系结构分类的一种. 按照计算机同时处于一个执行阶段的指令或数据的最大可能个 ...
- AI编译器与传统编译器的联系与区别
AI编译器与传统编译器的区别与联系 总结整理自知乎问题 针对神经网络的编译器和传统编译器的区别和联系是什么?. 文中提到的答主的知乎主页:@金雪锋.@杨军.@蓝色.@SunnyCase.@贝壳与知了. ...
- 从GPU编程到SIMT核心
本文转自:从GPU编程到SIMT核心 - 知乎 (zhihu.com) 1.前言&本文重点 在 GPGPU 显得愈发重要的今天,仅凭 nVidia, AMD 提供的编程接口来了解 GPU 未免 ...
- CUDA学习----sp, sm, thread, block, grid, warp概念
CUDA学习----sp, sm, thread, block, grid, warp概念 2017-01-11 17:14:28| 分类: HPC&CUDA优化 | 标签:cuda g ...
- AMD OpenCL 大学课程
AMD OpenCL大学课程是非常好的入门级OpenCL教程,通过看教程中的PPT,我们能够很快的了解OpenCL机制以及编程方法.下载地址:http://developer.amd.com/zone ...
最新文章
- CrackMe_001
- 有没有一段代码,让你觉得人类的智慧也可以璀璨无比?
- 洛谷P2158仪仗队(数学,观察找规律,欧拉函数)
- Dictionary转为Model实例
- binlog工具_MySQL5.6新增的参数binlog_row_image到底怎么设置-爱可生
- wpf page 界面渲染完成后执行自动操作_Vue项目骨架屏自动生成方案(dps)
- 前端程序员书桌上不可缺少的CSS书籍
- 如何获取filecoin_获得Filecoin币有哪些条件?
- java实现邮件发送, 抄送及多附件发送
- TCP/IP协议简介
- 华为hicar支持车型列表_汽车大观| 华为的“汽车梦”
- 广告法违禁词替换工具_广告法禁用词替代大全之第一弹
- dropbox与public
- 丘成桐:数理与人文(官方完整版PDF下载)(公号回复“丘成桐数学”下载PDF典型资料,欢迎转发、赞赏支持科普)
- 高中会考计算机都考啥,高中会考都有哪些科目
- Linux——万字总结用户与组相关知识!建议收藏!
- DecisionCurve决策曲线分析法
- python绘制三维矢量图_开源图形库 c语言-图形图像库 集合
- linux mate主题目录,七大顶级Linux桌面:Cinnamon和MATE_服务器_服务器产业-中关村在线...
- 什么是百度搜索引擎关键词快速排名上首页?