我确定之前有人遇到过这个问题,基本上我有一个2D优化网格NxM,其约束条件是n_i <= m_i,即我只想计算矩阵下三角形部分的对。 目前我天真地只在M个工作组的N个本地组中实现所有NxM组合(然后使用localGroupID和workGroupID来标识该对),然后如果约束无法保存计算则返回-inf。
但有没有更好的方法来设置线程并索引它们,所以我只需要生成(NXM)/ 2线程而不是完整的NxM。
非常感谢Sam
当然,这只是几何学。 任何直角三角形都可以划分为具有相同面积的矩形。 只需将其水平和垂直切成两半,然后将这些碎片重新组装成一个矩形。 在实现方面,使您的全局工作大小等于三角形的宽度,高度等于三角形高度的一半。 在内核中,如果x坐标大于宽度的一半,检查是否(x – half)> y,如果是,则检查x = width – x – 1和y = y + half_height。 沿着边界你会有一些线程分歧,但你不会让一半的工作项闲置。
以上就是c/c++开发分享OpenCL有效地分组下三角矩阵相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/523095.html