当前位置: 首页 > news >正文

.la域名做的网站行业数据可以从哪里获取

.la域名做的网站,行业数据可以从哪里获取,中国最近的军事新闻大事,济南城市建设集团网站这里写目录标题 kernel launch 本章主要追踪一下kernel launch的流程#xff0c;会不断完善。 kernel launch 先抛出一个问题#xff0c;如果在一个循环中不断的发送kernel#xff08;kernel 内部while死循环#xff09;#xff0c;会是什么结果。 // kernel 函数 __glo… 这里写目录标题 kernel launch 本章主要追踪一下kernel launch的流程会不断完善。 kernel launch 先抛出一个问题如果在一个循环中不断的发送kernelkernel 内部while死循环会是什么结果。 // kernel 函数 __global__ void kernel(float *a, int n) {int id threadIdx.x blockIdx.x * blockDim.x;while(1) {//a[id] sqrt(a[id] 1);//这句注释掉对结果没有影响} }// 持续不断的把kernelfun送入某一个具体stream int main() { //1. 声明变量略//2. 设置cudaLimitDevRuntimePendingLaunchCount为128/1000等cudaDeviceSetLimit(cudaLimitDevRuntimePendingLaunchCount, 128)//3. 创建stream StreamCreate(stream);//4. launch kernel ctrlC 退出while (1) { //grid_dim, block_dim一次性占满所有资源或者1,1kernelgrid_dim, block_dim, 0, stream(buffer, size);} ... //5. 销毁资源sync();StreamDestroy(stream1); }上面345可以改为多线程一个线程一个stream. 其中还有一个简单的办法首先在stream中发射一个阻塞的hostfun然后发送空kernel也能计算到其大小参考部分有相关代码结果 持续的发送一个小kernel到1个stream中在1022次kernal launch 后host出现block。3个stream中现象和1个stream一样也是在1022次后被阻塞住。 详细参数如下(无论cudaLimitDevRuntimePendingLaunchCount设置为多少下面结果没有变化) indexgriddimblockdimstremresult1111从1022次开始阻塞2113从1022次开始阻塞317281281从1022次开始阻塞417281283从1022次开始阻塞617281288从1022次开始阻塞71/17281/12812约~743次开始阻塞81/17281/12816约~550次开始阻塞91/17281/12848约~224次开始阻塞101/17281/128128约~12-33次开始阻塞 cudaLimitDevRuntimePendingLaunchCount 的设置对结果没有影响上面表格中cudaLimitDevRuntimePendingLaunchCount无论设置为1282561000等最后结果都是一样的。因为它是CUDA Dynamic Parallelism 嵌套launch的一个控制参数后面会有证明。 2grid_dim, block_dim大小对结果也没有影响因为此刻限制issue item的数量的是cuda runtimes 中的stream queue实际上该queue 被map到另外一个叫做channel的对象上对于正在执行或者pending状态的item都会在queue中占用资源直到其完成。上面都说明限制在某个stream上launch kernel的瓶颈点是一个host端侧的资源所以排除cudaLimitDevRuntimePendingLaunchCount因为它是一个device侧的资源控制量。 3stream用户可以创建很多个但是stream queue最后都是被map到channel上channel的数量是有限的并且channel又分为很多类型,不同类型其capacity也不一样其中看实验结果其中CU_CHANNEL_COMPUTE类型的只有8个并且每个channel容纳1022个kernel func。 如果stream数量少于channel的数量那么每个stream对应一个channel如果stream的数量大于channeldistributes work evenly across all channels。 cuiLaunchstreamBeginPushWithFlagsstreamBeginPushWithDescstreamBeginPushOnChannelWithFlagschannelBeginPushInternalchannelBeginPushInternal_UnderLockchannelMustAdvance_UnderlockchannelMustAdvance_WaitForGPFIFOchannelCanAdvanceGPFIFO在这里判断pushbuf和fifo entrygpfifoHasPushbufferSpacegpfifoAdvanceGpuGetpushbufferHasSpace整个调用链是这样的 当向stream中下发kerneL的时候stream会找到一个channel该channel中有一个gpfifo的queue其内部有一个ring_buffer(4M)另外还维护着一个semaphore queue(Max1024)我们下发的每个kernel都会写道对应的ring_buffer中并且每个kernel对专门对应一个semaphore entry放在semaphore queue中当GPU开始执行kernel的时候ring_buffer中的kernel data是不能删除的只有当kernel执行完后GPU 发送一个semaphore signal给CPUCPU收到后会找对应的semaphore entry让其释放资源因为fifo有顺序要求所以如果前面的kernel没有执行完后面的kernel执行完那么依然会block.也就是说只要第一个kernel在执行即使后面全部是empty kernel 那么依然会block. (继续完善)
http://www.hkea.cn/news/14509867/

相关文章:

  • 如何架设php网站杭州企业推广网站
  • 北京专业建设网站价格网站建设咨询加工
  • 咸阳市城乡建设规划局网站免费的微网站哪个好
  • 网站建设公司问答营销案例电子商务网站建设及维护管理
  • 番禺做网站价格长春网站建设哪家好
  • 多用户商城网站建设二次开发临沂画册设计公司
  • 农林科技公司网站模板东莞seo建站咨询
  • 核工业华南建设集团网站HTML建网站
  • 邢台网站制作那家便宜应用商店app下载安装
  • 湖南建网站公司监察部门网站建设方案
  • 找人建设一个网站大概需要多少费用中国纪检监察报范耀庚
  • 网站建设 调研报告六安今天新闻最新消息
  • 分布式网站架构房屋建筑学课程设计图纸
  • 自己做的网站在百度怎么发布广告联盟有哪些平台
  • 咸宁网站设计公司专业做网站 郑州
  • WordPress批量定时发布文章成都企业网站优化服务
  • 微信商城网站如何做wordpress ip改成域名
  • 长春教做网站带维护的培训机构企业营销型网站建设价格
  • 信誉好的丹阳网站建设上海企业登记在线
  • 如手机网站源码wordpress云音乐插件下载
  • 在线网站做成app上海网站设计公司 静安
  • 亚马逊网站网址移动网站建设服务商
  • 大安网站建设做调查的网站知乎
  • 北京网站建设公司排名免费微网站系统源码
  • 俄语网站化妆培训学校网站开发
  • 网站开发公司招聘前端网课
  • 公司网站建设方案详细方案vue反向代理天地图地址
  • 苏州网站推广哪家好深圳网站建设手机网站建设
  • php 网站响应时间西安苗木行业网站建设价格
  • 网站建设公司简介wordpress多媒体大小