C_and_CPP 板


LINE

※ 引述《hardman1110 (笨小孩)》之铭言: : 推 LPH66: index 是 kernel 的编号, 不是阵列的编号 08/22 17:04 : → LPH66: kernel 做事的概念是「几号 kernel 去拿阵列的哪几格做事」 08/22 17:06 : → LPH66: 只是一般来说会因为方便让 kernel 以自己编号去取元素 08/22 17:06 : → LPH66: 当然其他状况也有可能是会成一个 kernel 抓很多格做事 08/22 17:07 : → LPH66: 这时去取哪几格时就要自己去算哪个 kernel 该取哪几格 08/22 17:07 : → LPH66: 另外你最後的问题, 去找 OpenCL 标准文件里面写得很清楚 08/22 17:09 : → LPH66: 或者我印象中有看过一个是把各种函数整理成的 cheat sheet 08/22 17:09 : → LPH66: (包含 host 端和 kernel 端的函数都有) 08/22 17:09 : → hardman1110: 我传进去的阵列型态大小都不一样,我该如何知道切了 08/22 17:11 : → hardman1110: 多少kernal(work item) 然後每个work item包含每个 08/22 17:12 : → hardman1110: 阵列的哪几格? 08/22 17:13 : 推 LPH66: 这是你在决定的事; 你要决定每个 work item 的工作量是多少 08/22 17:25 : → LPH66: 每个人要怎麽拿到他所要的工作量做事 08/22 17:25 : → hardman1110: 查到clEnqueueNDRangeKernel可控制要切多少workitem 08/22 17:26 : → LPH66: 有的时候甚至可以写说「几号以後不用做那边的事」之类的 08/22 17:26 : → hardman1110: 但每个workitem对应到阵列哪一段就不清楚原理了 08/22 17:26 : → LPH66: 然後再 enqueue 你要的数量的 workitem 去做事 08/22 17:26 : → LPH66: 例如如果我要一个 workitem 做一格, 那就是照编号取元素 08/22 17:27 : → LPH66: 如果我要一个 workitem 做两格, 那可以编号乘二再取两格 08/22 17:27 : → LPH66: 重点是你要搞懂你是怎麽分配工作下去的 08/22 17:28 : → LPH66: 一个简单的比方是你请了一堆工读生分担工作 08/22 17:29 : → LPH66: 那你总要告诉工读生「你的工作范围在哪里」 08/22 17:29 : → LPH66: 而做出一个简单易懂的分配方式就是你在问的"对应" 08/22 17:29 : → LPH66: 让每个工读生能只从自己分到的编号直接领到工作做 08/22 17:30 好像越推越长了所以回文总结 & 换个方式叙述一下 这里其实有一个借镜另外一个平行工作的 framework 的想法 在 OpenMP 里面, 常见的一个平行法是把工作包在一个 for 里 例如: #pramga omp parallel for for(int index = 0; index < 128; index++) { C[index] = A[index] + B[index]; } 以 OpenCL 的话来说, 这个 for 的内容就是一个 kernel 而 for 本身即是 enqueue 的动作, index 就会变成 global_id 等等的编号 同样的东西写成 OpenCL 可能会像是: // host ... clEnqueueNDRangeKernel(..., func, ..., {128}, ...); ... // kernel __kernel void func(__global int *A, __global int *B, __global int *C) { int index = get_global_id(0); C[index] = A[index] + B[index]; } 那当你有不等长的资料时 如同你在写一般的 for 一样有很多方法可以去分配每一圈所做的事 (例如我推文提的「几号之後/第几圈之後别做那边的事」) OpenCL 只是把这部份的回圈内容给抽出来成了 kernel 以平行化而已 把「每个 kernel」想成「for 的每次回圈」一些概念就很容易转化 我上面所提的「工作分配」等等的就只是在这底下的概念而已 -- ˊ_▂▃▄▂_ˋ. ◣          ▅▅ ▅▅ ι●╮   ./◤_▂▃▄▂_◥ \'▊   HARUHI █████ <■┘   ◤◤◥█◥◥█Δ   ISM    By-gamejye ¢|\   ▌▌ζ(▏●‵◥′●)Ψ ▏           █    ⊿Δ    /|▋ |\ ▎         ハルヒ主义      ▄█ ◥◥|◣ ‵′ ◢/'◢◢S.O.S 世界をいに盛り上げるための宫ハルヒの    --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.30.32
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1503394860.A.B47.html ※ 编辑: LPH66 (140.112.30.32), 08/22/2017 17:44:31
1F:推 hardman1110: 感谢 所以opencl只是帮你切出平行化的"kernal" 08/22 21:44
2F:→ hardman1110: 里面根本没绑定array index 只是因为平行特性可以拿 08/22 21:45
3F:→ hardman1110: work item的编号当作array index >> 是这样吗? 08/22 21:46
4F:推 VictorTom: 推:) 08/23 02:50
5F:→ LPH66: 是的, 这也是我第一句推文「index 是 kernel 的编号」之意 08/23 06:38
6F:推 ax61316: 推!讲解的很清楚 10/08 11:03







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灯, 水草

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

TOP