GPU编程和流式多处理器(二)
GPU编程和流式多处理器(二)
2. 整数支持
SM具有32位整数运算的完整补充。
• 加法运算符的可选否定加法
• 乘法与乘法加法
• 整数除法
• 逻辑运算
• 条件码操作
• to/from浮点转换
• 其它操作(例如,SIMD指令用于narrow整数,population人口计数,查找第一个零)
CUDA通过标准C运算符公开了大部分此功能。非标准运算(例如24位乘法)可以使用内联PTX汇编或内部函数进行访问。
2.1. 乘法
在Tesla级和Fermi级硬件上,乘法的实现方式有所不同。特斯拉实现了24位乘法器,而费米实现了32位乘法器。因此,SM 1.x硬件上的完整32位乘法需要四个指令。对于针对特斯拉级硬件的性能敏感代码,使用内在函数进行24位乘法是一项性能上的成功。表4显示了与乘法有关的内在函数。
表4乘法本征
2.2. 混合(位操作)
CUDA编译器实现了许多用于位操作的内在函数,如表5所示。在SM 2.x和更高版本的体系结构上,这些内在函数映射到单个指令。在Fermi之前的体系结构上,它们是有效的,可以编译成许多指令。如有疑问,请反汇编并查看微码!64位变体在固有名称__clzll(),ffsll(),popcll()和brevll()的后面附加了“ ll ”(“ long long”为两个ell)。
表5位操作本征
2.3. Funnel渠道转移(SM 3.5)
GK110添加了一条64位的“漏斗移位”指令,该指令将两个32位值连接在一起(最低有效和最高有效的一半指定为单独的32位输入,但是硬件在对齐的寄存器对上运行),将结果移位左移或右移64位值,然后返回最高有效(左移)或最低有效(右移)32位。
可以使用表6中给出的内在函数访问Funnel移位。这些内在函数在sm_35_intrinsics.h中作为嵌入式设备功能(使用嵌入式PTX汇编程序)实现。默认情况下,移位计数的最低有效5位被屏蔽;_lc和_RC内在移位值维持在范围0…32。
表6. Funnel平移本征
Funnel移位的应用程序包括以下内容。
• 多字移位操作
• 使用对齐的加载和存储在未对齐的缓冲区之间复制内存
• 旋转
要右移大于64位的数据大小,使用重复的__funnelshift_r()调用,从最低有效字到最高有效字进行操作。结果的最高有效字是使用运算符>>来计算的,该运算符会根据整数类型将零或符号位进行移位。若要将数据大小左移大于64位,使用重复的__funnelshift_l()调用,从最高有效字到最低有效字进行操作。结果的最低有效字是使用operator <<计算的。如果hi和lo参数相同,则Funnel移位会影响旋转操作。
GPU编程和流式多处理器(二)相关推荐
- GPU编程和流式多处理器
GPU编程和流式多处理器 流式多处理器(SM)是运行CUDA内核的GPU的一部分.本章重点介绍SM的指令集功能. 流式多处理器(SM)是运行我们的CUDA内核的GPU的一部分.每个SM包含以下内容. ...
- GPU编程和流式多处理器(三)
GPU编程和流式多处理器(三) 3. Floating-Point Support 快速的本机浮点硬件是GPU的存在理由,并且在许多方面,它们在浮点实现方面都等于或优于CPU.全速支持异常可以根据每条 ...
- GPU 编程入门到精通(二)之 运行第一个程序
博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GPU 编程,因此在这里特地学习一下 GPU 上面的编程.有志同道合的小伙伴 ...
- java学习笔记20(Lambda表达式、函数式编程、流式计算、练习)
文章目录 11.3 学习内容 Lambda表达式 Lambda标准格式 格式说明 省略规则 使用前提 函数式接口 预定义的函数式接口 工作内容 任务1 总结&明日计划 11.4 学习内容 流式 ...
- 流式多处理器(streamingMultiproeessor,SM)与流处理器(strcamingProcessor, sp)
SM是一种单指令多线程((single Instruction MultipleThread,SIMT)架构的处理器,类似单指令流多数据流(SIMD)的特点,含有指令发射单元,及若干个流处理器(str ...
- 编程范式:函数式编程防御式编程响应式编程契约式编程流式编程
不长的编码生涯,看到无数概念和词汇:面向对象编程.过程式编程.指令式编程.函数式编程.防御式编程.流式编程.响应式编程.契约式编程.进攻式编程.声明式编程--有种生无可恋的感觉. 本文试图加以汇总和整 ...
- 从GPU编程到SIMT核心
本文转自:从GPU编程到SIMT核心 - 知乎 (zhihu.com) 1.前言&本文重点 在 GPGPU 显得愈发重要的今天,仅凭 nVidia, AMD 提供的编程接口来了解 GPU 未免 ...
- Triton:openai开源GPU编程神器
Triton:openai开源GPU编程神器 序言 GPU编程的困难 编程模型 矩阵乘法 高级系统架构 编译器后端 序言 我们将发布Triton 1.0,这是一种开源的类似Python的编程语言,使没 ...
- GPU 编程入门到精通(五)之 GPU 程序优化进阶
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 博主由于工作当中的需要,开始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识,鉴于之前没有接触过 GP ...
最新文章
- 腾讯斥资3.17亿美元增持B站 持股增至12%
- mac环境下安装xampp
- 【JS基础】Array数组的创建与操作方法
- GDCM:处理JAI-JPEGLS错误的测试程序
- Maven引入依赖后自动下载并关联源码(Source)
- 乐尚网络:小程序商城零售行业10大新赋能
- 基于jsp+servlet完成的用户注册
- JFlow CCFlow工作流引擎北京培训邀请函
- mysql聚簇索引 和主键的区别_[MySQL] innoDB引擎的主键与聚簇索引
- 有什么工具或应用可以帮助找到适合搭配一种颜色的另一种颜色?
- 旺旺上显示已上传服务器,在服务器上排除问题的头五分钟 | 旺旺知识库
- java 时间格式化 星期_Java SimpleDateFormate时间格式化
- Python标准库:内置函数ascii(object)
- 线程安全之CAS机制详解(分析详细,通俗易懂)
- mysql5.6.22.0安装_win2008 R2 WEB环境配置之MYSQL 5.6.22安装版安装配置方法
- 多元统计分析基于r课后答案_应用多元统计分析课后答案
- Win10喇叭图标出现红叉,没有声音,并且提示“未安装任何音频输出设备“的解决办法
- 【多目标进化优化】MOEA 的分类
- 为了理想,因为爱情-开课第一天有感(鸡汤向)
- window中的cmd中设置别名(alias)及设置快捷键打开cmd
热门文章
- 2022-2028年中国氟橡胶产业竞争现状及发展前景分析报告
- Python关于%matplotlib inline
- python 直接if判断和is not None的区别
- Python List extend()方法
- DSP与CEVA芯片
- 单精度和半精度混合训练
- Binary XML file line #98: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lan
- 网站项目必备——12款白富美型 jQuery 图片轮播插件
- Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
- react 子组件获取变量属性值