在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%左右的性能

最新文章

  1. ArcGIS Engine开发前基础知识(2)
  2. 计算机视觉之《OpenCV开发环境搭建》
  3. php gzcompress() 和gzuncompress()函数实现字符串压缩
  4. canvas 学习
  5. JVM调优总结 -Xms -Xmx -Xmn -Xss
  6. Linux常用的安全工具 转自https://yq.aliyun.com/articles/52540?spm=5176.100239.blogcont24250.8.CfBYE9
  7. Ext.Net MVC 配置(1)
  8. 常用聚类算法(一) DBSCAN算法
  9. 老生常谈的Javascript作用域问题
  10. input autocomplete 下拉提示+支持中文
  11. Sprintf()的思考和引出的相关问题
  12. SQL Server 2012 - 数据库的基础操作
  13. JavaScript 日期处理类库
  14. MySQL5.5编译安装以及Debug
  15. mongodb 数据备份与恢复
  16. sql语句——根据身份证号判断男女
  17. PHP类和函数注释大全
  18. file按钮美化成图片(纯HTML+CSS)
  19. P3371 【模板】单源最短路径(弱化版)(Dijkstra算法)
  20. MD5解密

热门文章

  1. Java进阶篇设计模式之十二 ---- 备忘录模式和状态模式
  2. 微信公众号开发C#系列-11、生成带参数二维码应用场景
  3. DSAPI DS密法
  4. 史上最详尽的NLP预处理模型汇总
  5. 自动获取windows或者linux系统IP
  6. devm_xxx机制【转】
  7. iOS 字典转模型Model
  8. LOJ #6052. 「雅礼集训 2017 Day11」DIV
  9. ASP.NET Core 身份验证(一)
  10. IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)