C_and_CPP 板


LINE

各位前辈好 小弟近来接触CUDA 在warp与core的观念上有问题 目前我已知所有的block会被自动分配到各个SM 在一个SM中,每个block中的thread以warp为单位执行 我的问题如下: 假设在一个block中最後一个warp快结束了 那麽其他的core会先执行下一个block中的warp 还是会等一个block中所有的warp执行完,才会执行下一个block 如果是前者,这样是不是就代表无法避免有core闲置 手机发文,排版方面可能欠佳,先谢谢各位前辈指导 ----- Sent from JPTT on my Sony D6653. -- __ __ _ \ \ / / __ _ _ __ | | ___ ___ \ V / / _` | | '_ \ | | / _ \ / _ \ | | | (_| | | | | | | |___ | __/ | __/ |_| \__,_| |_| |_| |_____| \___| \___| --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.117.247.115
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1446779320.A.B78.html
1F:→ walelile: 硬体那边没有block的概念 执行最小单位就是warp 11/06 12:34
2F:→ walelile: 至於他挑warp的schedule alg就有round-robin等 11/06 12:36
3F:→ freef1y3: 还是有吧 不然syncthreads就不知道要暂停那些warp了 11/06 12:37
4F:→ walelile: gpgpu-sim模拟器里面以前的版本有四种演算法可以选 11/06 12:37
5F:→ walelile: 也是 11/06 12:40
6F:→ freef1y3: 我觉得应该是一个block完全结束後下一个block才会递补 11/06 12:44
7F:→ freef1y3: 否则底层的资源管理会很麻烦 11/06 12:46
8F:→ freef1y3: 要保留尚未完全结束的block占用的资源(ex: shared mem) 11/06 12:49
9F:→ freef1y3: 同时又要空出位置给新的block进来之类 11/06 12:50
10F:→ walelile: nv会去算shared mem使用量来限制同时执行的warp数量 11/06 12:52
11F:→ freef1y3: 至於core闲置的问题应该有几个改善方法 11/06 12:52
12F:→ freef1y3: 1. 改用较小的block size 11/06 12:52
13F:→ walelile: 至少fermi那个世代有这行为 11/06 12:53
14F:→ freef1y3: 2. 增加每个block的计算量 11/06 12:53
15F:→ freef1y3: 印象中shared mem限制的应该是同时执行的block数量 11/06 12:54
16F:→ freef1y3: 当然block数量也会影响warp数量就是了 11/06 12:56
17F:→ freef1y3: 不过我的意思是若要允许一个block尚未执行完 11/06 12:58
18F:→ walelile: 他不可能是等一个block执行完才递补下一个 11/06 12:58
19F:→ walelile: 这样load memory的latency会很明显 11/06 12:59
20F:→ freef1y3: 下一个block就进来 这样占用的资源会更多 11/06 12:59
21F:→ freef1y3: 可能没讲清楚 我的意思不是同时只能有一个block跑 11/06 13:01
22F:→ freef1y3: 假设同时可以跑2个block好了,现在有2个block在跑 11/06 13:04
23F:→ freef1y3: 但其中一个block只剩一个warp还没结束 11/06 13:05
24F:→ freef1y3: 这种情况应该还是要等那个warp结束 下一个block才会进来 11/06 13:05
25F:→ walelile: 如果要更aggressive,硬体还是可以让其他的block先进 11/06 13:10
26F:→ freef1y3: 是有可能 但是还没结束的那个block占用的shared mem 11/06 13:11
27F:→ freef1y3: 总不能先释放掉吧? 11/06 13:11
28F:→ freef1y3: 所以就变成在两个block都占用shared mem的状况下 11/06 13:12
29F:→ freef1y3: 还要再空出一份shared mem让新block进来 11/06 13:12
30F:→ freef1y3: 除非你能以warp为单位来释放shared mem 11/06 13:13
31F:→ walelile: 运算开始跟结假如是mem读写,他放其他warp近来先读资料 11/06 13:13
32F:→ walelile: 他只要知道那块被占用的shared mem不会再被用就好了 11/06 13:14
33F:→ walelile: 还有机会提高记忆体频宽的使用效率 11/06 13:15
34F:→ freef1y3: 其实讨论可能性当然都很难说死没办法做到 11/06 13:27
35F:→ freef1y3: 但是原PO关心的应该是CUDA目前的实作是采用什麽方式 11/06 13:28
36F:→ freef1y3: 这应该写个小程式来实验就可以了..等我有空再来写吧 11/06 13:29
37F:推 johnjohnlin: 一个sm可以支援很多block在上面跑,不会有这个问题 11/06 16:01
38F:→ johnjohnlin: 至於几个,请google cuda occupancy calculator 11/06 16:02
39F:推 mike0227: 一个SM同一时间只会处理跑同一个warp内的指令 11/07 15:55
40F:→ mike0227: 所以不会出现原po问题内"部分core"闲置的状况 11/07 15:56
41F:→ mike0227: stall就是整个SM一起等 不会只有部分core在跑 11/07 15:58
也就是说在一个SM中,执行完一个block里的所有warp後 才会换执行新的一个block中的第一个warp ? ※ 编辑: Yan5566 (1.173.26.97), 11/07/2015 20:17:01 ※ 编辑: Yan5566 (1.173.26.97), 11/07/2015 20:22:52
42F:推 johnjohnlin: 可以从很多个block选warp来塞core 11/07 23:26
愿闻其详!! ※ 编辑: Yan5566 (1.173.26.97), 11/08/2015 02:17:08
43F:推 mike0227: 不一定要同一个block 只要资源够 多个blocks可以同时在 11/08 04:23
44F:→ mike0227: 同一个SM上 你会有更多机会盖掉global access latency 11/08 04:24
45F:→ mike0227: Occupancy calculator就是在算同时可有多少Blocks和 11/08 04:25
46F:→ mike0227: threads在同一个SM上 但是要注意 不一定越高越好 11/08 04:26
47F:推 johnjohnlin: 我一般写的时候,大致上以越高越好为准则 11/08 12:25
48F:→ johnjohnlin: 不过我得有一篇paper有提到楼上那件事,好像标题 11/08 12:26
49F:→ johnjohnlin: 开头是neiter more or less的,有兴趣可以找找看 11/08 12:27
50F:推 jun0325: 一个SM的warp scheduler可以schedule来自在不同block的 05/07 21:02
51F:→ jun0325: warp (SM里面的warp scheduler可能不只一个要看硬体) 05/07 21:03
52F:→ jun0325: 基本上warp scheduler的policy最简单也最好用的是GTO 05/07 21:04
53F:→ jun0325: (大部分情况下比RR好) 回归正题,一个block"的确"要等到 05/07 21:05
54F:→ jun0325: 最後一个warp执行完,才会release他所占的资源 05/07 21:05
55F:→ jun0325: 这也就是为什麽在写CUDA的时候,尽量要让每个thread的 05/07 21:06
56F:→ jun0325: 工作量都要相近,这样才能尽可能在同一个时间点做完 05/07 21:06
57F:→ jun0325: 早点release resource给下一个block使用 05/07 21:07
58F:→ jun0325: W大所说的可以先偷塞新的block的warp进去SM 05/07 21:08
59F:→ jun0325: 但这就增加了硬体对於SM管理资源的复杂度 05/07 21:09
60F:→ jun0325: 你要特别建一个表去记录那个快结束block中的warp 05/07 21:10
61F:→ jun0325: 分别占了SM上面的那些资源(Register, Shared Memory) 05/07 21:11
62F:→ jun0325: 因为原本SM对於资源的控管是以block granularity 05/07 21:14
63F:→ jun0325: 如果要达成W大所说的那个方式,就要对每个"warp"都要去 05/07 21:15
64F:→ jun0325: 记录他们所站的资源 05/07 21:15







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP