OpenCL洗牌函数shuffle
2024-10-10 17:06:35
在OpenCL中,经常会碰到会对向量的多个分量进行交叉运算的情况,比如
float4 d4; //input
float scale; //input
float2 mix_0 = mix((float2)(d4.wx), (float2)(d4.zy), scale);
这段代码对d4的wx和zy分量分别做mix运算,显然,由于运算对象并不是相邻,存在交叉的情况,效率可能并不会很好。假如,我们是对xy和zw做这样的操作,是不是效率会好一点呢?
对于OCL中需要交换向量中的分量位置的情况,自然想到shuffle
,然后把代码该为:
const uint4 ymask = (uint4)(3, 0, 2, 1);
float4 d4; //input
float scale; //input
y4_0 = shuffle(d4, ymask);
float2 mix_0 = mix((float2)(d4.xy), (float2)(d4.zw), scale);
经过测试,在我的Snapdragon710上,对我的整个应用,大概可以提升10%左右的性能
最新文章
- ArcGIS Engine开发前基础知识(2)
- 计算机视觉之《OpenCV开发环境搭建》
- php gzcompress() 和gzuncompress()函数实现字符串压缩
- canvas 学习
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- Linux常用的安全工具 转自https://yq.aliyun.com/articles/52540?spm=5176.100239.blogcont24250.8.CfBYE9
- Ext.Net MVC 配置(1)
- 常用聚类算法(一) DBSCAN算法
- 老生常谈的Javascript作用域问题
- input autocomplete 下拉提示+支持中文
- Sprintf()的思考和引出的相关问题
- SQL Server 2012 - 数据库的基础操作
- JavaScript 日期处理类库
- MySQL5.5编译安装以及Debug
- mongodb 数据备份与恢复
- sql语句——根据身份证号判断男女
- PHP类和函数注释大全
- file按钮美化成图片(纯HTML+CSS)
- P3371 【模板】单源最短路径(弱化版)(Dijkstra算法)
- MD5解密