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

用百度云做网站网络营销的特点包括

用百度云做网站,网络营销的特点包括,哪些网站做任务好赚钱的,优秀金融网站设计这里写目录标题 kernel launch 本章主要追踪一下kernel launch的流程,会不断完善。 kernel launch 先抛出一个问题,如果在一个循环中不断的发送kernel(kernel 内部while死循环),会是什么结果。 // kernel 函数 __glo…

这里写目录标题

  • kernel launch

本章主要追踪一下kernel launch的流程,会不断完善。


kernel launch

先抛出一个问题,如果在一个循环中不断的发送kernel(kernel 内部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 ctrl+C 退出while (1) {
//grid_dim, block_dim一次性占满所有资源或者<<<1,1>>>kernel<<<grid_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设置为多少,下面结果没有变化)

indexgriddimblockdimstremresult
1111从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次开始阻塞
  1. cudaLimitDevRuntimePendingLaunchCount 的设置对结果没有影响,上面表格中,cudaLimitDevRuntimePendingLaunchCount无论设置为128,256,1000等,最后结果都是一样的。因为它是CUDA Dynamic Parallelism 嵌套launch的一个控制参数(后面会有证明)。

2)grid_dim, block_dim大小对结果也没有影响,因为此刻限制issue item的数量的是cuda runtimes 中的stream queue(实际上该queue 被map到另外一个叫做channel的对象上),对于正在执行或者pending状态的item,都会在queue中占用资源,直到其完成。上面都说明限制在某个stream上launch kernel的瓶颈点是一个host端侧的资源,所以排除cudaLimitDevRuntimePendingLaunchCount,因为它是一个device侧的资源控制量。

3)stream用户可以创建很多个,但是stream queue最后都是被map到channel上,channel的数量是有限的,并且channel又分为很多类型,不同类型其capacity也不一样,其中看实验结果,其中CU_CHANNEL_COMPUTE类型的只有8个,并且每个channel容纳1022个kernel func。

  1. 如果stream数量少于channel的数量,那么每个stream对应一个channel,如果stream的数量大于channel,distributes work evenly across all channels。
cuiLaunchstreamBeginPushWithFlagsstreamBeginPushWithDescstreamBeginPushOnChannelWithFlagschannelBeginPushInternalchannelBeginPushInternal_UnderLockchannelMustAdvance_UnderlockchannelMustAdvance_WaitForGPFIFOchannelCanAdvanceGPFIFO(在这里判断pushbuf和fifo entry)gpfifoHasPushbufferSpacegpfifoAdvanceGpuGetpushbufferHasSpace

整个调用链是这样的:
当向stream中下发kerneL的时候,stream会找到一个channel,该channel中有一个gpfifo的queue,其内部有一个ring_buffer(4M),另外还维护着一个semaphore queue(Max:1024),我们下发的每个kernel都会写道对应的ring_buffer中,并且每个kernel对专门对应一个semaphore entry放在semaphore queue中,当GPU开始执行kernel的时候,ring_buffer中的kernel data是不能删除的,只有当kernel执行完后,GPU 发送一个semaphore signal给CPU,CPU收到后会找对应的semaphore entry,让其释放资源,因为fifo有顺序要求,所以如果前面的kernel没有执行完,后面的kernel执行完,那么依然会block.也就是说只要第一个kernel在执行,即使后面全部是empty kernel 那么依然会block.

(继续完善)

http://www.khdw.cn/news/70337.html

相关文章:

  • 构建网站无障碍建设网络营销做的比较好的企业
  • 网站怎么做阿里妈妈转链在线培训网站
  • 十大靠谱的咨询公司网站优化包括
  • wordpress忘记用户名密码seo推广人员
  • 做关于网站的开题报告宁波seo资源
  • 网站空间上传工具百度搜索网站排名
  • 网站域名怎么做变更联盟营销平台
  • 沈阳网站推广的公司正规拉新推广平台有哪些
  • 北京做网站哪家专业台湾永久免费加密一
  • 上海建设局网站 招聘百度电话号码查询平台
  • 上海金融网站建设新闻热搜榜 今日热点
  • 网站放到iis如何做指向百度入驻
  • 全flash网站制作教程今日新闻简报
  • 企业网站免费推广软件互联网营销师培训课程
  • 做一个网站的预算百度搜索指数排行
  • 做网站公司的商标需要注册吗网站的推广方式
  • 网站地址结构游戏推广员如何推广引流
  • wordpress 安卓济南seo整站优化招商电话
  • 网站开发项目资金运用明细常见的网络营销推广方式有哪些
  • 什么软件做网站最好友链交换
  • 有没有免费做企业网站的百度推广运营这个工作好做吗
  • 团购网站 如何做推广济南seo优化
  • 网站建设推广百度一下了你就知道官网
  • 做网站要怎么找单优化用户体验
  • 网站运营需要什么条件深圳网站建设找哪家公司好
  • 做美食网站的图片文娱热搜榜
  • 长沙做营销型网站公司百度官方网站下载
  • 钦州网站建设排名刷移动端seo软件
  • 企业网站栏目设置说明快速排名工具免费
  • 合肥做网站的公司有哪些网站建设公司是怎么找客户