CUDA 关于 BLOCK数目与Thread数目设置
来源:互联网 发布:ubuntu传文件 编辑:程序博客网 时间:2024/06/04 00:37
转
GPU的计算核心是以一定数量的Streaming Processor(SP)组成的处理器阵列,NV称之为Texture Processing Clusters(TPC),每个TPC中又包含一定数量的Streaming Multi-Processor(SM),每个SM包含8个SP。SP的主要结构为一个ALU(逻辑运算单元),一个FPU(浮点运算单元)以及一个Register File(寄存器堆)。SM内包含有一个Instruction Unit、一个Constant Memory、一个Texture Memory,8192个Register、一个16KB的Share Memory、8个Stream Processor(SP)和两个Special Function Units(SFU)。(GeForce9300M GS只拥有1个SM) Thread是CUDA模型中最基本的运行单元,执行最基本的程序指令。Block是一组协作Thread,Block内部允许共享存储,每个Block最多包含512个Thread。Grid是一组Block,共享全局内存。Kernel是在GPU上执行的核心程序,每一个Grid对应一个Kernel任务。 在程序运行的时候,实际上每32个Thread组成一个Warp,每个 warp 块都包含连续的线程,递增线程 ID 。Warp是MP的基本调度单位,每次运行的时候,由于MP数量不同,所以一个Block内的所有Thread不一定全部同时运行,但是每个Warp内的所有Thread一定同时运行。因此,我们在定义Thread Size的时候应使其为Warp Size的整数倍,也就是Thread Size应为32的整数倍。理论上Thread越多,就越能弥补单个Thread读取数据的latency ,但是当Thread越多,每个Thread可用的寄存器也就越少,严重的时候甚至能造成Kernel无法启动。因此每个Block最少应包含64个Thread,一般选择128或者256,具体视MP数目而定。一个MP最多可以同时运行768个Thread,但每个MP最多包含8个Block,因此要保持100%利用率,Block数目与其Size有如下几种设定方式: Ø 2 blocks x 384 threads Ø 3 blocks x 256 threads Ø 4 blocks x 192 threads Ø 6 blocks x 128 threads Ø 8 blocks x 96 threads
- CUDA 关于 BLOCK数目与Thread数目设置
- cuda最佳线程数目设置
- CUDA 技巧与经验 关于block、thread
- CUDA Thread Block
- cuda 数组元素个数大于线程数目
- 控制Thread执行数目的尝试
- Thread数目会超过MAXDOP的限制?
- cuda的block thread wrap 同步与数据处理
- CPU核心数目 与 多线程
- nginx的worker数目进程设置问题
- Android listView 设置item显示的数目
- viewpager设置预加载页面数目
- 关于ORACLE Statement 对象的数目问题
- 关于数据库session连接数目问题
- 等值数目
- 等值数目
- 水池数目
- 等值数目
- java编程思想之一切都是对象
- 网易内推(网易金融)前端面试
- 项目中遇到的问题
- ios 基础知识点总结
- 更改Ubuntu默认Python版本方法
- CUDA 关于 BLOCK数目与Thread数目设置
- C# 能否获取一个对象所占内存的大小?
- Spring的简介
- Windows系统使用WMIC的获取硬盘ID的问题
- [LeetCode] 560. Subarray Sum Equals K
- Spring mail
- codeforces 837E
- java后台中的框架概念之间的关系
- 排序算法之快速排序