博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CUDA 学习(八)、线程块调度
阅读量:4217 次
发布时间:2019-05-26

本文共 534 字,大约阅读时间需要 1 分钟。

一、调度

       如果我们有19个线程块和4个SM,将所有的线程都分配到一个SM上进行处理,显然不够合理。如果让前3个SM每个处理6个线程块,最后一个SM处理一个线程块,那么最后一个线程块就会很快处理完,然后SM会闲置。这样做设备的利用率会很低。

       如果我们用轮流交替的方式将线程块分配到SM 中,每个SM处理4个线程块(4*4=16 个线程块),还剩下三个线程单独用一个SM 再次处理,假设每个线程块执行所花费的时间是一样的,那么通过让每个SM能均衡处理线程块,而不是像之前那样有的SM负载过重,有的SM负载过轻,这样我们就可以减少17%的执行时间。

       而在实际的程序中,我们往往会用到成千上万个线程块。在线程块调度者为每个SM初始化分配了线程之后,就会处于闲置状态,直到有线程执行完毕。当线程执行完毕之后就会从SM中撤出,并释放其占用的资源。由于线程块都相同的大小,因此一个线程块从SM 中撤出后另一个在等待队列中的线程块就会被调度执行。所有线程块的执行顺序是随机、不确定的,因此,当我们在编写一个程序解决一个问题的时候,不要假定线程块的执行顺序,因为线程块根本就不会按照我们所想的顺序执行。

       我们在设计核函数时,最好保证线程块的数目是SM数目的整数倍,以此提高设备的利用率。

转载地址:http://jdami.baihongyu.com/

你可能感兴趣的文章
java保留两位小数4种方法
查看>>
笔记本怎么设置WIfi热点
查看>>
Android ADB 端口占用问题解决方案
查看>>
使用ScriptEngineManager解析json
查看>>
Redis介绍以及安装详解
查看>>
Linux下配置Mysql允许远程访问详解
查看>>
linux下使用yum安装mysql详解
查看>>
linux下使用yum安装svn详解
查看>>
linux下创建与删除用户详细步骤
查看>>
linux下使用Xshell查看tomcat实时日志中文乱码解决方案
查看>>
搜索引擎Solr环境搭建详解
查看>>
Solr配置中文分词器mmseg4j详解
查看>>
Solr配置中文分词器IK Analyzer详解
查看>>
在Solr4.10配置IKAnalyzer 同义词、扩展词库、停顿词详解
查看>>
css背景色渐变详解
查看>>
图片延时加载例子详解
查看>>
js获取url参数值的两种方式详解
查看>>
java中System.getProperty()方法详解
查看>>
MyEclipse设置默认注释的格式
查看>>
同一服务器部署多个tomcat时的端口号修改详情
查看>>